Displaying 3 results from an estimated 3 matches for "opc_checkimmallonesv".
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
The vnot PatFrag uses ImmAllOnesV which should put an OPC_CheckImmAllOnesV
in the matcher table. And the matcher table should call
ISD::isBuildVectorAllOnes. I believe we use vnot with vXi1 vectors on X86
and I haven't seen any issues.
The FIXME you pointed to seems related to a scalar patcher not a vector
pattern. In that case the issue is that the immediate matcher...
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
...expected a vector of 1, not -1. I would love to send
> in a better open source reproducer, will try to construct one.
>
> On Wed, Feb 19, 2020 at 11:30 AM Craig Topper <craig.topper at gmail.com>
> wrote:
>
>> The vnot PatFrag uses ImmAllOnesV which should put
>> an OPC_CheckImmAllOnesV in the matcher table. And the matcher table should
>> call ISD::isBuildVectorAllOnes. I believe we use vnot with vXi1 vectors on
>> X86 and I haven't seen any issues.
>>
>> The FIXME you pointed to seems related to a scalar patcher not a vector
>> pattern. In that...
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
Hello,
It looks like that in the DAG matcher, the DAG has a xor with '-1' for
checking a true value vector
for instance,
%cmp4.i = icmp ne <8 x i32> %6, %5
%7 = xor <8 x i1> %cmp4.i, <i1 true, i1 true, i1 true, i1 true, i1 true, i1
true, i1 true, i1 true>
[use of %7]
results in vector of '-1' in the DAG. This also seems the reason why
LLVM's vnot PatFrag