Skip to content

Commit 746f572

Browse files
authored
[test][PAC][AArch64] Add ELF tests for subtarget-neutral codegen (#98020)
Many parts of PAuth-related codegen are not MachO- or ELF-specific. Add RUN lines against ELF targets to ensure that codegen works for ELF as well as for MachO.
1 parent 1adb55b commit 746f572

5 files changed

+71
-48
lines changed

llvm/test/CodeGen/AArch64/ptrauth-bti-call.ll

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -asm-verbose=false -o - %s | FileCheck %s
2-
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -global-isel -asm-verbose=false -o - %s | FileCheck %s
3-
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -fast-isel -asm-verbose=false -o - %s | FileCheck %s
1+
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -asm-verbose=false \
2+
; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
3+
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -global-isel -asm-verbose=false \
4+
; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
5+
; RUN: llc -mtriple arm64e-apple-darwin -mattr=+bti -fast-isel -asm-verbose=false \
6+
; RUN: -o - %s | FileCheck %s --check-prefixes=DARWIN,CHECK
7+
; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -asm-verbose=false \
8+
; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
9+
; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -global-isel -asm-verbose=false \
10+
; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
11+
; RUN: llc -mtriple aarch64-linux-gnu -mattr=+bti -mattr=+pauth -fast-isel -asm-verbose=false \
12+
; RUN: -o - %s | FileCheck %s --check-prefixes=ELF,CHECK
413

514
; ptrauth tail-calls can only use x16/x17 with BTI.
615

7-
; CHECK-LABEL: _test_tailcall_ia_0:
16+
; CHECK-LABEL: test_tailcall_ia_0:
817
; CHECK-NEXT: bti c
918
; CHECK-NEXT: mov x16, x0
1019
; CHECK-NEXT: braaz x16
@@ -13,7 +22,7 @@ define i32 @test_tailcall_ia_0(i32 ()* %arg0) #0 {
1322
ret i32 %tmp0
1423
}
1524

16-
; CHECK-LABEL: _test_tailcall_ib_0:
25+
; CHECK-LABEL: test_tailcall_ib_0:
1726
; CHECK-NEXT: bti c
1827
; CHECK-NEXT: mov x16, x0
1928
; CHECK-NEXT: brabz x16
@@ -22,7 +31,7 @@ define i32 @test_tailcall_ib_0(i32 ()* %arg0) #0 {
2231
ret i32 %tmp0
2332
}
2433

25-
; CHECK-LABEL: _test_tailcall_ia_imm:
34+
; CHECK-LABEL: test_tailcall_ia_imm:
2635
; CHECK-NEXT: bti c
2736
; CHECK-NEXT: mov x16, x0
2837
; CHECK-NEXT: mov x17, #42
@@ -32,7 +41,7 @@ define i32 @test_tailcall_ia_imm(i32 ()* %arg0) #0 {
3241
ret i32 %tmp0
3342
}
3443

35-
; CHECK-LABEL: _test_tailcall_ib_imm:
44+
; CHECK-LABEL: test_tailcall_ib_imm:
3645
; CHECK-NEXT: bti c
3746
; CHECK-NEXT: mov x16, x0
3847
; CHECK-NEXT: mov x17, #42
@@ -42,29 +51,37 @@ define i32 @test_tailcall_ib_imm(i32 ()* %arg0) #0 {
4251
ret i32 %tmp0
4352
}
4453

45-
; CHECK-LABEL: _test_tailcall_ia_var:
46-
; CHECK-NEXT: bti c
47-
; CHECK-NEXT: mov x16, x0
48-
; CHECK-NEXT: ldr x0, [x1]
49-
; CHECK-NEXT: braa x16, x0
54+
; CHECK-LABEL: test_tailcall_ia_var:
55+
; DARWIN-NEXT: bti c
56+
; DARWIN-NEXT: mov x16, x0
57+
; DARWIN-NEXT: ldr x0, [x1]
58+
; DARWIN-NEXT: braa x16, x0
59+
; ELF-NEXT: bti c
60+
; ELF-NEXT: ldr x1, [x1]
61+
; ELF-NEXT: mov x16, x0
62+
; ELF-NEXT: braa x16, x1
5063
define i32 @test_tailcall_ia_var(i32 ()* %arg0, i64* %arg1) #0 {
5164
%tmp0 = load i64, i64* %arg1
5265
%tmp1 = tail call i32 %arg0() [ "ptrauth"(i32 0, i64 %tmp0) ]
5366
ret i32 %tmp1
5467
}
5568

