Displaying 3 results from an estimated 3 matches for "or_and_not".
2017 Jul 13
2
failing to optimize boolean ops on cmps
We have several optimizations in InstCombine for bitwise logic ops
(and/or/xor) that fail to handle compare patterns with the equivalent
bitwise logic. Example:
define i8 @or_and_not(i8 %a, i8 %b) {
%nota = xor i8 %a, -1
%and = and i8 %nota, %b
%res = or i8 %and, %a
ret i8 %res
}
define i1 @or_and_cmp_not(i32 %a, i32 %b, i1 %c) {
%cmp = icmp sgt i32 %a, %b
%cmp_inv = icmp sle i32 %a, %b ; this is 'not' of %cmp
%and = and i1 %c, %cmp_inv
%res = or i1 %cm...
2017 Jul 13
2
failing to optimize boolean ops on cmps
..., 2017 at 2:12 PM, Sanjay Patel <spatel at rotateright.com>
> wrote:
>
>> We have several optimizations in InstCombine for bitwise logic ops
>> (and/or/xor) that fail to handle compare patterns with the equivalent
>> bitwise logic. Example:
>>
>> define i8 @or_and_not(i8 %a, i8 %b) {
>> %nota = xor i8 %a, -1
>> %and = and i8 %nota, %b
>> %res = or i8 %and, %a
>> ret i8 %res
>> }
>>
>> define i1 @or_and_cmp_not(i32 %a, i32 %b, i1 %c) {
>> %cmp = icmp sgt i32 %a, %b
>> %cmp_inv = icmp sle i32 %a, %b...
2017 Jul 14
2
failing to optimize boolean ops on cmps
...t;mailto:spatel at rotateright.com>> wrote:
>
> We have several optimizations in InstCombine for bitwise
> logic ops (and/or/xor) that fail to handle compare
> patterns with the equivalent bitwise logic. Example:
>
> define i8 @or_and_not(i8 %a, i8 %b) {
> %nota = xor i8 %a, -1
> %and = and i8 %nota, %b
> %res = or i8 %and, %a
> ret i8 %res
> }
>
> define i1 @or_and_cmp_not(i32 %a, i32 %b, i1 %c) {
> %cmp = icmp sgt...