[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