Displaying 3 results from an estimated 3 matches for "m_cmp".
Did you mean:
a_cmp
2017 Jul 13
2
failing to optimize boolean ops on cmps
...s handle this case without adding a new matcher. Eg:
>>
>>
> I would rather see this added to instsimplify than instcombine.
> If you do that, GVN/et all will get this already.
>
> This probably does require a special matcher though:
>
>
> We have:
> if (m_c_And(m_Cmp(Pred, m_Value(), m_Value()),
> m_Cmp(Pred, m_Value(), m_Value()))
>
> and you really want:
> if (m_c_And(m_Cmp(Pred, m_Value(), m_Value()),
> m_Cmp(m_Opposite(Pred), m_Value(), m_Value()))
>
>
>
>
-------------- next part --------------
An HTM...
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,
2017 Jul 14
2
failing to optimize boolean ops on cmps
...g a new matcher. Eg:
>
>
> I would rather see this added to instsimplify than instcombine.
> If you do that, GVN/et all will get this already.
>
> This probably does require a special matcher though:
>
>
> We have:
> if (m_c_And(m_Cmp(Pred, m_Value(), m_Value()),
> m_Cmp(Pred, m_Value(), m_Value()))
>
> and you really want:
> if (m_c_And(m_Cmp(Pred, m_Value(), m_Value()),
> m_Cmp(m_Opposite(Pred), m_Value(), m_Value()))
>
>
>
>
>
>
>
> ________...