[PATCH] D113603: [x86] fold vector (X > -1) & Y to shift+andn
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 10 13:53:28 PST 2021
RKSimon added inline comments.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:45817
+ isAllOnesOrAllOnesSplat(Op1.getOperand(1)))
+ std::swap(Op0, Op1);
+
----------------
I know this shouldn't technically fall through, but its still a little scary to be commuting Op0/Op1 like this - maybe just duplicate fold?
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:45823
+ SDValue ShAmtC = DAG.getConstant(VT.getScalarSizeInBits() - 1, DL, VT);
+ SDValue Sra = DAG.getNode(ISD::SRA, DL, VT, Op0.getOperand(0), ShAmtC);
+ return DAG.getNode(X86ISD::ANDNP, DL, VT, Sra, Op1);
----------------
Use getTargetVShiftByConstNode ?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D113603/new/
https://reviews.llvm.org/D113603
More information about the llvm-commits
mailing list