[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