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