[llvm] [PowerPC] Fix the register class for the instruction paddi. (PR #73995)
Stefan Pintilie via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 30 14:21:46 PST 2023
https://github.com/stefanp-ibm created https://github.com/llvm/llvm-project/pull/73995
The register class for the PADDI definition is incorrect as register zero for RA is treated as an actual zero.
>From 97e6dde8a4b20ed884d23beb3fda9edb6da89628 Mon Sep 17 00:00:00 2001
From: Stefan Pintilie <stefanp at ca.ibm.com>
Date: Thu, 30 Nov 2023 16:03:07 -0600
Subject: [PATCH] [PowerPC] Fix the register class for the instruction paddi.
The register class for the PADDI definition is incorrect as register zero for RA
is treated as an actual zero.
---
llvm/lib/Target/PowerPC/PPCInstrP10.td | 4 ++--
.../MC/PowerPC/ppc64-encoding-full-names.s | 24 +++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 llvm/test/MC/PowerPC/ppc64-encoding-full-names.s
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
More information about the llvm-commits
mailing list