Displaying 1 result from an estimated 1 matches for "negone_zero_one".
2017 Jul 01
8
[IR canonicalization] 6 ways to choose {-1,0,1}
...int negone_one_zero(int x, int y) {
if (x < y) return -1;
if (x > y) return 1;
return 0;
}
define i32 @negone_one_zero(i32, i32) {
%3 = icmp slt i32 %0, %1
%4 = icmp sgt i32 %0, %1
%5 = zext i1 %4 to i32
%6 = select i1 %3, i32 -1, i32 %5
ret i32 %6
}
4. Select and sext
int 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_shif...