[llvm] [RISCV] add more generic macrofusions (PR #151140)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 31 22:03:04 PDT 2025


================
@@ -91,3 +100,87 @@ def TuneLDADDFusion
                    CheckIsImmOperand<2>,
                    CheckImmOperand<2, 0>
                  ]>>;
+
+// Fuse add with lw:
+//   add rd, rs1, rs2
+//   lw rd, 0(rd)
+def TuneADDLWFusion
+  : SimpleFusion<"add-lw-fusion", "HasADDLWFusion", "Enable ADD+LW macrofusion",
+                 CheckOpcode<[ADD]>,
+                 CheckAll<[
+                   CheckOpcode<[LW]>,
+                   CheckIsImmOperand<2>,
+                   CheckImmOperand<2, 0>
+                 ]>>;
+
+// Fuse add followed by a load (lb, lh, lw, ld, lbu, lhu, lwu):
+//   add rd, rs1, rs2
+//   load rd, 0(rd)
----------------
topperc wrote:

Does the immediate need to be 0 or any immediate? I see TuneADDLWFusion checks for 0.

https://github.com/llvm/llvm-project/pull/151140


More information about the llvm-commits mailing list