[llvm] [RISCV] Simplify the Zibi SFB patterns. NFC (PR #216449)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 14 20:00:02 PDT 2026


https://github.com/topperc created https://github.com/llvm/llvm-project/pull/216449

Use a PatLeaf to match the valid condition codes instead of using separate patterns for each.

>From b38950e687e60e28d8bd6f8d0443e834bb69c118 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Fri, 14 Aug 2026 19:57:58 -0700
Subject: [PATCH] [RISCV] Simplify the Zibi SFB patterns. NFC

Use a PatLeaf to match the valid condition codes instead of using
separate patterns for each.
---
 llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td | 23 ++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td b/llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td
index 409aeb4c86546..419256876f136 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoSFB.td
@@ -261,15 +261,18 @@ def PseudoCCLWU : SFBLoad;
 def PseudoCCLD : SFBLoad;
 }
 
+def ZibiCond : PatLeaf<(cond), [{
+  switch (N->get()) {
+  default:
+    return false;
+  case ISD::SETEQ:
+  case ISD::SETNE:
+    return true;
+  }
+}]>;
+
 // Zibi: select with immediate comparison folded into SFB.
 // imm5_zibi is defined in RISCVInstrInfoZibi.td (included before this file).
-class SelectZibiSFB<CondCode Cond>
-    : Pat<(riscv_selectcc (XLenVT GPR:$lhs), imm5_zibi:$cimm, Cond:$cc,
-                          (XLenVT GPR:$truev), GPR:$falsev),
-          (PseudoCCMOVGPR GPR:$falsev, GPR:$truev, (CCtoZibiBCC $cc), GPR:$lhs,
-                          imm5_zibi:$cimm)>;
-
-let Predicates = [HasStdExtZibi, HasShortForwardBranchImm] in {
-  def : SelectZibiSFB<SETEQ>;
-  def : SelectZibiSFB<SETNE>;
-} // Predicates = [HasStdExtZibi, HasShortForwardBranchImm]
+let Predicates = [HasStdExtZibi, HasShortForwardBranchImm] in
+def : Pat<(riscv_selectcc (XLenVT GPR:$lhs), imm5_zibi:$cimm, ZibiCond:$cc, (XLenVT GPR:$truev), GPR:$falsev),
+           (PseudoCCMOVGPR GPR:$falsev, GPR:$truev, (CCtoZibiBCC $cc), GPR:$lhs, imm5_zibi:$cimm)>;



More information about the llvm-commits mailing list