Allow wrap-around when subtracting type size to immediate in try_fold_extended_move;
This commit is contained in:
@@ -508,7 +508,7 @@ fn try_fold_extended_move(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let imm_bits: i64 = imm.into();
|
let imm_bits: i64 = imm.into();
|
||||||
let ireduce_ty = match dest_ty.lane_bits() as i64 - imm_bits {
|
let ireduce_ty = match (dest_ty.lane_bits() as i64).wrapping_sub(imm_bits) {
|
||||||
8 => I8,
|
8 => I8,
|
||||||
16 => I16,
|
16 => I16,
|
||||||
32 => I32,
|
32 => I32,
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
test simple_preopt
|
||||||
|
target x86_64
|
||||||
|
|
||||||
|
function %wraparound(i64 vmctx) -> f32 system_v {
|
||||||
|
gv0 = vmctx
|
||||||
|
gv1 = iadd_imm.i64 gv0, 48
|
||||||
|
|
||||||
|
ebb35(v0: i64):
|
||||||
|
v88 = iconst.i64 0
|
||||||
|
v89 = iconst.i64 0x8000_0000_0000_0000
|
||||||
|
v90 = ishl_imm v88, 0x8000_0000_0000_0000
|
||||||
|
v91 = sshr v90, v89; check: sshr_imm v90, 0x8000_0000_0000_0000
|
||||||
|
trap user0
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user