AArch64/ARM64: add two more MC tests to ARM64 set.
[oota-llvm.git] / test / MC / AArch64 / inline-asm-modifiers.s
1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj -mattr=+fp-armv8 < %s | llvm-objdump -r - | FileCheck %s
2 // RUN: llvm-mc -triple=arm64-none-linux-gnu -filetype=obj -mattr=+fp-armv8 < %s | llvm-objdump -r - | FileCheck %s
3
4         .file   "<stdin>"
5         .text
6         .globl  test_inline_modifier_L
7         .type   test_inline_modifier_L,@function
8 test_inline_modifier_L:                 // @test_inline_modifier_L
9 // BB#0:
10         //APP
11         add x0, x0, #:lo12:var_simple
12         //NO_APP
13         //APP
14         ldr x0, [x0, #:got_lo12:var_got]
15         //NO_APP
16         //APP
17         add x0, x0, #:tlsdesc_lo12:var_tlsgd
18         //NO_APP
19         //APP
20         add x0, x0, #:dtprel_lo12:var_tlsld
21         //NO_APP
22         //APP
23         ldr x0, [x0, #:gottprel_lo12:var_tlsie]
24         //NO_APP
25         //APP
26         add x0, x0, #:tprel_lo12:var_tlsle
27         //NO_APP
28         ret
29 .Ltmp0:
30         .size   test_inline_modifier_L, .Ltmp0-test_inline_modifier_L
31
32 // CHECK: R_AARCH64_ADD_ABS_LO12_NC var_simple
33 // CHECK: R_AARCH64_LD64_GOT_LO12_NC var_got
34 // CHECK: R_AARCH64_TLSDESC_ADD_LO12_NC var_tlsgd
35 // CHECK: R_AARCH64_TLSLD_ADD_DTPREL_LO12 var_tlsld
36 // CHECK: R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC var_tlsie
37 // CHECK: R_AARCH64_TLSLE_ADD_TPREL_LO12 var_tlsle
38
39         .globl  test_inline_modifier_G
40         .type   test_inline_modifier_G,@function
41 test_inline_modifier_G:                 // @test_inline_modifier_G
42 // BB#0:
43         //APP
44         add x0, x0, #:dtprel_hi12:var_tlsld, lsl #12
45         //NO_APP
46         //APP
47         add x0, x0, #:tprel_hi12:var_tlsle, lsl #12
48         //NO_APP
49         ret
50 .Ltmp1:
51         .size   test_inline_modifier_G, .Ltmp1-test_inline_modifier_G
52
53 // CHECK: R_AARCH64_TLSLD_ADD_DTPREL_HI12 var_tlsld
54 // CHECK: R_AARCH64_TLSLE_ADD_TPREL_HI12 var_tlsle
55
56         .globl  test_inline_modifier_A
57         .type   test_inline_modifier_A,@function
58 test_inline_modifier_A:                 // @test_inline_modifier_A
59 // BB#0:
60         //APP
61         adrp x0, var_simple
62         //NO_APP
63         //APP
64         adrp x0, :got:var_got
65         //NO_APP
66         //APP
67         adrp x0, :tlsdesc:var_tlsgd
68         //NO_APP
69         //APP
70         adrp x0, :gottprel:var_tlsie
71         //NO_APP
72         ret
73 .Ltmp2:
74         .size   test_inline_modifier_A, .Ltmp2-test_inline_modifier_A
75 // CHECK: R_AARCH64_ADR_PREL_PG_HI21 var_simple
76 // CHECK: R_AARCH64_ADR_GOT_PAGE var_got
77 // CHECK: R_AARCH64_TLSDESC_ADR_PAGE var_tlsgd
78 // CHECK: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 var_tlsie
79
80         .globl  test_inline_modifier_wx
81         .type   test_inline_modifier_wx,@function
82 test_inline_modifier_wx:                // @test_inline_modifier_wx
83 // BB#0:
84         mov      w2, w0
85         //APP
86         add w2, w2, w2
87         //NO_APP
88         mov      w2, w0
89         //APP
90         add w2, w2, w2
91         //NO_APP
92         //APP
93         add x0, x0, x0
94         //NO_APP
95         mov      x0, x1
96         //APP
97         add x0, x0, x0
98         //NO_APP
99         mov      x0, x1
100         //APP
101         add w0, w0, w0
102         //NO_APP
103         //APP
104         add x1, x1, x1
105         //NO_APP
106         //APP
107         add w0, wzr, wzr
108         //NO_APP
109         //APP
110         add x0, xzr, xzr
111         //NO_APP
112         ret
113 .Ltmp3:
114         .size   test_inline_modifier_wx, .Ltmp3-test_inline_modifier_wx
115
116         .globl  test_inline_modifier_bhsdq
117         .type   test_inline_modifier_bhsdq,@function
118 test_inline_modifier_bhsdq:             // @test_inline_modifier_bhsdq
119 // BB#0:
120         //APP
121         ldr b0, [sp]
122         //NO_APP
123         //APP
124         ldr h0, [sp]
125         //NO_APP
126         //APP
127         ldr s0, [sp]
128         //NO_APP
129         //APP
130         ldr d0, [sp]
131         //NO_APP
132         //APP
133         ldr q0, [sp]
134         //NO_APP
135         //APP
136         ldr b0, [sp]
137         //NO_APP
138         //APP
139         ldr h0, [sp]
140         //NO_APP
141         //APP
142         ldr s0, [sp]
143         //NO_APP
144         //APP
145         ldr d0, [sp]
146         //NO_APP
147         //APP
148         ldr q0, [sp]
149         //NO_APP
150         ret
151 .Ltmp4:
152         .size   test_inline_modifier_bhsdq, .Ltmp4-test_inline_modifier_bhsdq
153
154         .globl  test_inline_modifier_c
155         .type   test_inline_modifier_c,@function
156 test_inline_modifier_c:                 // @test_inline_modifier_c
157 // BB#0:
158         //APP
159         adr x0, 3
160         //NO_APP
161         ret
162 .Ltmp5:
163         .size   test_inline_modifier_c, .Ltmp5-test_inline_modifier_c
164
165         .hidden var_simple              // @var_simple
166         .type   var_simple,@object
167         .bss
168         .globl  var_simple
169         .align  2
170 var_simple:
171         .word   0                       // 0x0
172         .size   var_simple, 4
173
174         .type   var_got,@object         // @var_got
175         .globl  var_got
176         .align  2
177 var_got:
178         .word   0                       // 0x0
179         .size   var_got, 4
180
181         .type   var_tlsgd,@object       // @var_tlsgd
182         .section        .tbss,"awT",@nobits
183         .globl  var_tlsgd
184         .align  2
185 var_tlsgd:
186         .word   0                       // 0x0
187         .size   var_tlsgd, 4
188
189         .type   var_tlsld,@object       // @var_tlsld
190         .globl  var_tlsld
191         .align  2
192 var_tlsld:
193         .word   0                       // 0x0
194         .size   var_tlsld, 4
195
196         .type   var_tlsie,@object       // @var_tlsie
197         .globl  var_tlsie
198         .align  2
199 var_tlsie:
200         .word   0                       // 0x0
201         .size   var_tlsie, 4
202
203         .type   var_tlsle,@object       // @var_tlsle
204         .globl  var_tlsle
205         .align  2
206 var_tlsle:
207         .word   0                       // 0x0
208         .size   var_tlsle, 4
209
210