Displaying 7 results from an estimated 7 matches for "m_specific".
2016 Jul 20
2
Hitting assertion failure related to vectorization + instcombine
...rize -instcombine
1. Running pass 'Function Pass Manager' on module '<stdin>'.
2. Running pass 'Combine redundant instructions' on function '@strsave'
---
Looking at the code, the issue is with this line:
if (TrueVal == X && match(FalseVal, m_And(m_Specific(X), m_APInt(C))) &&
*Y == ~*C)
In this case Y is a 128-bit APInt, and so is the value that C is extracted from, but the m_APInt matcher has code that calls getSplatValue() if the matched expression has vector type. So C ends up as an 8-bit value, triggering the assertion failure on...
2017 Jul 13
2
failing to optimize boolean ops on cmps
...--------
Would adding to the existing InstCombine logic folds to handle this kind of
pattern be a welcome enhancement? I don't know if it's possible to make the
matchers handle this case without adding a new matcher. Eg:
// ((~A & B) | A) -> (A | B)
if (match(Op0, m_c_And(m_Not(m_Specific(Op1)), m_Value(A))))
return BinaryOperator::CreateOr(A, Op1);
Is there a way to make "m_Not(m_Specific())" match an inverted compare?
This optimization hole can manifest in strange ways:
https://godbolt.org/g/gjpAVo
We got it right for C++, but C managed to fall through the cracks!...
2016 Jul 20
2
Hitting assertion failure related to vectorization + instcombine
...r' on module '<stdin>'.
>> 2. Running pass 'Combine redundant instructions' on function '@strsave'
>>
>> ---
>>
>> Looking at the code, the issue is with this line:
>>
>> if (TrueVal == X && match(FalseVal, m_And(m_Specific(X), m_APInt(C))) &&
>> *Y == ~*C)
>>
>> In this case Y is a 128-bit APInt, and so is the value that C is
>> extracted from, but the m_APInt matcher has code that calls getSplatValue()
>> if the matched expression has vector type. So C ends up as an 8-bi...
2016 Jul 22
2
Hitting assertion failure related to vectorization + instcombine
...t; 2. Running pass 'Combine redundant instructions' on function '@strsave'
>>>>
>>>> ---
>>>>
>>>> Looking at the code, the issue is with this line:
>>>>
>>>> if (TrueVal == X && match(FalseVal, m_And(m_Specific(X), m_APInt(C)))
>>>> &&
>>>> *Y == ~*C)
>>>>
>>>> In this case Y is a 128-bit APInt, and so is the value that C is
>>>> extracted from, but the m_APInt matcher has code that calls getSplatValue()
>>>> if the ma...
2016 Jul 25
2
Hitting assertion failure related to vectorization + instcombine
...; >>>> '@strsave'
>> >>>>
>> >>>> ---
>> >>>>
>> >>>> Looking at the code, the issue is with this line:
>> >>>>
>> >>>> if (TrueVal == X && match(FalseVal, m_And(m_Specific(X),
>> >>>> m_APInt(C)))
>> >>>> &&
>> >>>> *Y == ~*C)
>> >>>>
>> >>>> In this case Y is a 128-bit APInt, and so is the value that C is
>> >>>> extracted from, but the m_APInt...
2016 Jul 27
0
Hitting assertion failure related to vectorization + instcombine
...@strsave'
>>> >>>>
>>> >>>> ---
>>> >>>>
>>> >>>> Looking at the code, the issue is with this line:
>>> >>>>
>>> >>>> if (TrueVal == X && match(FalseVal, m_And(m_Specific(X),
>>> >>>> m_APInt(C)))
>>> >>>> &&
>>> >>>> *Y == ~*C)
>>> >>>>
>>> >>>> In this case Y is a 128-bit APInt, and so is the value that C is
>>> >>>> extract...
2016 Jul 28
1
Hitting assertion failure related to vectorization + instcombine
...; >>>>
> >>> >>>> ---
> >>> >>>>
> >>> >>>> Looking at the code, the issue is with this line:
> >>> >>>>
> >>> >>>> if (TrueVal == X && match(FalseVal, m_And(m_Specific(X),
> >>> >>>> m_APInt(C)))
> >>> >>>> &&
> >>> >>>> *Y == ~*C)
> >>> >>>>
> >>> >>>> In this case Y is a 128-bit APInt, and so is the value that C is
> >>...