[llvm] [RISCV] Correct the predicate for the ror and rorw with immediate InstAliases. (PR #157921)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 10 11:24:21 PDT 2025
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/157921
None
>From a66cf1037e30f8882bcb3d22b3e81cd32f801cc9 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Wed, 10 Sep 2025 11:19:18 -0700
Subject: [PATCH] [RISCV] Correct the predicate for the ror and rorw with
immediate InstAliases.
---
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td | 8 +++----
llvm/test/MC/RISCV/rv32zbkb-aliases-valid.s | 20 +++++++++++++++++
llvm/test/MC/RISCV/rv64zbkb-aliases-valid.s | 24 +++++++++++++++++++++
3 files changed, 48 insertions(+), 4 deletions(-)
create mode 100644 llvm/test/MC/RISCV/rv32zbkb-aliases-valid.s
create mode 100644 llvm/test/MC/RISCV/rv64zbkb-aliases-valid.s
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
index 2abd3e613a037..ca930b822317f 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
@@ -459,15 +459,15 @@ let Predicates = [HasStdExtZba, IsRV64] in {
def : InstAlias<"zext.w $rd, $rs", (ADD_UW GPR:$rd, GPR:$rs, X0)>;
} // Predicates = [HasStdExtZba, IsRV64]
-let Predicates = [HasStdExtZbb] in {
+let Predicates = [HasStdExtZbbOrZbkb] in {
def : InstAlias<"ror $rd, $rs1, $shamt",
(RORI GPR:$rd, GPR:$rs1, uimmlog2xlen:$shamt), 0>;
-} // Predicates = [HasStdExtZbb]
+} // Predicates = [HasStdExtZbbOrZbkb]
-let Predicates = [HasStdExtZbb, IsRV64] in {
+let Predicates = [HasStdExtZbbOrZbkb, IsRV64] in {
def : InstAlias<"rorw $rd, $rs1, $shamt",
(RORIW GPR:$rd, GPR:$rs1, uimm5:$shamt), 0>;
-} // Predicates = [HasStdExtZbb, IsRV64]
+} // Predicates = [HasStdExtZbbOrZbkb, IsRV64]
let Predicates = [HasStdExtZbs] in {
def : InstAlias<"bset $rd, $rs1, $shamt",
diff --git a/llvm/test/MC/RISCV/rv32zbkb-aliases-valid.s b/llvm/test/MC/RISCV/rv32zbkb-aliases-valid.s
new file mode 100644
index 0000000000000..c7debf2d04e3d
--- /dev/null
+++ b/llvm/test/MC/RISCV/rv32zbkb-aliases-valid.s
@@ -0,0 +1,20 @@
+# RUN: llvm-mc %s -triple=riscv32 -mattr=+zbkb -M no-aliases \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
+# RUN: llvm-mc %s -triple=riscv32 -mattr=+zbkb \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s
+# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+zbkb < %s \
+# RUN: | llvm-objdump --no-print-imm-hex -d -r -M no-aliases --mattr=+zbkb - \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
+# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+zbkb < %s \
+# RUN: | llvm-objdump --no-print-imm-hex -d -r --mattr=+zbkb - \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s
+
+# The following check prefixes are used in this test:
+# CHECK-S-OBJ Match both the .s and objdumped object output with
+# aliases enabled
+# CHECK-S-OBJ-NOALIAS Match both the .s and objdumped object output with
+# aliases disabled
+
+# CHECK-S-OBJ-NOALIAS: rori t0, t1, 8
+# CHECK-S-OBJ: rori t0, t1, 8
+ror x5, x6, 8
diff --git a/llvm/test/MC/RISCV/rv64zbkb-aliases-valid.s b/llvm/test/MC/RISCV/rv64zbkb-aliases-valid.s
new file mode 100644
index 0000000000000..f98799e9b9963
--- /dev/null
+++ b/llvm/test/MC/RISCV/rv64zbkb-aliases-valid.s
@@ -0,0 +1,24 @@
+# RUN: llvm-mc %s -triple=riscv64 -mattr=+zbkb -M no-aliases \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
+# RUN: llvm-mc %s -triple=riscv64 -mattr=+zbkb \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s
+# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+zbkb < %s \
+# RUN: | llvm-objdump --no-print-imm-hex -d -r -M no-aliases --mattr=+zbkb - \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ-NOALIAS %s
+# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+zbkb < %s \
+# RUN: | llvm-objdump --no-print-imm-hex -d -r --mattr=+zbkb - \
+# RUN: | FileCheck -check-prefixes=CHECK-S-OBJ %s
+
+# The following check prefixes are used in this test:
+# CHECK-S-OBJ Match both the .s and objdumped object output with
+# aliases enabled
+# CHECK-S-OBJ-NOALIAS Match both the .s and objdumped object output with
+# aliases disabled
+
+# CHECK-S-OBJ-NOALIAS: rori t0, t1, 8
+# CHECK-S-OBJ: rori t0, t1, 8
+ror x5, x6, 8
+
+# CHECK-S-OBJ-NOALIAS: roriw t0, t1, 8
+# CHECK-S-OBJ: roriw t0, t1, 8
+rorw x5, x6, 8
More information about the llvm-commits
mailing list