[PATCH] D61189: [X86][SSE] Extract i1 elements from vXi1 bool vectors
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 30 07:41:39 PDT 2019
RKSimon marked an inline comment as done.
RKSimon added inline comments.
================
Comment at: lib/Target/X86/X86ISelLowering.cpp:34931
+ SDValue Res = DAG.getNode(ISD::AND, dl, BCVT, BC, Mask);
+ Res = DAG.getSetCC(dl, MVT::i1, Res, Mask, ISD::SETEQ);
+ DCI.CombineTo(Use, Res);
----------------
spatel wrote:
> Did framing this as:
> (x & Mask == Mask)
> rather than:
> (x & Mask != 0)
> make a difference in the output? If so, add a TODO comment about trying to avoid that problem.
Yes, using the (x & Mask != 0) causes the 2 cmoves in PR39665_c_ray to reappear - I'll raise a bug
================
Comment at: lib/Target/X86/X86ISelLowering.cpp:34931
+ SDValue Res = DAG.getNode(ISD::AND, dl, BCVT, BC, Mask);
+ Res = DAG.getSetCC(dl, MVT::i1, Res, Mask, ISD::SETEQ);
+ DCI.CombineTo(Use, Res);
----------------
RKSimon wrote:
> spatel wrote:
> > Did framing this as:
> > (x & Mask == Mask)
> > rather than:
> > (x & Mask != 0)
> > make a difference in the output? If so, add a TODO comment about trying to avoid that problem.
> Yes, using the (x & Mask != 0) causes the 2 cmoves in PR39665_c_ray to reappear - I'll raise a bug
https://bugs.llvm.org/show_bug.cgi?id=41672
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61189/new/
https://reviews.llvm.org/D61189
More information about the llvm-commits
mailing list