Skip to content

Commit 49bfa1a

Browse files
committed
Fix simd_insert_dyn and simd_extract_dyn intrinsics with non-pointer sized indices
1 parent c8c8742 commit 49bfa1a

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

Diff for: src/value_and_place.rs

+2
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ impl<'tcx> CValue<'tcx> {
309309
match self.0 {
310310
CValueInner::ByVal(_) | CValueInner::ByValPair(_, _) => unreachable!(),
311311
CValueInner::ByRef(ptr, None) => {
312+
let lane_idx = clif_intcast(fx, lane_idx, fx.pointer_type, false);
312313
let field_offset = fx.bcx.ins().imul_imm(lane_idx, lane_layout.size.bytes() as i64);
313314
let field_ptr = ptr.offset_value(fx, field_offset);
314315
CValue::by_ref(field_ptr, lane_layout)
@@ -823,6 +824,7 @@ impl<'tcx> CPlace<'tcx> {
823824
CPlaceInner::Var(_, _) => unreachable!(),
824825
CPlaceInner::VarPair(_, _, _) => unreachable!(),
825826
CPlaceInner::Addr(ptr, None) => {
827+
let lane_idx = clif_intcast(fx, lane_idx, fx.pointer_type, false);
826828
let field_offset = fx
827829
.bcx
828830
.ins()

0 commit comments

Comments
 (0)