[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / AArch64 / stgp.ll
blobb4af16fd9ff793931e4dfbda4cc99a01de81f90b
1 ; RUN: llc < %s -mtriple=aarch64 -mattr=+mte | FileCheck %s
3 define void @stgp0(i64 %a, i64 %b, i8* %p) {
4 entry:
5 ; CHECK-LABEL: stgp0:
6 ; CHECK: stgp x0, x1, [x2]
7 ; CHECK: ret
8   call void @llvm.aarch64.stgp(i8* %p, i64 %a, i64 %b)
9   ret void
12 define void @stgp1004(i64 %a, i64 %b, i8* %p) {
13 entry:
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, i8* %p, i32 1004
19   call void @llvm.aarch64.stgp(i8* %q, i64 %a, i64 %b)
20   ret void
23 define void @stgp1008(i64 %a, i64 %b, i8* %p) {
24 entry:
25 ; CHECK-LABEL: stgp1008:
26 ; CHECK: stgp x0, x1, [x2, #1008]
27 ; CHECK: ret
28   %q = getelementptr i8, i8* %p, i32 1008
29   call void @llvm.aarch64.stgp(i8* %q, i64 %a, i64 %b)
30   ret void
33 define void @stgp1024(i64 %a, i64 %b, i8* %p) {
34 entry:
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, i8* %p, i32 1024
40   call void @llvm.aarch64.stgp(i8* %q, i64 %a, i64 %b)
41   ret void
44 define void @stgp_1024(i64 %a, i64 %b, i8* %p) {
45 entry:
46 ; CHECK-LABEL: stgp_1024:
47 ; CHECK: stgp x0, x1, [x2, #-1024]
48 ; CHECK: ret
49   %q = getelementptr i8, i8* %p, i32 -1024
50   call void @llvm.aarch64.stgp(i8* %q, i64 %a, i64 %b)
51   ret void
54 define void @stgp_1040(i64 %a, i64 %b, i8* %p) {
55 entry:
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, i8* %p, i32 -1040
61   call void @llvm.aarch64.stgp(i8* %q, i64 %a, i64 %b)
62   ret void
65 define void @stgp_alloca(i64 %a, i64 %b) {
66 entry:
67 ; CHECK-LABEL: stgp_alloca:
68 ; CHECK: stgp x0, x1, [sp]
69 ; CHECK: stgp x1, x0, [sp, #16]
70 ; CHECK: ret
71   %x = alloca i8, i32 32, align 16
72   call void @llvm.aarch64.stgp(i8* %x, i64 %a, i64 %b)
73   %x1 = getelementptr i8, i8* %x, i32 16
74   call void @llvm.aarch64.stgp(i8* %x1, i64 %b, i64 %a)
75   ret void
78 declare void @llvm.aarch64.stgp(i8* %p, i64 %a, i64 %b)