1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2
- ; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s --check-prefix=MACHO
2
+ ; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-macho- enable-nonlazybind | FileCheck %s --check-prefix=MACHO
3
3
; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=MACHO-NORMAL
4
4
; RUN: llc -mtriple=aarch64 -fast-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-FI
5
5
; RUN: llc -mtriple=aarch64 -global-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-GI
@@ -19,13 +19,18 @@ define void @test_laziness(ptr %a) nounwind {
19
19
; MACHO-NEXT: Lloh1:
20
20
; MACHO-NEXT: ldr x8, [x8, _external@GOTPAGEOFF]
21
21
; MACHO-NEXT: blr x8
22
+ ; MACHO-NEXT: Lloh2:
23
+ ; MACHO-NEXT: adrp x8, _memset@GOTPAGE
22
24
; MACHO-NEXT: mov x0, x19
23
25
; MACHO-NEXT: mov w1, #1 ; =0x1
26
+ ; MACHO-NEXT: Lloh3:
27
+ ; MACHO-NEXT: ldr x8, [x8, _memset@GOTPAGEOFF]
24
28
; MACHO-NEXT: mov w2, #1000 ; =0x3e8
25
- ; MACHO-NEXT: bl _memset
29
+ ; MACHO-NEXT: blr x8
26
30
; MACHO-NEXT: ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
27
31
; MACHO-NEXT: ldp x20, x19, [sp], #32 ; 16-byte Folded Reload
28
32
; MACHO-NEXT: ret
33
+ ; MACHO-NEXT: .loh AdrpLdrGot Lloh2, Lloh3
29
34
; MACHO-NEXT: .loh AdrpLdrGot Lloh0, Lloh1
30
35
;
31
36
; MACHO-NORMAL-LABEL: test_laziness:
@@ -34,50 +39,34 @@ define void @test_laziness(ptr %a) nounwind {
34
39
; MACHO-NORMAL-NEXT: stp x29, x30, [sp, #16] ; 16-byte Folded Spill
35
40
; MACHO-NORMAL-NEXT: mov x19, x0
36
41
; MACHO-NORMAL-NEXT: bl _external
42
+ ; MACHO-NORMAL-NEXT: Lloh0:
43
+ ; MACHO-NORMAL-NEXT: adrp x8, _memset@GOTPAGE
37
44
; MACHO-NORMAL-NEXT: mov x0, x19
38
45
; MACHO-NORMAL-NEXT: mov w1, #1 ; =0x1
46
+ ; MACHO-NORMAL-NEXT: Lloh1:
47
+ ; MACHO-NORMAL-NEXT: ldr x8, [x8, _memset@GOTPAGEOFF]
39
48
; MACHO-NORMAL-NEXT: mov w2, #1000 ; =0x3e8
40
- ; MACHO-NORMAL-NEXT: bl _memset
49
+ ; MACHO-NORMAL-NEXT: blr x8
41
50
; MACHO-NORMAL-NEXT: ldp x29, x30, [sp, #16] ; 16-byte Folded Reload
42
51
; MACHO-NORMAL-NEXT: ldp x20, x19, [sp], #32 ; 16-byte Folded Reload
43
52
; MACHO-NORMAL-NEXT: ret
53
+ ; MACHO-NORMAL-NEXT: .loh AdrpLdrGot Lloh0, Lloh1
44
54
;
45
- ; ELF-FI-LABEL: test_laziness:
46
- ; ELF-FI: // %bb.0:
47
- ; ELF-FI-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
48
- ; ELF-FI-NEXT: mov x19, x0
49
- ; ELF-FI-NEXT: bl external
50
- ; ELF-FI-NEXT: mov w8, #1 // =0x1
51
- ; ELF-FI-NEXT: mov x0, x19
52
- ; ELF-FI-NEXT: mov x2, #1000 // =0x3e8
53
- ; ELF-FI-NEXT: uxtb w1, w8
54
- ; ELF-FI-NEXT: bl memset
55
- ; ELF-FI-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
56
- ; ELF-FI-NEXT: ret
57
- ;
58
- ; ELF-GI-LABEL: test_laziness:
59
- ; ELF-GI: // %bb.0:
60
- ; ELF-GI-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
61
- ; ELF-GI-NEXT: mov x19, x0
62
- ; ELF-GI-NEXT: bl external
63
- ; ELF-GI-NEXT: mov x0, x19
64
- ; ELF-GI-NEXT: mov w1, #1 // =0x1
65
- ; ELF-GI-NEXT: mov w2, #1000 // =0x3e8
66
- ; ELF-GI-NEXT: bl memset
67
- ; ELF-GI-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
68
- ; ELF-GI-NEXT: ret
69
- ;
70
- ; ELF-SDAG-LABEL: test_laziness:
71
- ; ELF-SDAG: // %bb.0:
72
- ; ELF-SDAG-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
73
- ; ELF-SDAG-NEXT: mov x19, x0
74
- ; ELF-SDAG-NEXT: bl external
75
- ; ELF-SDAG-NEXT: mov x0, x19
76
- ; ELF-SDAG-NEXT: mov w1, #1 // =0x1
77
- ; ELF-SDAG-NEXT: mov w2, #1000 // =0x3e8
78
- ; ELF-SDAG-NEXT: bl memset
79
- ; ELF-SDAG-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
80
- ; ELF-SDAG-NEXT: ret
55
+ ; ELF-LABEL: test_laziness:
56
+ ; ELF: // %bb.0:
57
+ ; ELF-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
58
+ ; ELF-NEXT: adrp x8, :got:external
59
+ ; ELF-NEXT: mov x19, x0
60
+ ; ELF-NEXT: ldr x8, [x8, :got_lo12:external]
61
+ ; ELF-NEXT: blr x8
62
+ ; ELF-NEXT: adrp x8, :got:memset
63
+ ; ELF-NEXT: mov x0, x19
64
+ ; ELF-NEXT: mov w1, #1 // =0x1
65
+ ; ELF-NEXT: ldr x8, [x8, :got_lo12:memset]
66
+ ; ELF-NEXT: mov w2, #1000 // =0x3e8
67
+ ; ELF-NEXT: blr x8
68
+ ; ELF-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
69
+ ; ELF-NEXT: ret
81
70
call void @external()
82
71
call void @llvm.memset.p0.i64(ptr align 1 %a, i8 1, i64 1000, i1 false)
83
72
ret void
@@ -86,20 +75,22 @@ define void @test_laziness(ptr %a) nounwind {
86
75
define void @test_laziness_tail() nounwind {
87
76
; MACHO-LABEL: test_laziness_tail:
88
77
; MACHO: ; %bb.0:
89
- ; MACHO-NEXT: Lloh2 :
78
+ ; MACHO-NEXT: Lloh4 :
90
79
; MACHO-NEXT: adrp x0, _external@GOTPAGE
91
- ; MACHO-NEXT: Lloh3 :
80
+ ; MACHO-NEXT: Lloh5 :
92
81
; MACHO-NEXT: ldr x0, [x0, _external@GOTPAGEOFF]
93
82
; MACHO-NEXT: br x0
94
- ; MACHO-NEXT: .loh AdrpLdrGot Lloh2, Lloh3
83
+ ; MACHO-NEXT: .loh AdrpLdrGot Lloh4, Lloh5
95
84
;
96
85
; MACHO-NORMAL-LABEL: test_laziness_tail:
97
86
; MACHO-NORMAL: ; %bb.0:
98
87
; MACHO-NORMAL-NEXT: b _external
99
88
;
100
89
; ELF-LABEL: test_laziness_tail:
101
90
; ELF: // %bb.0:
102
- ; ELF-NEXT: b external
91
+ ; ELF-NEXT: adrp x0, :got:external
92
+ ; ELF-NEXT: ldr x0, [x0, :got_lo12:external]
93
+ ; ELF-NEXT: br x0
103
94
tail call void @external()
104
95
ret void
105
96
}
@@ -108,3 +99,7 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)
108
99
109
100
!llvm.module.flags = !{!0}
110
101
!0 = !{i32 7, !"RtLibUseGOT", i32 1}
102
+ ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
103
+ ; ELF-FI: {{.*}}
104
+ ; ELF-GI: {{.*}}
105
+ ; ELF-SDAG: {{.*}}
0 commit comments