66
77; RUN: llc -mtriple arm64e-apple-darwin -o - %s -asm-verbose=0 \
88; RUN: -global-isel -global-isel-abort=1 -verify-machineinstrs \
9- ; RUN: | FileCheck %s --check-prefixes=CHECK,DARWIN
9+ ; RUN: | FileCheck %s --check-prefixes=CHECK,DARWIN
1010
1111; RUN: llc -mtriple aarch64 -mattr=+pauth -o - %s -asm-verbose=0 \
1212; RUN: -global-isel -global-isel-abort=1 -verify-machineinstrs \
13- ; RUN: | FileCheck %s --check-prefixes=CHECK,ELF
13+ ; RUN: | FileCheck %s --check-prefixes=CHECK,ELF
1414
1515
16- define i32 @test_call_ia_0 (i32 ()* %arg0 ) #0 {
16+ define i32 @test_call_ia_0 (ptr %arg0 ) #0 {
1717; DARWIN-LABEL: test_call_ia_0:
1818; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
1919; DARWIN-NEXT: blraaz x0
@@ -29,7 +29,7 @@ define i32 @test_call_ia_0(i32 ()* %arg0) #0 {
2929 ret i32 %tmp0
3030}
3131
32- define i32 @test_call_ib_0 (i32 ()* %arg0 ) #0 {
32+ define i32 @test_call_ib_0 (ptr %arg0 ) #0 {
3333; DARWIN-LABEL: test_call_ib_0:
3434; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
3535; DARWIN-NEXT: blrabz x0
@@ -45,21 +45,21 @@ define i32 @test_call_ib_0(i32 ()* %arg0) #0 {
4545 ret i32 %tmp0
4646}
4747
48- define i32 @test_tailcall_ia_0 (i32 ()* %arg0 ) #0 {
48+ define i32 @test_tailcall_ia_0 (ptr %arg0 ) #0 {
4949; CHECK-LABEL: test_tailcall_ia_0:
50- ; CHECK: braaz x0
50+ ; CHECK-NEXT : braaz x0
5151 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 0 , i64 0 ) ]
5252 ret i32 %tmp0
5353}
5454
55- define i32 @test_tailcall_ib_0 (i32 ()* %arg0 ) #0 {
55+ define i32 @test_tailcall_ib_0 (ptr %arg0 ) #0 {
5656; CHECK-LABEL: test_tailcall_ib_0:
57- ; CHECK: brabz x0
57+ ; CHECK-NEXT: brabz x0
5858 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 1 , i64 0 ) ]
5959 ret i32 %tmp0
6060}
6161
62- define i32 @test_call_ia_imm (i32 ()* %arg0 ) #0 {
62+ define i32 @test_call_ia_imm (ptr %arg0 ) #0 {
6363; DARWIN-LABEL: test_call_ia_imm:
6464; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
6565; DARWIN-NEXT: mov x17, #42
@@ -77,7 +77,7 @@ define i32 @test_call_ia_imm(i32 ()* %arg0) #0 {
7777 ret i32 %tmp0
7878}
7979
80- define i32 @test_call_ib_imm (i32 ()* %arg0 ) #0 {
80+ define i32 @test_call_ib_imm (ptr %arg0 ) #0 {
8181; DARWIN-LABEL: test_call_ib_imm:
8282; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
8383; DARWIN-NEXT: mov x17, #42
@@ -95,23 +95,23 @@ define i32 @test_call_ib_imm(i32 ()* %arg0) #0 {
9595 ret i32 %tmp0
9696}
9797
98- define i32 @test_tailcall_ia_imm (i32 ()* %arg0 ) #0 {
98+ define i32 @test_tailcall_ia_imm (ptr %arg0 ) #0 {
9999; CHECK-LABEL: test_tailcall_ia_imm:
100100; CHECK-NEXT: mov x16, #42
101101; CHECK-NEXT: braa x0, x16
102102 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 0 , i64 42 ) ]
103103 ret i32 %tmp0
104104}
105105
106- define i32 @test_tailcall_ib_imm (i32 ()* %arg0 ) #0 {
106+ define i32 @test_tailcall_ib_imm (ptr %arg0 ) #0 {
107107; CHECK-LABEL: test_tailcall_ib_imm:
108108; CHECK-NEXT: mov x16, #42
109109; CHECK-NEXT: brab x0, x16
110110 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 1 , i64 42 ) ]
111111 ret i32 %tmp0
112112}
113113
114- define i32 @test_call_ia_var (i32 ()* %arg0 , i64* %arg1 ) #0 {
114+ define i32 @test_call_ia_var (ptr %arg0 , ptr %arg1 ) #0 {
115115; DARWIN-LABEL: test_call_ia_var:
116116; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
117117; DARWIN-NEXT: ldr x8, [x1]
@@ -125,12 +125,12 @@ define i32 @test_call_ia_var(i32 ()* %arg0, i64* %arg1) #0 {
125125; ELF-NEXT: blraa x0, x8
126126; ELF-NEXT: ldr x30, [sp], #16
127127; ELF-NEXT: ret
128- %tmp0 = load i64 , i64* %arg1
128+ %tmp0 = load i64 , ptr %arg1
129129 %tmp1 = call i32 %arg0 () [ "ptrauth" (i32 0 , i64 %tmp0 ) ]
130130 ret i32 %tmp1
131131}
132132
133- define i32 @test_call_ib_var (i32 ()* %arg0 , i64* %arg1 ) #0 {
133+ define i32 @test_call_ib_var (ptr %arg0 , ptr %arg1 ) #0 {
134134; DARWIN-LABEL: test_call_ib_var:
135135; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
136136; DARWIN-NEXT: ldr x8, [x1]
@@ -144,30 +144,30 @@ define i32 @test_call_ib_var(i32 ()* %arg0, i64* %arg1) #0 {
144144; ELF-NEXT: blrab x0, x8
145145; ELF-NEXT: ldr x30, [sp], #16
146146; ELF-NEXT: ret
147- %tmp0 = load i64 , i64* %arg1
147+ %tmp0 = load i64 , ptr %arg1
148148 %tmp1 = call i32 %arg0 () [ "ptrauth" (i32 1 , i64 %tmp0 ) ]
149149 ret i32 %tmp1
150150}
151151
152- define i32 @test_tailcall_ia_var (i32 ()* %arg0 , i64* %arg1 ) #0 {
152+ define i32 @test_tailcall_ia_var (ptr %arg0 , ptr %arg1 ) #0 {
153153; CHECK-LABEL: test_tailcall_ia_var:
154154; CHECK: ldr x1, [x1]
155155; CHECK: braa x0, x1
156- %tmp0 = load i64 , i64* %arg1
156+ %tmp0 = load i64 , ptr %arg1
157157 %tmp1 = tail call i32 %arg0 () [ "ptrauth" (i32 0 , i64 %tmp0 ) ]
158158 ret i32 %tmp1
159159}
160160
161- define i32 @test_tailcall_ib_var (i32 ()* %arg0 , i64* %arg1 ) #0 {
161+ define i32 @test_tailcall_ib_var (ptr %arg0 , ptr %arg1 ) #0 {
162162; CHECK-LABEL: test_tailcall_ib_var:
163163; CHECK: ldr x1, [x1]
164164; CHECK: brab x0, x1
165- %tmp0 = load i64 , i64* %arg1
165+ %tmp0 = load i64 , ptr %arg1
166166 %tmp1 = tail call i32 %arg0 () [ "ptrauth" (i32 1 , i64 %tmp0 ) ]
167167 ret i32 %tmp1
168168}
169169
170- define i32 @test_call_ia_arg (i32 ()* %arg0 , i64 %arg1 ) #0 {
170+ define i32 @test_call_ia_arg (ptr %arg0 , i64 %arg1 ) #0 {
171171; DARWIN-LABEL: test_call_ia_arg:
172172; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
173173; DARWIN-NEXT: blraa x0, x1
@@ -183,7 +183,7 @@ define i32 @test_call_ia_arg(i32 ()* %arg0, i64 %arg1) #0 {
183183 ret i32 %tmp0
184184}
185185
186- define i32 @test_call_ib_arg (i32 ()* %arg0 , i64 %arg1 ) #0 {
186+ define i32 @test_call_ib_arg (ptr %arg0 , i64 %arg1 ) #0 {
187187; DARWIN-LABEL: test_call_ib_arg:
188188; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
189189; DARWIN-NEXT: blrab x0, x1
@@ -199,21 +199,21 @@ define i32 @test_call_ib_arg(i32 ()* %arg0, i64 %arg1) #0 {
199199 ret i32 %tmp0
200200}
201201
202- define i32 @test_tailcall_ia_arg (i32 ()* %arg0 , i64 %arg1 ) #0 {
202+ define i32 @test_tailcall_ia_arg (ptr %arg0 , i64 %arg1 ) #0 {
203203; CHECK-LABEL: test_tailcall_ia_arg:
204204; CHECK: braa x0, x1
205205 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 0 , i64 %arg1 ) ]
206206 ret i32 %tmp0
207207}
208208
209- define i32 @test_tailcall_ib_arg (i32 ()* %arg0 , i64 %arg1 ) #0 {
209+ define i32 @test_tailcall_ib_arg (ptr %arg0 , i64 %arg1 ) #0 {
210210; CHECK-LABEL: test_tailcall_ib_arg:
211211; CHECK: brab x0, x1
212212 %tmp0 = tail call i32 %arg0 () [ "ptrauth" (i32 1 , i64 %arg1 ) ]
213213 ret i32 %tmp0
214214}
215215
216- define i32 @test_call_ia_arg_ind (i32 ()** %arg0 , i64 %arg1 ) #0 {
216+ define i32 @test_call_ia_arg_ind (ptr %arg0 , i64 %arg1 ) #0 {
217217; DARWIN-LABEL: test_call_ia_arg_ind:
218218; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
219219; DARWIN-NEXT: ldr x8, [x0]
@@ -227,12 +227,12 @@ define i32 @test_call_ia_arg_ind(i32 ()** %arg0, i64 %arg1) #0 {
227227; ELF-NEXT: blraa x8, x1
228228; ELF-NEXT: ldr x30, [sp], #16
229229; ELF-NEXT: ret
230- %tmp0 = load i32 ()*, i32 ()** %arg0
230+ %tmp0 = load ptr , ptr %arg0
231231 %tmp1 = call i32 %tmp0 () [ "ptrauth" (i32 0 , i64 %arg1 ) ]
232232 ret i32 %tmp1
233233}
234234
235- define i32 @test_call_ib_arg_ind (i32 ()** %arg0 , i64 %arg1 ) #0 {
235+ define i32 @test_call_ib_arg_ind (ptr %arg0 , i64 %arg1 ) #0 {
236236; DARWIN-LABEL: test_call_ib_arg_ind:
237237; DARWIN-NEXT: stp x29, x30, [sp, #-16]!
238238; DARWIN-NEXT: ldr x8, [x0]
@@ -246,25 +246,25 @@ define i32 @test_call_ib_arg_ind(i32 ()** %arg0, i64 %arg1) #0 {
246246; ELF-NEXT: blrab x8, x1
247247; ELF-NEXT: ldr x30, [sp], #16
248248; ELF-NEXT: ret
249- %tmp0 = load i32 ()*, i32 ()** %arg0
249+ %tmp0 = load ptr , ptr %arg0
250250 %tmp1 = call i32 %tmp0 () [ "ptrauth" (i32 1 , i64 %arg1 ) ]
251251 ret i32 %tmp1
252252}
253253
254- define i32 @test_tailcall_ia_arg_ind (i32 ()** %arg0 , i64 %arg1 ) #0 {
254+ define i32 @test_tailcall_ia_arg_ind (ptr %arg0 , i64 %arg1 ) #0 {
255255; CHECK-LABEL: test_tailcall_ia_arg_ind:
256256; CHECK: ldr x0, [x0]
257257; CHECK: braa x0, x1
258- %tmp0 = load i32 ()*, i32 ()** %arg0
258+ %tmp0 = load ptr , ptr %arg0
259259 %tmp1 = tail call i32 %tmp0 () [ "ptrauth" (i32 0 , i64 %arg1 ) ]
260260 ret i32 %tmp1
261261}
262262
263- define i32 @test_tailcall_ib_arg_ind (i32 ()** %arg0 , i64 %arg1 ) #0 {
263+ define i32 @test_tailcall_ib_arg_ind (ptr %arg0 , i64 %arg1 ) #0 {
264264; CHECK-LABEL: test_tailcall_ib_arg_ind:
265265; CHECK: ldr x0, [x0]
266266; CHECK: brab x0, x1
267- %tmp0 = load i32 ()*, i32 ()** %arg0
267+ %tmp0 = load ptr , ptr %arg0
268268 %tmp1 = tail call i32 %tmp0 () [ "ptrauth" (i32 1 , i64 %arg1 ) ]
269269 ret i32 %tmp1
270270}
0 commit comments