[llvm-dev] i1 true ^= -1 in DAG matcher? (original) (raw)

Hendrik Greving via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 19 11:01:13 PST 2020


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 doesn't match in this case. I've also found f rom third_party/llvm/llvm-project/llvm/lib/Target/AMDGPU/SIInstructions.td:

// FIXME: The generated DAG matcher seems to have strange behavior // with a 1-bit literal to match, so use a -1 for checking a true // 1-bit value.

Which seems to reflect the same observation. Is this a bug or a feature?

Thanks in advance for any explanation -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200219/3c2aeca5/attachment.html>



More information about the llvm-dev mailing list