[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