[llvm] [X86] LowerSelect - generalize "select icmp(x,0), lhs, rhs" folding patterns. (PR #107272)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 4 12:55:43 PDT 2024
================
@@ -24278,6 +24295,13 @@ SDValue X86TargetLowering::LowerSELECT(SDValue Op, SelectionDAG &DAG) const {
isOneConstant(Cond.getOperand(1)))
Cond = Cond.getOperand(0);
+ // Attempt to fold "raw cond" cases by treating them as
+ // (select (and X, 1), Op1, Op2 --> (select (icmpeq (and X, 1), 0), Op2, Op1)
+ if (Cond.getOpcode() == ISD::AND && isOneConstant(Cond.getOperand(1)))
+ if (SDValue R = LowerSELECTWithCmpZero(Cond, Op2, Op1, X86::COND_E, DL, DAG,
+ Subtarget))
+ return R;
----------------
goldsteinn wrote:
I guess seperate PR would make the most sense
https://github.com/llvm/llvm-project/pull/107272
More information about the llvm-commits
mailing list