56-
; CHECK-LABEL: _test_tailcall_ib_var:
57-
; CHECK-NEXT: bti c
58-
; CHECK-NEXT: mov x16, x0
59-
; CHECK-NEXT: ldr x0, [x1]
60-
; CHECK-NEXT: brab x16, x0
69+
; CHECK-LABEL: test_tailcall_ib_var:
70+
; DARWIN-NEXT: bti c
71+
; DARWIN-NEXT: mov x16, x0
72+
; DARWIN-NEXT: ldr x0, [x1]
73+
; DARWIN-NEXT: brab x16, x0
74+
; ELF-NEXT: bti c
75+
; ELF-NEXT: ldr x1, [x1]
76+
; ELF-NEXT: mov x16, x0
77+
; ELF-NEXT: brab x16, x1
6178
define i32 @test_tailcall_ib_var(i32 ()* %arg0, i64* %arg1) #0 {
6279
%tmp0 = load i64, i64* %arg1
6380
%tmp1 = tail call i32 %arg0() [ "ptrauth"(i32 1, i64 %tmp0) ]
6481
ret i32 %tmp1
6582
}
6683

67-
; CHECK-LABEL: _test_tailcall_ia_arg:
84+
; CHECK-LABEL: test_tailcall_ia_arg:
6885
; CHECK-NEXT: bti c
6986
; CHECK-NEXT: mov x16, x0
7087
; CHECK-NEXT: braa x16, x1
@@ -73,7 +90,7 @@ define i32 @test_tailcall_ia_arg(i32 ()* %arg0, i64 %arg1) #0 {
7390
ret i32 %tmp0
7491
}
7592

76-
; CHECK-LABEL: _test_tailcall_ib_arg:
93+
; CHECK-LABEL: test_tailcall_ib_arg:
7794
; CHECK-NEXT: bti c
7895
; CHECK-NEXT: mov x16, x0
7996
; CHECK-NEXT: brab x16, x1
@@ -82,7 +99,7 @@ define i32 @test_tailcall_ib_arg(i32 ()* %arg0, i64 %arg1) #0 {
8299
ret i32 %tmp0
83100
}
84101

85-
; CHECK-LABEL: _test_tailcall_ia_arg_ind:
102+
; CHECK-LABEL: test_tailcall_ia_arg_ind:
86103
; CHECK-NEXT: bti c
87104
; CHECK-NEXT: ldr x16, [x0]
88105
; CHECK-NEXT: braa x16, x1
@@ -92,7 +109,7 @@ define i32 @test_tailcall_ia_arg_ind(i32 ()** %arg0, i64 %arg1) #0 {
92109
ret i32 %tmp1
93110
}
94111

95-
; CHECK-LABEL: _test_tailcall_ib_arg_ind:
112+
; CHECK-LABEL: test_tailcall_ib_arg_ind:
96113
; CHECK-NEXT: bti c
97114
; CHECK-NEXT: ldr x16, [x0]
98115
; CHECK-NEXT: brab x16, x1

llvm/test/CodeGen/AArch64/ptrauth-intrinsic-blend.ll

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
2+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=0 | FileCheck %s
5+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
46

