search for: vxi1

Displaying 3 results from an estimated 3 matches for "vxi1".

Did you mean: v4i1
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 for scalars calls getSExtValue on a 1-bit APInt which will return -1 in an int64_t. ~Craig On Wed, Feb 19, 2020...
2020 Feb 19
2
i1 true ^= -1 in DAG matcher?
...eb 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 case the issue is that the immediate matcher for scalars >> calls getSExtValue on a 1-bit APInt which will return -1 i...
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