xref: /llvm-project/llvm/test/CodeGen/AArch64/stgp.ll (revision 5ddce70ef0e5a641d7fea95e31fc5e2439cb98cb)
1; RUN: llc < %s -mtriple=aarch64 -mattr=+mte | FileCheck %s
2
3define void @stgp0(i64 %a, i64 %b, ptr %p) {
4entry:
5; CHECK-LABEL: stgp0:
6; CHECK: stgp x0, x1, [x2]
7; CHECK: ret
8  call void @llvm.aarch64.stgp(ptr %p, i64 %a, i64 %b)
9  ret void
10}
11
12define void @stgp1004(i64 %a, i64 %b, ptr %p) {
13entry:
14; CHECK-LABEL: stgp1004:
15; CHECK: add [[R:x[0-9]+]], x2, #1004
16; CHECK: stgp x0, x1, [[[R]]]
17; CHECK: ret
18  %q = getelementptr i8, ptr %p, i32 1004
19  call void @llvm.aarch64.stgp(ptr %q, i64 %a, i64 %b)
20  ret void
21}
22
23define void @stgp1008(i64 %a, i64 %b, ptr %p) {
24entry:
25; CHECK-LABEL: stgp1008:
26; CHECK: stgp x0, x1, [x2, #1008]
27; CHECK: ret
28  %q = getelementptr i8, ptr %p, i32 1008
29  call void @llvm.aarch64.stgp(ptr %q, i64 %a, i64 %b)
30  ret void
31}
32
33define void @stgp1024(i64 %a, i64 %b, ptr %p) {
34entry:
35; CHECK-LABEL: stgp1024:
36; CHECK: add [[R:x[0-9]+]], x2, #1024
37; CHECK: stgp x0, x1, [[[R]]]
38; CHECK: ret
39  %q = getelementptr i8, ptr %p, i32 1024
40  call void @llvm.aarch64.stgp(ptr %q, i64 %a, i64 %b)
41  ret void
42}
43
44define void @stgp_1024(i64 %a, i64 %b, ptr %p) {
45entry:
46; CHECK-LABEL: stgp_1024:
47; CHECK: stgp x0, x1, [x2, #-1024]
48; CHECK: ret
49  %q = getelementptr i8, ptr %p, i32 -1024
50  call void @llvm.aarch64.stgp(ptr %q, i64 %a, i64 %b)
51  ret void
52}
53
54define void @stgp_1040(i64 %a, i64 %b, ptr %p) {
55entry:
56; CHECK-LABEL: stgp_1040:
57; CHECK: sub [[R:x[0-9]+]], x2, #1040
58; CHECK: stgp x0, x1, [x{{.*}}]
59; CHECK: ret
60  %q = getelementptr i8, ptr %p, i32 -1040
61  call void @llvm.aarch64.stgp(ptr %q, i64 %a, i64 %b)
62  ret void
63}
64
65define void @stgp_alloca(i64 %a, i64 %b) {
66entry:
67; CHECK-LABEL: stgp_alloca:
68; CHECK: stgp x0, x1, [sp, #-32]!
69; CHECK: stgp x1, x0, [sp, #16]
70; CHECK: ret
71  %x = alloca i8, i32 32, align 16
72  call void @llvm.aarch64.stgp(ptr %x, i64 %a, i64 %b)
73  %x1 = getelementptr i8, ptr %x, i32 16
74  call void @llvm.aarch64.stgp(ptr %x1, i64 %b, i64 %a)
75  ret void
76}
77
78declare void @llvm.aarch64.stgp(ptr %p, i64 %a, i64 %b)
79