|
@ -252,13 +252,14 @@ int conditional(int x, int y, int z) { |
|
|
int isLessOrEqual(int x, int y) { |
|
|
int isLessOrEqual(int x, int y) { |
|
|
int signx = x >> 31; |
|
|
int signx = x >> 31; |
|
|
int signy = y >> 31; |
|
|
int signy = y >> 31; |
|
|
int isnegpos = (signx ^ signy) & (~signx); // 0xFFFFF if signx = 1 sign y = 0 |
|
|
|
|
|
|
|
|
int isnegpos = (signx ^ signy) & (signx); // 0xFFFFF if signx = 1 sign y = 0 |
|
|
|
|
|
int isposneg = (signx ^ signy) & (signy); |
|
|
int sign1 = ~(1 << 31); // 01111111...111 |
|
|
int sign1 = ~(1 << 31); // 01111111...111 |
|
|
int absx = x & sign1; |
|
|
int absx = x & sign1; |
|
|
int absy = y & sign1; |
|
|
int absy = y & sign1; |
|
|
int diff = absy + (~absx) + 1; |
|
|
int diff = absy + (~absx) + 1; |
|
|
int signdiff = diff >> 31; |
|
|
int signdiff = diff >> 31; |
|
|
int res = !isnegpos & !signdiff; |
|
|
|
|
|
|
|
|
int res = !!isnegpos | (!isnegpos & !signdiff & !isposneg); |
|
|
return res; |
|
|
return res; |
|
|
} |
|
|
} |
|
|
//4 |
|
|
//4 |
|
|