search for: neg101_sub_shifty

Displaying 1 result from an estimated 1 matches for "neg101_sub_shifty".

2017 Jul 01
8
[IR canonicalization] 6 ways to choose {-1,0,1}
...negone_zero_one(int x, int y) { int sel = x < y ? -1 : 0; if (x > y) return 1; return sel; } define i32 @negone_zero_one(i32, i32) { %3 = icmp sgt i32 %0, %1 %4 = icmp slt i32 %0, %1 %5 = sext i1 %4 to i32 %6 = select i1 %3, i32 1, i32 %5 ret i32 %6 } 5. Subs and shifts int neg101_sub_shifty(int x, int y) { int r = (x - y) >> 31; r += (unsigned)(y - x) >> 31; return r; } define i32 @neg101_sub_shifty(i32, i32) { %3 = sub nsw i32 %0, %1 %4 = ashr i32 %3, 31 %5 = sub nsw i32 %1, %0 %6 = lshr i32 %5, 31 %7 = add nsw i32 %4, %6 ret i32 %7 } 6. Zexts and sub...