[llvm-dev] i1 true ^= -1 in DAG matcher?
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