Skip to content

Commit a528e37

Browse files
committed
Fix codegen of ctlz and cttz intrinsics
1 parent 8d2db1b commit a528e37

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/intrinsics.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,8 @@ pub fn codegen_intrinsic_call<'tcx>(
681681
let msb_lz = fx.bcx.ins().clz(msb);
682682
let msb_is_zero = fx.bcx.ins().icmp_imm(IntCC::Equal, msb, 0);
683683
let lsb_lz_plus_64 = fx.bcx.ins().iadd_imm(lsb_lz, 64);
684-
fx.bcx.ins().select(msb_is_zero, lsb_lz_plus_64, msb_lz)
684+
let res = fx.bcx.ins().select(msb_is_zero, lsb_lz_plus_64, msb_lz);
685+
fx.bcx.ins().uextend(types::I128, res)
685686
} else {
686687
fx.bcx.ins().clz(arg)
687688
};
@@ -697,7 +698,8 @@ pub fn codegen_intrinsic_call<'tcx>(
697698
let msb_tz = fx.bcx.ins().ctz(msb);
698699
let lsb_is_zero = fx.bcx.ins().icmp_imm(IntCC::Equal, lsb, 0);
699700
let msb_tz_plus_64 = fx.bcx.ins().iadd_imm(msb_tz, 64);
700-
fx.bcx.ins().select(lsb_is_zero, msb_tz_plus_64, lsb_tz)
701+
let res = fx.bcx.ins().select(lsb_is_zero, msb_tz_plus_64, lsb_tz);
702+
fx.bcx.ins().uextend(types::I128, res)
701703
} else {
702704
fx.bcx.ins().ctz(arg)
703705
};

0 commit comments

Comments
 (0)