[llvm] [RISCV] Combine (and (select cond, x, -1), c) to (select cond,  x, (and x, c)) with Zicond. (PR #69563)
    Craig Topper via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Wed Oct 18 22:47:26 PDT 2023
    
        - Previous message: [llvm] [RISCV] Combine (and (select cond, x, -1), c) to (select cond,  x, (and x, c)) with Zicond. (PR #69563)
 
        - Next message: [llvm] [RISCV] Combine (and (select cond, x, -1), c) to (select cond,  x, (and x, c)) with Zicond. (PR #69563)
 
         -  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
 
       
    
  
================
@@ -11584,8 +11584,23 @@ static SDValue combineSelectAndUse(SDNode *N, SDValue Slct, SDValue OtherOp,
   if (VT.isVector())
     return SDValue();
 
-  if (!Subtarget.hasShortForwardBranchOpt() ||
-      (Slct.getOpcode() != ISD::SELECT &&
+  if (!Subtarget.hasShortForwardBranchOpt()) {
+    // (select cond, x, (and x, c)) has custom lowering with Zicond.
+    if ((!Subtarget.hasStdExtZicond() &&
+         !Subtarget.hasVendorXVentanaCondOps()) ||
+        N->getOpcode() != ISD::AND)
+      return SDValue();
+
+    // Maybe harmful when condition code has multip use.
----------------
topperc wrote:
multip->multiple
https://github.com/llvm/llvm-project/pull/69563
    
    
        
	- Previous message: [llvm] [RISCV] Combine (and (select cond, x, -1), c) to (select cond,  x, (and x, c)) with Zicond. (PR #69563)
 
	- Next message: [llvm] [RISCV] Combine (and (select cond, x, -1), c) to (select cond,  x, (and x, c)) with Zicond. (PR #69563)
 
         -  Messages sorted by: 
              [ date ]
              [ thread ]
              [ subject ]
              [ author ]
         
 
       
More information about the llvm-commits
mailing list