OSDN Git Service

Update to LLVM 3.5a.
[android-x86/external-llvm.git] / test / MC / ARM / directive-arch_extension-fp.s
1 @ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null 2>&1 %s \
2 @ RUN:   | FileCheck %s -check-prefix CHECK-V7
3 @ RUN: not llvm-mc -triple armv8-eabi -filetype asm -o /dev/null 2>&1 %s \
4 @ RUN:   | FileCheck %s -check-prefix CHECK-V8
5 @ RUN: not llvm-mc -triple thumbv7-eabi -filetype asm -o /dev/null 2>&1 %s \
6 @ RUN:   | FileCheck %s -check-prefix CHECK-V7
7 @ RUN: not llvm-mc -triple thumbv8-eabi -filetype asm -o /dev/null 2>&1 %s \
8 @ RUN:   | FileCheck %s -check-prefix CHECK-V8
9
10         .syntax unified
11
12         .arch_extension fp
13 @ CHECK-V7: error: architectural extension 'fp' is not allowed for the current base architecture
14 @ CHECK-V7-NEXT:        .arch_extension fp
15 @ CHECK-V7-NEXT:                     ^
16
17         .type fp,%function
18 fp:
19         vmrs r0, mvfr2
20 @ CHECK-V7: error: instruction requires: FPARMv8
21
22         vselgt.f32 s0, s0, s0
23 @ CHECK-V7: error: instruction requires: FPARMv8
24         vselge.f32 s0, s0, s0
25 @ CHECK-V7: error: instruction requires: FPARMv8
26         vseleq.f32 s0, s0, s0
27 @ CHECK-V7: error: instruction requires: FPARMv8
28         vselvs.f32 s0, s0, s0
29 @ CHECK-V7: error: instruction requires: FPARMv8
30         vmaxnm.f32 s0, s0, s0
31 @ CHECK-V7: error: instruction requires: FPARMv8
32         vminnm.f32 s0, s0, s0
33 @ CHECK-V7: error: instruction requires: FPARMv8
34
35         vselgt.f64 d0, d0, d0
36 @ CHECK-V7: error: instruction requires: FPARMv8
37         vselge.f64 d0, d0, d0
38 @ CHECK-V7: error: instruction requires: FPARMv8
39         vseleq.f64 d0, d0, d0
40 @ CHECK-V7: error: instruction requires: FPARMv8
41         vselvs.f64 d0, d0, d0
42 @ CHECK-V7: error: instruction requires: FPARMv8
43         vmaxnm.f64 d0, d0, d0
44 @ CHECK-V7: error: instruction requires: FPARMv8
45         vminnm.f64 d0, d0, d0
46 @ CHECK-V7: error: instruction requires: FPARMv8
47
48         vcvtb.f64.f16 d0, s0
49 @ CHECK-V7: error: instruction requires: FPARMv8
50         vcvtb.f16.f64 s0, d0
51 @ CHECK-V7: error: instruction requires: FPARMv8
52         vcvtt.f64.f16 d0, s0
53 @ CHECK-V7: error: instruction requires: FPARMv8
54         vcvtt.f16.f64 s0, d0
55 @ CHECK-V7: error: instruction requires: FPARMv8
56
57         vcvta.s32.f32 s0, s0
58 @ CHECK-V7: error: instruction requires: FPARMv8
59         vcvta.u32.f32 s0, s0
60 @ CHECK-V7: error: instruction requires: FPARMv8
61         vcvta.s32.f64 s0, d0
62 @ CHECK-V7: error: instruction requires: FPARMv8
63         vcvta.u32.f64 s0, d0
64 @ CHECK-V7: error: instruction requires: FPARMv8
65         vcvtn.s32.f32 s0, s0
66 @ CHECK-V7: error: instruction requires: FPARMv8
67         vcvtn.u32.f32 s0, s0
68 @ CHECK-V7: error: instruction requires: FPARMv8
69         vcvtn.s32.f64 s0, d0
70 @ CHECK-V7: error: instruction requires: FPARMv8
71         vcvtn.u32.f64 s0, d0
72 @ CHECK-V7: error: instruction requires: FPARMv8
73         vcvtp.s32.f32 s0, s0
74 @ CHECK-V7: error: instruction requires: FPARMv8
75         vcvtp.u32.f32 s0, s0
76 @ CHECK-V7: error: instruction requires: FPARMv8
77         vcvtp.s32.f64 s0, d0
78 @ CHECK-V7: error: instruction requires: FPARMv8
79         vcvtp.u32.f64 s0, d0
80 @ CHECK-V7: error: instruction requires: FPARMv8
81         vcvtm.s32.f32 s0, s0
82 @ CHECK-V7: error: instruction requires: FPARMv8
83         vcvtm.u32.f32 s0, s0
84 @ CHECK-V7: error: instruction requires: FPARMv8
85         vcvtm.s32.f64 s0, d0
86 @ CHECK-V7: error: instruction requires: FPARMv8
87         vcvtm.u32.f64 s0, d0
88 @ CHECK-V7: error: instruction requires: FPARMv8
89
90         vrintz.f32 s0, s1
91 @ CHECK-V7: error: instruction requires: FPARMv8
92         vrintz.f64 d0, d1
93 @ CHECK-V7: error: instruction requires: FPARMv8
94         vrintz.f32.f32 s0, s0
95 @ CHECK-V7: error: instruction requires: FPARMv8
96         vrintz.f64.f64 d0, d0
97 @ CHECK-V7: error: instruction requires: FPARMv8
98         vrintr.f32 s0, s1
99 @ CHECK-V7: error: instruction requires: FPARMv8
100         vrintr.f64 d0, d1
101 @ CHECK-V7: error: instruction requires: FPARMv8
102         vrintr.f32.f32 s0, s0
103 @ CHECK-V7: error: instruction requires: FPARMv8
104         vrintr.f64.f64 d0, d0
105 @ CHECK-V7: error: instruction requires: FPARMv8
106         vrintx.f32 s0, s1
107 @ CHECK-V7: error: instruction requires: FPARMv8
108         vrintx.f64 d0, d1
109 @ CHECK-V7: error: instruction requires: FPARMv8
110         vrintx.f32.f32 s0, s0
111 @ CHECK-V7: error: instruction requires: FPARMv8
112         vrintx.f64.f64 d0, d0
113 @ CHECK-V7: error: instruction requires: FPARMv8
114
115         vrinta.f32 s0, s0
116 @ CHECK-V7: error: instruction requires: FPARMv8
117         vrinta.f64 d0, d0
118 @ CHECK-V7: error: instruction requires: FPARMv8
119         vrinta.f32.f32 s0, s0
120 @ CHECK-V7: error: instruction requires: FPARMv8
121         vrinta.f64.f64 d0, d0
122 @ CHECK-V7: error: instruction requires: FPARMv8
123         vrintn.f32 s0, s0
124 @ CHECK-V7: error: instruction requires: FPARMv8
125         vrintn.f64 d0, d0
126 @ CHECK-V7: error: instruction requires: FPARMv8
127         vrintn.f32.f32 s0, s0
128 @ CHECK-V7: error: instruction requires: FPARMv8
129         vrintn.f64.f64 d0, d0
130 @ CHECK-V7: error: instruction requires: FPARMv8
131         vrintp.f32 s0, s0
132 @ CHECK-V7: error: instruction requires: FPARMv8
133         vrintp.f64 d0, d0
134 @ CHECK-V7: error: instruction requires: FPARMv8
135         vrintp.f32.f32 s0, s0
136 @ CHECK-V7: error: instruction requires: FPARMv8
137         vrintp.f64.f64 d0, d0
138 @ CHECK-V7: error: instruction requires: FPARMv8
139         vrintm.f32 s0, s0
140 @ CHECK-V7: error: instruction requires: FPARMv8
141         vrintm.f64 d0, d0
142 @ CHECK-V7: error: instruction requires: FPARMv8
143         vrintm.f32.f32 s0, s0
144 @ CHECK-V7: error: instruction requires: FPARMv8
145         vrintm.f64.f64 d0, d0
146 @ CHECK-V7: error: instruction requires: FPARMv8
147
148         .arch_extension nofp
149 @ CHECK-V7: error: architectural extension 'fp' is not allowed for the current base architecture
150 @ CHECK-V7-NEXT:        .arch_extension nofp
151 @ CHECK-V7-NEXT:                     ^
152
153         .type nofp,%function
154 nofp:
155         vmrs r0, mvfr2
156 @ CHECK-V7: error: instruction requires: FPARMv8
157 @ CHECK-V8: error: instruction requires: FPARMv8
158
159         vselgt.f32 s0, s0, s0
160 @ CHECK-V7: error: instruction requires: FPARMv8
161 @ CHECK-V8: error: instruction requires: FPARMv8
162         vselge.f32 s0, s0, s0
163 @ CHECK-V7: error: instruction requires: FPARMv8
164 @ CHECK-V8: error: instruction requires: FPARMv8
165         vseleq.f32 s0, s0, s0
166 @ CHECK-V7: error: instruction requires: FPARMv8
167 @ CHECK-V8: error: instruction requires: FPARMv8
168         vselvs.f32 s0, s0, s0
169 @ CHECK-V7: error: instruction requires: FPARMv8
170 @ CHECK-V8: error: instruction requires: FPARMv8
171         vmaxnm.f32 s0, s0, s0
172 @ CHECK-V7: error: instruction requires: FPARMv8
173 @ CHECK-V8: error: instruction requires: FPARMv8
174         vminnm.f32 s0, s0, s0
175 @ CHECK-V7: error: instruction requires: FPARMv8
176 @ CHECK-V8: error: instruction requires: FPARMv8
177
178         vselgt.f64 d0, d0, d0
179 @ CHECK-V7: error: instruction requires: FPARMv8
180 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
181         vselge.f64 d0, d0, d0
182 @ CHECK-V7: error: instruction requires: FPARMv8
183 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
184         vseleq.f64 d0, d0, d0
185 @ CHECK-V7: error: instruction requires: FPARMv8
186 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
187         vselvs.f64 d0, d0, d0
188 @ CHECK-V7: error: instruction requires: FPARMv8
189 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
190         vmaxnm.f64 d0, d0, d0
191 @ CHECK-V7: error: instruction requires: FPARMv8
192 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
193         vminnm.f64 d0, d0, d0
194 @ CHECK-V7: error: instruction requires: FPARMv8
195 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
196
197         vcvtb.f64.f16 d0, s0
198 @ CHECK-V7: error: instruction requires: FPARMv8
199 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
200         vcvtb.f16.f64 s0, d0
201 @ CHECK-V7: error: instruction requires: FPARMv8
202 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
203         vcvtt.f64.f16 d0, s0
204 @ CHECK-V7: error: instruction requires: FPARMv8
205 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
206         vcvtt.f16.f64 s0, d0
207 @ CHECK-V7: error: instruction requires: FPARMv8
208 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
209
210         vcvta.s32.f32 s0, s0
211 @ CHECK-V7: error: instruction requires: FPARMv8
212 @ CHECK-V8: error: instruction requires: FPARMv8
213         vcvta.u32.f32 s0, s0
214 @ CHECK-V7: error: instruction requires: FPARMv8
215 @ CHECK-V8: error: instruction requires: FPARMv8
216         vcvta.s32.f64 s0, d0
217 @ CHECK-V7: error: instruction requires: FPARMv8
218 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
219         vcvta.u32.f64 s0, d0
220 @ CHECK-V7: error: instruction requires: FPARMv8
221 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
222         vcvtn.s32.f32 s0, s0
223 @ CHECK-V7: error: instruction requires: FPARMv8
224 @ CHECK-V8: error: instruction requires: FPARMv8
225         vcvtn.u32.f32 s0, s0
226 @ CHECK-V7: error: instruction requires: FPARMv8
227 @ CHECK-V8: error: instruction requires: FPARMv8
228         vcvtn.s32.f64 s0, d0
229 @ CHECK-V7: error: instruction requires: FPARMv8
230 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
231         vcvtn.u32.f64 s0, d0
232 @ CHECK-V7: error: instruction requires: FPARMv8
233 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
234         vcvtp.s32.f32 s0, s0
235 @ CHECK-V7: error: instruction requires: FPARMv8
236 @ CHECK-V8: error: instruction requires: FPARMv8
237         vcvtp.u32.f32 s0, s0
238 @ CHECK-V7: error: instruction requires: FPARMv8
239 @ CHECK-V8: error: instruction requires: FPARMv8
240         vcvtp.s32.f64 s0, d0
241 @ CHECK-V7: error: instruction requires: FPARMv8
242 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
243         vcvtp.u32.f64 s0, d0
244 @ CHECK-V7: error: instruction requires: FPARMv8
245 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
246         vcvtm.s32.f32 s0, s0
247 @ CHECK-V7: error: instruction requires: FPARMv8
248 @ CHECK-V8: error: instruction requires: FPARMv8
249         vcvtm.u32.f32 s0, s0
250 @ CHECK-V7: error: instruction requires: FPARMv8
251 @ CHECK-V8: error: instruction requires: FPARMv8
252         vcvtm.s32.f64 s0, d0
253 @ CHECK-V7: error: instruction requires: FPARMv8
254 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
255         vcvtm.u32.f64 s0, d0
256 @ CHECK-V7: error: instruction requires: FPARMv8
257 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
258
259         vrintz.f32 s0, s1
260 @ CHECK-V7: error: instruction requires: FPARMv8
261 @ CHECK-V8: error: instruction requires: FPARMv8
262         vrintz.f64 d0, d1
263 @ CHECK-V7: error: instruction requires: FPARMv8
264 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
265         vrintz.f32.f32 s0, s0
266 @ CHECK-V7: error: instruction requires: FPARMv8
267 @ CHECK-V8: error: instruction requires: FPARMv8
268         vrintz.f64.f64 d0, d0
269 @ CHECK-V7: error: instruction requires: FPARMv8
270 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
271         vrintr.f32 s0, s1
272 @ CHECK-V7: error: instruction requires: FPARMv8
273 @ CHECK-V8: error: instruction requires: FPARMv8
274         vrintr.f64 d0, d1
275 @ CHECK-V7: error: instruction requires: FPARMv8
276 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
277         vrintr.f32.f32 s0, s0
278 @ CHECK-V7: error: instruction requires: FPARMv8
279 @ CHECK-V8: error: instruction requires: FPARMv8
280         vrintr.f64.f64 d0, d0
281 @ CHECK-V7: error: instruction requires: FPARMv8
282 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
283         vrintx.f32 s0, s1
284 @ CHECK-V7: error: instruction requires: FPARMv8
285 @ CHECK-V8: error: instruction requires: FPARMv8
286         vrintx.f64 d0, d1
287 @ CHECK-V7: error: instruction requires: FPARMv8
288 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
289         vrintx.f32.f32 s0, s0
290 @ CHECK-V7: error: instruction requires: FPARMv8
291 @ CHECK-V8: error: instruction requires: FPARMv8
292         vrintx.f64.f64 d0, d0
293 @ CHECK-V7: error: instruction requires: FPARMv8
294 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
295
296         vrinta.f32 s0, s0
297 @ CHECK-V7: error: instruction requires: FPARMv8
298 @ CHECK-V8: error: instruction requires: FPARMv8
299         vrinta.f64 d0, d0
300 @ CHECK-V7: error: instruction requires: FPARMv8
301 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
302         vrinta.f32.f32 s0, s0
303 @ CHECK-V7: error: instruction requires: FPARMv8
304 @ CHECK-V8: error: instruction requires: FPARMv8
305         vrinta.f64.f64 d0, d0
306 @ CHECK-V7: error: instruction requires: FPARMv8
307 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
308         vrintn.f32 s0, s0
309 @ CHECK-V7: error: instruction requires: FPARMv8
310 @ CHECK-V8: error: instruction requires: FPARMv8
311         vrintn.f64 d0, d0
312 @ CHECK-V7: error: instruction requires: FPARMv8
313 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
314         vrintn.f32.f32 s0, s0
315 @ CHECK-V7: error: instruction requires: FPARMv8
316 @ CHECK-V8: error: instruction requires: FPARMv8
317         vrintn.f64.f64 d0, d0
318 @ CHECK-V7: error: instruction requires: FPARMv8
319 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
320         vrintp.f32 s0, s0
321 @ CHECK-V7: error: instruction requires: FPARMv8
322 @ CHECK-V8: error: instruction requires: FPARMv8
323         vrintp.f64 d0, d0
324 @ CHECK-V7: error: instruction requires: FPARMv8
325 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
326         vrintp.f32.f32 s0, s0
327 @ CHECK-V7: error: instruction requires: FPARMv8
328 @ CHECK-V8: error: instruction requires: FPARMv8
329         vrintp.f64.f64 d0, d0
330 @ CHECK-V7: error: instruction requires: FPARMv8
331 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
332         vrintm.f32 s0, s0
333 @ CHECK-V7: error: instruction requires: FPARMv8
334 @ CHECK-V8: error: instruction requires: FPARMv8
335         vrintm.f64 d0, d0
336 @ CHECK-V7: error: instruction requires: FPARMv8
337 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
338         vrintm.f32.f32 s0, s0
339 @ CHECK-V7: error: instruction requires: FPARMv8
340 @ CHECK-V8: error: instruction requires: FPARMv8
341         vrintm.f64.f64 d0, d0
342 @ CHECK-V7: error: instruction requires: FPARMv8
343 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
344