Skip to content

Commit c7039db

Browse files
committed
simplify the masked rhs computation
1 parent 001ae69 commit c7039db

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/primval.rs

+10-8
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,19 @@ pub fn binary_op<'tcx>(bin_op: mir::BinOp, left: PrimVal, right: PrimVal) -> Eva
8282
U64(_) => 6,
8383
_ => unreachable!(),
8484
};
85+
let mask = (1 << mask_bits) - 1;
8586
let r = match right {
86-
I8(i) => (i & ((1 << mask_bits) - 1)) as u32,
87-
I16(i) => (i & ((1 << mask_bits) - 1)) as u32,
88-
I32(i) => (i & ((1 << mask_bits) - 1)) as u32,
89-
I64(i) => (i & ((1 << mask_bits) - 1)) as u32,
90-
U8(i) => (i & ((1 << mask_bits) - 1)) as u32,
91-
U16(i) => (i & ((1 << mask_bits) - 1)) as u32,
92-
U32(i) => (i & ((1 << mask_bits) - 1)) as u32,
93-
U64(i) => (i & ((1 << mask_bits) - 1)) as u32,
87+
I8(i) => i as u8 & mask,
88+
I16(i) => i as u8 & mask,
89+
I32(i) => i as u8 & mask,
90+
I64(i) => i as u8 & mask,
91+
U8(i) => i as u8 & mask,
92+
U16(i) => i as u8 & mask,
93+
U32(i) => i as u8 & mask,
94+
U64(i) => i as u8 & mask,
9495
_ => panic!("bad MIR: bitshift rhs is not integral"),
9596
};
97+
let r = r as u32;
9698
macro_rules! shift {
9799
($v:ident, $l:ident, $r:ident) => ({
98100
match bin_op {

0 commit comments

Comments
 (0)