Skip to content

Commit 4f5c325

Browse files
committed
return mapper empty??
1 parent 6a1288f commit 4f5c325

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ pub(crate) fn gen_define_handling<'ll>(
446446
let valid_begin_mappings = MappingFlags::TO | MappingFlags::LITERAL | MappingFlags::IMPLICIT;
447447
let transfer_to: Vec<u64> =
448448
transfer.iter().map(|m| m.intersection(valid_begin_mappings).bits()).collect();
449+
dbg!(&transfer);
449450
let transfer_from: Vec<u64> =
450451
transfer.iter().map(|m| m.intersection(MappingFlags::FROM).bits()).collect();
451452
let valid_kernel_mappings = MappingFlags::LITERAL | MappingFlags::IMPLICIT;
@@ -469,6 +470,7 @@ pub(crate) fn gen_define_handling<'ll>(
469470
add_priv_unnamed_arr(&cx, &format!(".offload_maptypes.{symbol}.begin"), &transfer_to);
470471
let memtransfer_kernel =
471472
add_priv_unnamed_arr(&cx, &format!(".offload_maptypes.{symbol}.kernel"), &transfer_kernel);
473+
dbg!(&transfer_from);
472474
let memtransfer_end =
473475
add_priv_unnamed_arr(&cx, &format!(".offload_maptypes.{symbol}.end"), &transfer_from);
474476

compiler/rustc_codegen_llvm/src/intrinsic.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use rustc_hir::def_id::LOCAL_CRATE;
1919
use rustc_hir::find_attr;
2020
use rustc_middle::mir::BinOp;
2121
use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, HasTypingEnv, LayoutOf};
22-
use rustc_middle::ty::offload_meta::OffloadMetadata;
22+
use rustc_middle::ty::offload_meta::{MappingFlags, OffloadMetadata};
2323
use rustc_middle::ty::{self, GenericArgsRef, Instance, SimdAlign, Ty, TyCtxt, TypingEnv};
2424
use rustc_middle::{bug, span_bug};
2525
use rustc_session::config::CrateType;
@@ -1943,7 +1943,9 @@ fn codegen_offload_preload_mut_drop<'ll, 'tcx>(
19431943

19441944
// Load field 0: `cpu_ptr: *mut T`.
19451945
let cpu_ptr_place = place.project_field(bx, 0);
1946+
dbg!(&cpu_ptr_place);
19461947
let cpu_ptr_operand = bx.load_operand(cpu_ptr_place);
1948+
dbg!(&cpu_ptr_operand);
19471949

19481950
let args: Vec<&'ll Value> = match cpu_ptr_operand.val {
19491951
OperandValue::Immediate(ptr) => vec![ptr],
@@ -1953,7 +1955,9 @@ fn codegen_offload_preload_mut_drop<'ll, 'tcx>(
19531955
_ => bug!("unexpected PreloadMut cpu_ptr operand"),
19541956
};
19551957

1956-
let meta = OffloadMetadata::from_ty(tcx, pointee_ty);
1958+
let mut meta = OffloadMetadata::from_ty(tcx, pointee_ty);
1959+
meta.mode |= MappingFlags::FROM;
1960+
dbg!(&meta);
19571961
let metadata: &[OffloadMetadata; 1] = &[meta];
19581962

19591963
let types: &Type = cx.layout_of(pointee_ty).llvm_type(cx);
@@ -1969,6 +1973,27 @@ fn codegen_offload_preload_mut_drop<'ll, 'tcx>(
19691973

19701974
let target_symbol = cx.generate_local_symbol_name("");
19711975
dbg!("done for now");
1976+
let offload_data = gen_define_handling(&cx, metadata, target_symbol, offload_globals);
1977+
let has_dynamic = metadata.iter().any(|m| !matches!(m.payload_size, OffloadSize::Static(_)));
1978+
let (ty, ty2, a1, a2, a4) = crate::builder::gpu_helper::preper_datatransfers(
1979+
bx,
1980+
&args,
1981+
&[types],
1982+
offload_data.offload_sizes,
1983+
metadata,
1984+
has_dynamic,
1985+
);
1986+
let geps = crate::builder::gpu_helper::get_geps(bx, ty, ty2, a1, a2, a4, has_dynamic);
1987+
1988+
crate::builder::gpu_helper::generate_mapper_call(
1989+
bx,
1990+
geps,
1991+
offload_data.memtransfer_end,
1992+
offload_globals.end_mapper,
1993+
offload_globals.mapper_fn_ty,
1994+
1,
1995+
offload_globals.ident_t_global,
1996+
);
19721997
}
19731998

19741999
// For each PreLoad *call*, we now use some of our previous declared globals to move data to the gpu.

0 commit comments

Comments
 (0)