[llvm] [PowerPC] Fix the register class for the instruction paddi. (PR #73995)

via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 30 14:22:19 PST 2023


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mc

Author: Stefan Pintilie (stefanp-ibm)

<details>
<summary>Changes</summary>

The register class for the PADDI definition is incorrect as register zero for RA is treated as an actual zero.

---
Full diff: https://github.com/llvm/llvm-project/pull/73995.diff


2 Files Affected:

- (modified) llvm/lib/Target/PowerPC/PPCInstrP10.td (+2-2) 
- (added) llvm/test/MC/PowerPC/ppc64-encoding-full-names.s (+24) 


``````````diff
diff --git a/llvm/lib/Target/PowerPC/PPCInstrP10.td b/llvm/lib/Target/PowerPC/PPCInstrP10.td
index a5429b38dfbe2d6..f72a52d5b26f6b3 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrP10.td
+++ b/llvm/lib/Target/PowerPC/PPCInstrP10.td
@@ -615,7 +615,7 @@ def RCCp {
 let Predicates = [PrefixInstrs] in {
   let Interpretation64Bit = 1, isCodeGenOnly = 1 in {
     defm PADDI8 :
-      MLS_DForm_R_SI34_RTA5_p<14, (outs g8rc:$RT), (ins g8rc:$RA, s34imm:$SI),
+      MLS_DForm_R_SI34_RTA5_p<14, (outs g8rc:$RT), (ins g8rc_nox0:$RA, s34imm:$SI),
                               (ins immZero:$RA, s34imm_pcrel:$SI),
                               "paddi $RT, $RA, $SI", IIC_LdStLFD>;
     let isReMaterializable = 1, isAsCheapAsAMove = 1, isMoveImm = 1 in {
@@ -625,7 +625,7 @@ let Predicates = [PrefixInstrs] in {
     }
   }
   defm PADDI :
-    MLS_DForm_R_SI34_RTA5_p<14, (outs gprc:$RT), (ins gprc:$RA, s34imm:$SI),
+    MLS_DForm_R_SI34_RTA5_p<14, (outs gprc:$RT), (ins gprc_nor0:$RA, s34imm:$SI),
                             (ins immZero:$RA, s34imm_pcrel:$SI),
                             "paddi $RT, $RA, $SI", IIC_LdStLFD>;
   let isReMaterializable = 1, isAsCheapAsAMove = 1, isMoveImm = 1 in {
diff --git a/llvm/test/MC/PowerPC/ppc64-encoding-full-names.s b/llvm/test/MC/PowerPC/ppc64-encoding-full-names.s
new file mode 100644
index 000000000000000..63e05169ad7396c
--- /dev/null
+++ b/llvm/test/MC/PowerPC/ppc64-encoding-full-names.s
@@ -0,0 +1,24 @@
+# RUN: llvm-mc -triple powerpc64-unknown-linux-gnu --show-encoding -ppc-asm-full-reg-names %s | \
+# RUN:   FileCheck -check-prefix=CHECK-BE %s
+# RUN: llvm-mc -triple powerpc64le-unknown-linux-gnu --show-encoding -ppc-asm-full-reg-names %s | \
+# RUN:   FileCheck -check-prefix=CHECK-LE %s
+
+# CHECK-BE: addi r1, r2, 700                   # encoding: [0x38,0x22,0x02,0xbc]
+# CHECK-LE: addi r1, r2, 700                   # encoding: [0xbc,0x02,0x22,0x38]
+            addi 1, 2, 700
+
+# CHECK-BE: li r1, 700                         # encoding: [0x38,0x20,0x02,0xbc]
+# CHECK-LE: li r1, 700                         # encoding: [0xbc,0x02,0x20,0x38]
+            addi 1, 0, 700
+
+# CHECK-BE: paddi r1, r2, 6400000, 0           # encoding: [0x06,0x00,0x00,0x61,
+# CHECK-BE-SAME:                                            0x38,0x22,0xa8,0x00]
+# CHECK-LE: paddi r1, r2, 6400000, 0           # encoding: [0x61,0x00,0x00,0x06,
+# CHECK-LE-SAME:                                            0x00,0xa8,0x22,0x38]
+            paddi 1, 2, 6400000, 0
+
+# CHECK-BE: paddi r1, 0, 6400000, 0            # encoding: [0x06,0x00,0x00,0x61,
+# CHECK-BE-SAME:                                            0x38,0x20,0xa8,0x00]
+# CHECK-LE: paddi r1, 0, 6400000, 0            # encoding: [0x61,0x00,0x00,0x06,
+# CHECK-LE-SAME:                                            0x00,0xa8,0x20,0x38]
+            paddi 1, 0, 6400000, 0

``````````

</details>


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


More information about the llvm-commits mailing list