[llvm] [AArch64] Regenerate ldst-opt.ll checks to use update_llc_test_checks (PR #193712)

via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 23 04:06:10 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-aarch64

Author: Simon Pilgrim (RKSimon)

<details>
<summary>Changes</summary>

Updated test-names to test_names to allow use of update_llc_test_checks script

Hit this as it was proving impossible to keep up to date while working on topological dag regressions

---

Patch is 69.00 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/193712.diff


1 Files Affected:

- (modified) llvm/test/CodeGen/AArch64/ldst-opt.ll (+950-380) 


``````````diff
diff --git a/llvm/test/CodeGen/AArch64/ldst-opt.ll b/llvm/test/CodeGen/AArch64/ldst-opt.ll
index 4e09e76457582..e002f3fba9d5b 100644
--- a/llvm/test/CodeGen/AArch64/ldst-opt.ll
+++ b/llvm/test/CodeGen/AArch64/ldst-opt.ll
@@ -1,5 +1,6 @@
-; RUN: llc -mtriple=aarch64-linux-gnu -aarch64-enable-atomic-cfg-tidy=0 -disable-lsr -verify-machineinstrs -o - %s | FileCheck --check-prefix=CHECK --check-prefix=NOSTRICTALIGN %s
-; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+strict-align -aarch64-enable-atomic-cfg-tidy=0 -disable-lsr -verify-machineinstrs -o - %s | FileCheck --check-prefix=CHECK --check-prefix=STRICTALIGN %s
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc -mtriple=aarch64-linux-gnu -aarch64-enable-atomic-cfg-tidy=0 -disable-lsr -verify-machineinstrs -o - %s | FileCheck --check-prefixes=CHECK,NOSTRICTALIGN %s
+; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+strict-align -aarch64-enable-atomic-cfg-tidy=0 -disable-lsr -verify-machineinstrs -o - %s | FileCheck --check-prefixes=CHECK,STRICTALIGN %s
 
 ; This file contains tests for the AArch64 load/store optimizer.
 
@@ -31,9 +32,11 @@
 
 declare void @bar_byte(ptr, i8)
 
-define void @load-pre-indexed-byte(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-byte
-; CHECK: ldrb w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_byte(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_byte:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldrb w1, [x0, #32]!
+; CHECK-NEXT:    b bar_byte
 entry:
   %a = getelementptr inbounds %struct.byte, ptr %ptr, i64 0, i32 1, i32 0
   %add = load i8, ptr %a, align 4
@@ -44,9 +47,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-byte(ptr %ptr, i8 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-byte
-; CHECK: strb w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_byte(ptr %ptr, i8 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_byte:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    strb w1, [x0, #32]!
+; CHECK-NEXT:    b bar_byte
 entry:
   %a = getelementptr inbounds %struct.byte, ptr %ptr, i64 0, i32 1, i32 0
   store i8 %val, ptr %a, align 4
@@ -59,9 +64,11 @@ bar:
 
 declare void @bar_halfword(ptr, i16)
 
-define void @load-pre-indexed-halfword(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-halfword
-; CHECK: ldrh w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_halfword(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_halfword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldrh w1, [x0, #32]!
+; CHECK-NEXT:    b bar_halfword
 entry:
   %a = getelementptr inbounds %struct.halfword, ptr %ptr, i64 0, i32 1, i32 0
   %add = load i16, ptr %a, align 4
@@ -72,9 +79,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-halfword(ptr %ptr, i16 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-halfword
-; CHECK: strh w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_halfword(ptr %ptr, i16 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_halfword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    strh w1, [x0, #32]!
+; CHECK-NEXT:    b bar_halfword
 entry:
   %a = getelementptr inbounds %struct.halfword, ptr %ptr, i64 0, i32 1, i32 0
   store i16 %val, ptr %a, align 4
@@ -87,9 +96,11 @@ bar:
 
 declare void @bar_word(ptr, i32)
 
-define void @load-pre-indexed-word(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-word
-; CHECK: ldr w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_word(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_word:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldr w1, [x0, #32]!
+; CHECK-NEXT:    b bar_word
 entry:
   %a = getelementptr inbounds %struct.word, ptr %ptr, i64 0, i32 1, i32 0
   %add = load i32, ptr %a, align 4
@@ -100,9 +111,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-word(ptr %ptr, i32 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-word
-; CHECK: str w{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_word(ptr %ptr, i32 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_word:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    str w1, [x0, #32]!
+; CHECK-NEXT:    b bar_word
 entry:
   %a = getelementptr inbounds %struct.word, ptr %ptr, i64 0, i32 1, i32 0
   store i32 %val, ptr %a, align 4
@@ -115,9 +128,11 @@ bar:
 
 declare void @bar_doubleword(ptr, i64)
 
-define void @load-pre-indexed-doubleword(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-doubleword
-; CHECK: ldr x{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_doubleword(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_doubleword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldr x1, [x0, #32]!
+; CHECK-NEXT:    b bar_doubleword
 entry:
   %a = getelementptr inbounds %struct.doubleword, ptr %ptr, i64 0, i32 1, i32 0
   %add = load i64, ptr %a, align 8
@@ -128,9 +143,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-doubleword(ptr %ptr, i64 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-doubleword
-; CHECK: str x{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_doubleword(ptr %ptr, i64 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_doubleword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    str x1, [x0, #32]!
+; CHECK-NEXT:    b bar_doubleword
 entry:
   %a = getelementptr inbounds %struct.doubleword, ptr %ptr, i64 0, i32 1, i32 0
   store i64 %val, ptr %a, align 8
@@ -143,9 +160,11 @@ bar:
 
 declare void @bar_quadword(ptr, fp128)
 
-define void @load-pre-indexed-quadword(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-quadword
-; CHECK: ldr q{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_quadword(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_quadword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldr q0, [x0, #32]!
+; CHECK-NEXT:    b bar_quadword
 entry:
   %a = getelementptr inbounds %struct.quadword, ptr %ptr, i64 0, i32 1, i32 0
   %add = load fp128, ptr %a, align 16
@@ -156,9 +175,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-quadword(ptr %ptr, fp128 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-quadword
-; CHECK: str q{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_quadword(ptr %ptr, fp128 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_quadword:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    str q0, [x0, #32]!
+; CHECK-NEXT:    b bar_quadword
 entry:
   %a = getelementptr inbounds %struct.quadword, ptr %ptr, i64 0, i32 1, i32 0
   store fp128 %val, ptr %a, align 16
@@ -171,9 +192,11 @@ bar:
 
 declare void @bar_float(ptr, float)
 
-define void @load-pre-indexed-float(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-float
-; CHECK: ldr s{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_float(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_float:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldr s0, [x0, #32]!
+; CHECK-NEXT:    b bar_float
 entry:
   %a = getelementptr inbounds %struct.float, ptr %ptr, i64 0, i32 1, i32 0
   %add = load float, ptr %a, align 4
@@ -184,9 +207,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-float(ptr %ptr, float %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-float
-; CHECK: str s{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_float(ptr %ptr, float %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_float:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    str s0, [x0, #32]!
+; CHECK-NEXT:    b bar_float
 entry:
   %a = getelementptr inbounds %struct.float, ptr %ptr, i64 0, i32 1, i32 0
   store float %val, ptr %a, align 4
@@ -199,9 +224,11 @@ bar:
 
 declare void @bar_double(ptr, double)
 
-define void @load-pre-indexed-double(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pre-indexed-double
-; CHECK: ldr d{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @load_pre_indexed_double(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pre_indexed_double:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldr d0, [x0, #32]!
+; CHECK-NEXT:    b bar_double
 entry:
   %a = getelementptr inbounds %struct.double, ptr %ptr, i64 0, i32 1, i32 0
   %add = load double, ptr %a, align 8
@@ -212,9 +239,11 @@ bar:
   ret void
 }
 
-define void @store-pre-indexed-double(ptr %ptr, double %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-double
-; CHECK: str d{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define void @store_pre_indexed_double(ptr %ptr, double %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_double:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    str d0, [x0, #32]!
+; CHECK-NEXT:    b bar_double
 entry:
   %a = getelementptr inbounds %struct.double, ptr %ptr, i64 0, i32 1, i32 0
   store double %val, ptr %a, align 8
@@ -234,10 +263,12 @@ bar:
 ; (ldp|stp) w1, w2, [x0, #32]!
 ;
 
-define void @load-pair-pre-indexed-word(ptr %ptr) nounwind {
-; CHECK-LABEL: load-pair-pre-indexed-word
-; CHECK: ldp w{{[0-9]+}}, w{{[0-9]+}}, [x0, #32]!
-; CHECK-NOT: add x0, x0, #32
+define void @load_pair_pre_indexed_word(ptr %ptr) nounwind {
+; CHECK-LABEL: load_pair_pre_indexed_word:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    ldp w8, w9, [x0, #32]!
+; CHECK-NEXT:    add w1, w8, w9
+; CHECK-NEXT:    b bar_word
 entry:
   %a = getelementptr inbounds %struct.word, ptr %ptr, i64 0, i32 1, i32 0
   %a1 = load i32, ptr %a, align 4
@@ -251,10 +282,11 @@ bar:
   ret void
 }
 
-define void @store-pair-pre-indexed-word(ptr %ptr, i32 %val) nounwind {
-; CHECK-LABEL: store-pair-pre-indexed-word
-; CHECK: stp w{{[0-9]+}}, w{{[0-9]+}}, [x0, #32]!
-; CHECK-NOT: add x0, x0, #32
+define void @store_pair_pre_indexed_word(ptr %ptr, i32 %val) nounwind {
+; CHECK-LABEL: store_pair_pre_indexed_word:
+; CHECK:       // %bb.0: // %entry
+; CHECK-NEXT:    stp w1, w1, [x0, #32]!
+; CHECK-NEXT:    b bar_word
 entry:
   %a = getelementptr inbounds %struct.word, ptr %ptr, i64 0, i32 1, i32 0
   store i32 %val, ptr %a, align 4
@@ -283,10 +315,18 @@ bar:
 %pre.struct.float = type { i32, float, float, float}
 %pre.struct.double = type { i32, double, double, double}
 
-define i32 @load-pre-indexed-word2(ptr %this, i1 %cond,
-                                   ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-word2
-; CHECK: ldr w{{[0-9]+}}, [x{{[0-9]+}}, #4]!
+define i32 @load_pre_indexed_word2(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_word2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB16_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr w0, [x8, #4]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB16_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #8
+; CHECK-NEXT:    ldr w0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -301,10 +341,18 @@ return:
   ret i32 %ret
 }
 
-define i64 @load-pre-indexed-doubleword2(ptr %this, i1 %cond,
-                                         ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-doubleword2
-; CHECK: ldr x{{[0-9]+}}, [x{{[0-9]+}}, #8]!
+define i64 @load_pre_indexed_doubleword2(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_doubleword2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB17_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr x0, [x8, #8]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB17_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #16
+; CHECK-NEXT:    ldr x0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -319,10 +367,18 @@ return:
   ret i64 %ret
 }
 
-define <2 x i64> @load-pre-indexed-quadword2(ptr %this, i1 %cond,
-                                             ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-quadword2
-; CHECK: ldr q{{[0-9]+}}, [x{{[0-9]+}}, #16]!
+define <2 x i64> @load_pre_indexed_quadword2(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_quadword2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB18_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr q0, [x8, #16]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB18_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #32
+; CHECK-NEXT:    ldr q0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -337,10 +393,18 @@ return:
   ret <2 x i64> %ret
 }
 
-define float @load-pre-indexed-float2(ptr %this, i1 %cond,
-                                      ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-float2
-; CHECK: ldr s{{[0-9]+}}, [x{{[0-9]+}}, #4]!
+define float @load_pre_indexed_float2(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_float2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB19_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr s0, [x8, #4]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB19_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #8
+; CHECK-NEXT:    ldr s0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -355,10 +419,18 @@ return:
   ret float %ret
 }
 
-define double @load-pre-indexed-double2(ptr %this, i1 %cond,
-                                        ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-double2
-; CHECK: ldr d{{[0-9]+}}, [x{{[0-9]+}}, #8]!
+define double @load_pre_indexed_double2(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_double2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB20_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr d0, [x8, #8]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB20_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #16
+; CHECK-NEXT:    ldr d0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -373,10 +445,18 @@ return:
   ret double %ret
 }
 
-define i32 @load-pre-indexed-word3(ptr %this, i1 %cond,
-                                   ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-word3
-; CHECK: ldr w{{[0-9]+}}, [x{{[0-9]+}}, #12]!
+define i32 @load_pre_indexed_word3(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_word3:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB21_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr w0, [x8, #12]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB21_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #16
+; CHECK-NEXT:    ldr w0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -391,10 +471,18 @@ return:
   ret i32 %ret
 }
 
-define i64 @load-pre-indexed-doubleword3(ptr %this, i1 %cond,
-                                         ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-doubleword3
-; CHECK: ldr x{{[0-9]+}}, [x{{[0-9]+}}, #16]!
+define i64 @load_pre_indexed_doubleword3(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_doubleword3:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB22_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr x0, [x8, #16]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB22_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #24
+; CHECK-NEXT:    ldr x0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -409,10 +497,18 @@ return:
   ret i64 %ret
 }
 
-define <2 x i64> @load-pre-indexed-quadword3(ptr %this, i1 %cond,
-                                             ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-quadword3
-; CHECK: ldr q{{[0-9]+}}, [x{{[0-9]+}}, #32]!
+define <2 x i64> @load_pre_indexed_quadword3(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_quadword3:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB23_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr q0, [x8, #32]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB23_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #48
+; CHECK-NEXT:    ldr q0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -427,10 +523,18 @@ return:
   ret <2 x i64> %ret
 }
 
-define float @load-pre-indexed-float3(ptr %this, i1 %cond,
-                                      ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-float3
-; CHECK: ldr s{{[0-9]+}}, [x{{[0-9]+}}, #8]!
+define float @load_pre_indexed_float3(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_float3:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB24_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr s0, [x8, #8]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB24_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #12
+; CHECK-NEXT:    ldr s0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -445,10 +549,18 @@ return:
   ret float %ret
 }
 
-define double @load-pre-indexed-double3(ptr %this, i1 %cond,
-                                        ptr %load2) nounwind {
-; CHECK-LABEL: load-pre-indexed-double3
-; CHECK: ldr d{{[0-9]+}}, [x{{[0-9]+}}, #16]!
+define double @load_pre_indexed_double3(ptr %this, i1 %cond, ptr %load2) nounwind {
+; CHECK-LABEL: load_pre_indexed_double3:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB25_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    ldr d0, [x8, #16]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB25_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #24
+; CHECK-NEXT:    ldr d0, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -473,11 +585,18 @@ return:
 ;
 ; with X being either w0, x0, s0, d0 or q0.
 
-define void @store-pre-indexed-word2(ptr %this, i1 %cond,
-                                     ptr %load2,
-                                     i32 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-word2
-; CHECK: str w{{[0-9]+}}, [x{{[0-9]+}}, #4]!
+define void @store_pre_indexed_word2(ptr %this, i1 %cond, ptr %load2, i32 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_word2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB26_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    str w3, [x8, #4]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB26_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #8
+; CHECK-NEXT:    str w3, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -492,11 +611,18 @@ return:
   ret void
 }
 
-define void @store-pre-indexed-doubleword2(ptr %this, i1 %cond,
-                                           ptr %load2,
-                                           i64 %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-doubleword2
-; CHECK: str x{{[0-9]+}}, [x{{[0-9]+}}, #8]!
+define void @store_pre_indexed_doubleword2(ptr %this, i1 %cond, ptr %load2, i64 %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_doubleword2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB27_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    str x3, [x8, #8]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB27_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #16
+; CHECK-NEXT:    str x3, [x8]
+; CHECK-NEXT:    ret
   br i1 %cond, label %if.then, label %if.end
 if.then:
   %load1 = load ptr, ptr %this
@@ -511,11 +637,18 @@ return:
   ret void
 }
 
-define void @store-pre-indexed-quadword2(ptr %this, i1 %cond,
-                                         ptr %load2,
-                                         <2 x i64> %val) nounwind {
-; CHECK-LABEL: store-pre-indexed-quadword2
-; CHECK: str q{{[0-9]+}}, [x{{[0-9]+}}, #16]!
+define void @store_pre_indexed_quadword2(ptr %this, i1 %cond, ptr %load2, <2 x i64> %val) nounwind {
+; CHECK-LABEL: store_pre_indexed_quadword2:
+; CHECK:       // %bb.0:
+; CHECK-NEXT:    tbz w1, #0, .LBB28_2
+; CHECK-NEXT:  // %bb.1: // %if.then
+; CHECK-NEXT:    ldr x8, [x0]
+; CHECK-NEXT:    str q0, [x8, #16]!
+; CHECK-NEXT:    ret
+; CHECK-NEXT:  .LBB28_2: // %if.end
+; CHECK-NEXT:    add x8, x2, #32
+; CH...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/193712


More information about the llvm-commits mailing list