[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