[llvm] de5a7f1 - [RISCV] Prefer LUI over PLUI.H on RV32. (#192340)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 15 19:46:24 PDT 2026
Author: Craig Topper
Date: 2026-04-15T19:46:19-07:00
New Revision: de5a7f1827700f008dd3a60e05d4a1df78731ba7
URL: https://github.com/llvm/llvm-project/commit/de5a7f1827700f008dd3a60e05d4a1df78731ba7
DIFF: https://github.com/llvm/llvm-project/commit/de5a7f1827700f008dd3a60e05d4a1df78731ba7.diff
LOG: [RISCV] Prefer LUI over PLUI.H on RV32. (#192340)
I don't think any of the cases PLUI.H can handle would be eligible for
C.LUI, but still figured it was best to use base ISA instructions when
possible.
Added:
Modified:
llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
llvm/test/MC/RISCV/rv32p-aliases-valid.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
index 476db91e95a4f..f3443469f6364 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMatInt.cpp
@@ -79,7 +79,9 @@ static void generateInstSeqImpl(int64_t Val, const MCSubtargetInfo &STI,
}
}
- if (STI.hasFeature(RISCV::FeatureStdExtP) && !isInt<12>(Val)) {
+ // Try PLI/PLUI if available, but prefer LI/LUI.
+ if (STI.hasFeature(RISCV::FeatureStdExtP) && !isInt<12>(Val) &&
+ !isShiftedInt<20, 12>(Val)) {
unsigned Width = 64;
int32_t Bit31To0 = Val;
diff --git a/llvm/test/MC/RISCV/rv32p-aliases-valid.s b/llvm/test/MC/RISCV/rv32p-aliases-valid.s
index ef81ec2784aee..c8e517caacc54 100644
--- a/llvm/test/MC/RISCV/rv32p-aliases-valid.s
+++ b/llvm/test/MC/RISCV/rv32p-aliases-valid.s
@@ -279,6 +279,10 @@ li s10, 0x11111111
# CHECK-S-OBJ: pli.h s11, 1
li s11, 0x00010001
-# CHECK-S-OBJ-NOALIAS: plui.h t3, -512
-# CHECK-S-OBJ: plui.h t3, -512
-li t3, 0x80008000
+# CHECK-S-OBJ-NOALIAS: plui.h t3, -508
+# CHECK-S-OBJ: plui.h t3, -508
+li t3, 0x81008100
+
+# CHECK-S-OBJ-NOALIAS: lui t4, 524296
+# CHECK-S-OBJ: lui t4, 524296
+li t4, 0x80008000
More information about the llvm-commits
mailing list