[llvm] 564ff80 - [RISCV][GISel] Test G_FRAME_INDEX folding into store address. NFC

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 25 10:51:21 PST 2023


Author: Craig Topper
Date: 2023-11-25T10:48:31-08:00
New Revision: 564ff80e22735505cb58e8b05cc40434a8559725

URL: https://github.com/llvm/llvm-project/commit/564ff80e22735505cb58e8b05cc40434a8559725
DIFF: https://github.com/llvm/llvm-project/commit/564ff80e22735505cb58e8b05cc40434a8559725.diff

LOG: [RISCV][GISel] Test G_FRAME_INDEX folding into store address. NFC

Added: 
    

Modified: 
    llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir
    llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir
index eb5ee7678c0a963..52d21fedc7caa5b 100644
--- a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir
+++ b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv32.mir
@@ -1,6 +1,17 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
 # RUN: llc -mtriple=riscv32 -run-pass=instruction-select %s -o - \
 # RUN: | FileCheck %s
+#
+--- |
+  define void @store_i8(i8 %val, ptr %addr) { ret void }
+  define void @store_i16(i16 %val, ptr %addr) { ret void }
+  define void @store_i32(i32 %val, ptr %addr) { ret void }
+  define void @store_p0(ptr %val, ptr %addr) { ret void }
+  define void @store_fi_i32(ptr %val) {
+    %ptr0 = alloca i32
+    ret void
+  }
+...
 ---
 name:            store_i8
 legalized:       true
@@ -89,3 +100,28 @@ body:            |
     PseudoRET
 
 ...
+---
+name:            store_fi_i32
+legalized:       true
+regBankSelected: true
+tracksRegLiveness: true
+
+stack:
+  - { id: 0, name: ptr0, offset: 0, size: 4, alignment: 4 }
+
+body:            |
+  bb.0:
+    liveins: $x10
+
+    ; CHECK-LABEL: name: store_fi_i32
+    ; CHECK: liveins: $x10
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
+    ; CHECK-NEXT: SW [[COPY]], %stack.0.ptr0, 0 :: (store (s32))
+    ; CHECK-NEXT: PseudoRET
+    %0:gprb(s32) = COPY $x10
+    %1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
+    G_STORE %0(s32), %1(p0) :: (store (s32))
+    PseudoRET
+
+...

diff  --git a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir
index 2ac7d153b3b8ed6..b575c640e79b151 100644
--- a/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir
+++ b/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/store-rv64.mir
@@ -1,6 +1,21 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
 # RUN: llc -mtriple=riscv64 -run-pass=instruction-select %s -o - \
 # RUN: | FileCheck %s
+
+--- |
+  define void @store_i8_i64(i8 %val, ptr %addr) { ret void }
+  define void @store_i16_i64(i16 %val, ptr %addr) { ret void }
+  define void @store_i32_i64(i32 %val, ptr %addr) { ret void }
+  define void @store_i64_i64(i32 %val, ptr %addr) { ret void }
+  define void @store_p0(ptr %val, ptr %addr) { ret void }
+  define void @truncstore_i8_i32(i8 %val, ptr %addr) { ret void }
+  define void @truncstore_i16_i32(i8 %val, ptr %addr) { ret void }
+  define void @store_i32_i32(i8 %val, ptr %addr) { ret void }
+  define void @store_fi_i64_i64(ptr %val) {
+    %ptr0 = alloca i64
+    ret void
+  }
+...
 ---
 name:            store_i8_i64
 legalized:       true
@@ -207,3 +222,28 @@ body:             |
     PseudoRET implicit $x10
 
 ...
+---
+name:            store_fi_i64_i64
+legalized:       true
+regBankSelected: true
+tracksRegLiveness: true
+
+stack:
+  - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }
+
+body:            |
+  bb.0:
+    liveins: $x10
+
+    ; CHECK-LABEL: name: store_fi_i64_i64
+    ; CHECK: liveins: $x10
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
+    ; CHECK-NEXT: SD [[COPY]], %stack.0.ptr0, 0 :: (store (s64))
+    ; CHECK-NEXT: PseudoRET
+    %0:gprb(s64) = COPY $x10
+    %1:gprb(p0) = G_FRAME_INDEX %stack.0.ptr0
+    G_STORE %0(s64), %1(p0) :: (store (s64))
+    PseudoRET
+
+...


        


More information about the llvm-commits mailing list