57
define i64 @test_blend(i64 %arg, i64 %arg1) {
68
; CHECK-LABEL: test_blend:
7-
; CHECK: ; %bb.0:
9+
; CHECK: %bb.0:
810
; CHECK-NEXT: bfi x0, x1, #48, #16
911
; CHECK-NEXT: ret
1012
%tmp = call i64 @llvm.ptrauth.blend(i64 %arg, i64 %arg1)
@@ -13,7 +15,7 @@ define i64 @test_blend(i64 %arg, i64 %arg1) {
1315

1416
define i64 @test_blend_constant(i64 %arg) {
1517
; CHECK-LABEL: test_blend_constant:
16-
; CHECK: ; %bb.0:
18+
; CHECK: %bb.0:
1719
; CHECK-NEXT: movk x0, #12345, lsl #48
1820
; CHECK-NEXT: ret
1921
%tmp = call i64 @llvm.ptrauth.blend(i64 %arg, i64 12345)
@@ -23,7 +25,7 @@ define i64 @test_blend_constant(i64 %arg) {
2325
; Blend isn't commutative.
2426
define i64 @test_blend_constant_swapped(i64 %arg) {
2527
; CHECK-LABEL: test_blend_constant_swapped:
26-
; CHECK: ; %bb.0:
28+
; CHECK: %bb.0:
2729
; CHECK-NEXT: mov w8, #12345
2830
; CHECK-NEXT: bfi x8, x0, #48, #16
2931
; CHECK-NEXT: mov x0, x8
@@ -35,7 +37,7 @@ define i64 @test_blend_constant_swapped(i64 %arg) {
3537
; Blends of constants wider than 16 bits truncate the constant.
3638
define i64 @test_blend_constant_wide(i64 %arg) {
3739
; CHECK-LABEL: test_blend_constant_wide:
38-
; CHECK: ; %bb.0:
40+
; CHECK: %bb.0:
3941
; CHECK-NEXT: mov w8, #65536
4042
; CHECK-NEXT: bfi x0, x8, #48, #16
4143
; CHECK-NEXT: ret

llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign-generic.ll

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
2+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=0 | FileCheck %s
5+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
46

57
define i64 @test_sign_generic(i64 %arg, i64 %arg1) {
68
; CHECK-LABEL: test_sign_generic:
7-
; CHECK: ; %bb.0:
9+
; CHECK: %bb.0:
810
; CHECK-NEXT: pacga x0, x0, x1
911
; CHECK-NEXT: ret
1012
%tmp = call i64 @llvm.ptrauth.sign.generic(i64 %arg, i64 %arg1)

llvm/test/CodeGen/AArch64/ptrauth-intrinsic-sign.ll

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
2+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=0 | FileCheck %s
5+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
46

57
define i64 @test_sign_ia(i64 %arg, i64 %arg1) {
68
; CHECK-LABEL: test_sign_ia:
7-
; CHECK: ; %bb.0:
9+
; CHECK: %bb.0:
810
; CHECK-NEXT: pacia x0, x1
911
; CHECK-NEXT: ret
1012
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 %arg1)
@@ -13,7 +15,7 @@ define i64 @test_sign_ia(i64 %arg, i64 %arg1) {
1315

1416
define i64 @test_sign_ia_zero(i64 %arg) {
1517
; CHECK-LABEL: test_sign_ia_zero:
16-
; CHECK: ; %bb.0:
18+
; CHECK: %bb.0:
1719
; CHECK-NEXT: paciza x0
1820
; CHECK-NEXT: ret
1921
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 0, i64 0)
@@ -22,7 +24,7 @@ define i64 @test_sign_ia_zero(i64 %arg) {
2224

2325
define i64 @test_sign_ib(i64 %arg, i64 %arg1) {
2426
; CHECK-LABEL: test_sign_ib:
25-
; CHECK: ; %bb.0:
27+
; CHECK: %bb.0:
2628
; CHECK-NEXT: pacib x0, x1
2729
; CHECK-NEXT: ret
2830
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 %arg1)
@@ -31,7 +33,7 @@ define i64 @test_sign_ib(i64 %arg, i64 %arg1) {
3133

3234
define i64 @test_sign_ib_zero(i64 %arg) {
3335
; CHECK-LABEL: test_sign_ib_zero:
34-
; CHECK: ; %bb.0:
36+
; CHECK: %bb.0:
3537
; CHECK-NEXT: pacizb x0
3638
; CHECK-NEXT: ret
3739
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 1, i64 0)
@@ -40,7 +42,7 @@ define i64 @test_sign_ib_zero(i64 %arg) {
4042

4143
define i64 @test_sign_da(i64 %arg, i64 %arg1) {
4244
; CHECK-LABEL: test_sign_da:
43-
; CHECK: ; %bb.0:
45+
; CHECK: %bb.0:
4446
; CHECK-NEXT: pacda x0, x1
4547
; CHECK-NEXT: ret
4648
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 %arg1)
@@ -49,7 +51,7 @@ define i64 @test_sign_da(i64 %arg, i64 %arg1) {
4951

5052
define i64 @test_sign_da_zero(i64 %arg) {
5153
; CHECK-LABEL: test_sign_da_zero:
52-
; CHECK: ; %bb.0:
54+
; CHECK: %bb.0:
5355
; CHECK-NEXT: pacdza x0
5456
; CHECK-NEXT: ret
5557
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 2, i64 0)
@@ -58,7 +60,7 @@ define i64 @test_sign_da_zero(i64 %arg) {
5860

5961
define i64 @test_sign_db(i64 %arg, i64 %arg1) {
6062
; CHECK-LABEL: test_sign_db:
61-
; CHECK: ; %bb.0:
63+
; CHECK: %bb.0:
6264
; CHECK-NEXT: pacdb x0, x1
6365
; CHECK-NEXT: ret
6466
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 %arg1)
@@ -67,7 +69,7 @@ define i64 @test_sign_db(i64 %arg, i64 %arg1) {
6769

6870
define i64 @test_sign_db_zero(i64 %arg) {
6971
; CHECK-LABEL: test_sign_db_zero:
70-
; CHECK: ; %bb.0:
72+
; CHECK: %bb.0:
7173
; CHECK-NEXT: pacdzb x0
7274
; CHECK-NEXT: ret
7375
%tmp = call i64 @llvm.ptrauth.sign(i64 %arg, i32 3, i64 0)

llvm/test/CodeGen/AArch64/ptrauth-intrinsic-strip.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3-
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4-
5-
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
2+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=0 | FileCheck %s
3+
; RUN: llc < %s -mtriple arm64e-apple-darwin -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
4+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=0 | FileCheck %s
5+
; RUN: llc < %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s
66

77
define i64 @test_strip_ia(i64 %arg) {
88
; CHECK-LABEL: test_strip_ia:
9-
; CHECK: ; %bb.0:
9+
; CHECK: %bb.0:
1010
; CHECK-NEXT: xpaci x0
1111
; CHECK-NEXT: ret
1212
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 0)
@@ -15,7 +15,7 @@ define i64 @test_strip_ia(i64 %arg) {
1515

1616
define i64 @test_strip_ib(i64 %arg) {
1717
; CHECK-LABEL: test_strip_ib:
18-
; CHECK: ; %bb.0:
18+
; CHECK: %bb.0:
1919
; CHECK-NEXT: xpaci x0
2020
; CHECK-NEXT: ret
2121
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 1)
@@ -24,7 +24,7 @@ define i64 @test_strip_ib(i64 %arg) {
2424

2525
define i64 @test_strip_da(i64 %arg) {
2626
; CHECK-LABEL: test_strip_da:
27-
; CHECK: ; %bb.0:
27+
; CHECK: %bb.0:
2828
; CHECK-NEXT: xpacd x0
2929
; CHECK-NEXT: ret
3030
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 2)
@@ -33,7 +33,7 @@ define i64 @test_strip_da(i64 %arg) {
3333

3434
define i64 @test_strip_db(i64 %arg) {
3535
; CHECK-LABEL: test_strip_db:
36-
; CHECK: ; %bb.0:
36+
; CHECK: %bb.0:
3737
; CHECK-NEXT: xpacd x0
3838
; CHECK-NEXT: ret
3939
%tmp = call i64 @llvm.ptrauth.strip(i64 %arg, i32 3)

0 commit comments

Comments
 (0)