1; RUN: llc -mtriple=aarch64 %s -o - | FileCheck --check-prefixes=CHECK %s
2
3define void @f0() "patchable-function-entry"="0" "branch-target-enforcement" {
4; CHECK-LABEL: f0:
5; CHECK-NEXT: .Lfunc_begin0:
6; CHECK:      // %bb.0:
7; CHECK-NEXT:  hint #34
8; CHECK-NEXT:  ret
9; CHECK-NOT:  .section __patchable_function_entries
10  ret void
11}
12
13;; -fpatchable-function-entry=1 -mbranch-protection=bti
14define void @f1() "patchable-function-entry"="1" "branch-target-enforcement" {
15; CHECK-LABEL: f1:
16; CHECK-NEXT: .Lfunc_begin1:
17; CHECK:       hint #34
18; CHECK-NEXT:  nop
19; CHECK-NEXT:  ret
20; CHECK:      .section __patchable_function_entries,"awo",@progbits,f1,unique,0
21; CHECK-NEXT: .p2align 3
22; CHECK-NEXT: .xword .Lfunc_begin1
23  ret void
24}
25
26;; -fpatchable-function-entry=2,1 -mbranch-protection=bti
27define void @f2_1() "patchable-function-entry"="1" "patchable-function-prefix"="1" "branch-target-enforcement" {
28; CHECK-LABEL: .type f2_1,@function
29; CHECK-NEXT: .Ltmp0:
30; CHECK-NEXT:  nop
31; CHECK-NEXT: f2_1:
32; CHECK-NEXT: .Lfunc_begin2:
33; CHECK:      // %bb.0:
34; CHECK-NEXT:  hint #34
35; CHECK-NEXT:  nop
36; CHECK-NEXT:  ret
37; CHECK:      .Lfunc_end2:
38; CHECK-NEXT: .size f2_1, .Lfunc_end2-f2_1
39; CHECK:      .section __patchable_function_entries,"awo",@progbits,f1,unique,0
40; CHECK-NEXT: .p2align 3
41; CHECK-NEXT: .xword .Ltmp0
42  ret void
43}
44