[llvm] feedb35 - [RISCV][GISel] Correct RORIW patterns.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 17 09:32:59 PDT 2024
Author: Craig Topper
Date: 2024-10-17T09:32:45-07:00
New Revision: feedb35e41522b2f6c11dab4f9263fd305a2c13f
URL: https://github.com/llvm/llvm-project/commit/feedb35e41522b2f6c11dab4f9263fd305a2c13f
DIFF: https://github.com/llvm/llvm-project/commit/feedb35e41522b2f6c11dab4f9263fd305a2c13f.diff
LOG: [RISCV][GISel] Correct RORIW patterns.
We had two rotl patterns and no rotr pattern. The order was such
that the incorrect rotl pattern was being used.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVGISel.td
llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rotate-rv64.mir
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVGISel.td b/llvm/lib/Target/RISCV/RISCVGISel.td
index 0656928ca41f83..67e93b812421b4 100644
--- a/llvm/lib/Target/RISCV/RISCVGISel.td
+++ b/llvm/lib/Target/RISCV/RISCVGISel.td
@@ -274,7 +274,7 @@ def : Pat<(i32 (xor GPR:$rs1, (not GPR:$rs2))), (XNOR GPR:$rs1, GPR:$rs2)>;
def : PatGprGpr<rotl, ROLW, i32, i32>;
def : PatGprGpr<rotr, RORW, i32, i32>;
-def : Pat<(i32 (rotl GPR:$rs1, uimm5i32:$imm)),
+def : Pat<(i32 (rotr GPR:$rs1, uimm5i32:$imm)),
(RORIW GPR:$rs1, (i64 (as_i64imm $imm)))>;
def : Pat<(i32 (rotl GPR:$rs1, uimm5i32:$rs2)),
diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rotate-rv64.mir b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rotate-rv64.mir
index b75e926bb50c4e..50b96e0ee972e6 100644
--- a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rotate-rv64.mir
+++ b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/rotate-rv64.mir
@@ -117,7 +117,7 @@ body: |
; CHECK: liveins: $x10
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
- ; CHECK-NEXT: [[RORIW:%[0-9]+]]:gpr = RORIW [[COPY]], 15
+ ; CHECK-NEXT: [[RORIW:%[0-9]+]]:gpr = RORIW [[COPY]], 17
; CHECK-NEXT: $x10 = COPY [[RORIW]]
; CHECK-NEXT: PseudoRET implicit $x10
%0:gprb(s64) = COPY $x10
@@ -165,9 +165,8 @@ body: |
; CHECK: liveins: $x10
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
- ; CHECK-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI $x0, 15
- ; CHECK-NEXT: [[RORW:%[0-9]+]]:gpr = RORW [[COPY]], [[ADDI]]
- ; CHECK-NEXT: $x10 = COPY [[RORW]]
+ ; CHECK-NEXT: [[RORIW:%[0-9]+]]:gpr = RORIW [[COPY]], 15
+ ; CHECK-NEXT: $x10 = COPY [[RORIW]]
; CHECK-NEXT: PseudoRET implicit $x10
%0:gprb(s64) = COPY $x10
%1:gprb(s32) = G_TRUNC %0(s64)
More information about the llvm-commits
mailing list