ARM: implement support for the UDF mnemonic
[oota-llvm.git] / test / MC / ARM / directive-arch_extension-simd.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 simd
13 @ CHECK-V7: error: architectural extension 'simd' is not allowed for the current base architecture
14 @ CHECK-V7-NEXT:        .arch_extension simd
15 @ CHECK-V7-NEXT:                     ^
16
17         .type simd,%function
18 simd:
19         vmaxnm.f32 s0, s0, s0
20 @ CHECK-V7: error: instruction requires: FPARMv8
21         vminnm.f32 s0, s0, s0
22 @ CHECK-V7: error: instruction requires: FPARMv8
23
24         vmaxnm.f64 d0, d0, d0
25 @ CHECK-V7: error: instruction requires: FPARMv8
26         vminnm.f64 d0, d0, d0
27 @ CHECK-V7: error: instruction requires: FPARMv8
28
29         vcvta.s32.f32 s0, s0
30 @ CHECK-V7: error: instruction requires: FPARMv8
31         vcvta.u32.f32 s0, s0
32 @ CHECK-V7: error: instruction requires: FPARMv8
33         vcvta.s32.f64 s0, d0
34 @ CHECK-V7: error: instruction requires: FPARMv8
35         vcvta.u32.f64 s0, d0
36 @ CHECK-V7: error: instruction requires: FPARMv8
37         vcvtn.s32.f32 s0, s0
38 @ CHECK-V7: error: instruction requires: FPARMv8
39         vcvtn.u32.f32 s0, s0
40 @ CHECK-V7: error: instruction requires: FPARMv8
41         vcvtn.s32.f64 s0, d0
42 @ CHECK-V7: error: instruction requires: FPARMv8
43         vcvtn.u32.f64 s0, d0
44 @ CHECK-V7: error: instruction requires: FPARMv8
45         vcvtp.s32.f32 s0, s0
46 @ CHECK-V7: error: instruction requires: FPARMv8
47         vcvtp.u32.f32 s0, s0
48 @ CHECK-V7: error: instruction requires: FPARMv8
49         vcvtp.s32.f64 s0, d0
50 @ CHECK-V7: error: instruction requires: FPARMv8
51         vcvtp.u32.f64 s0, d0
52 @ CHECK-V7: error: instruction requires: FPARMv8
53         vcvtm.s32.f32 s0, s0
54 @ CHECK-V7: error: instruction requires: FPARMv8
55         vcvtm.u32.f32 s0, s0
56 @ CHECK-V7: error: instruction requires: FPARMv8
57         vcvtm.s32.f64 s0, d0
58 @ CHECK-V7: error: instruction requires: FPARMv8
59         vcvtm.u32.f64 s0, d0
60 @ CHECK-V7: error: instruction requires: FPARMv8
61
62         vrintz.f32 s0, s1
63 @ CHECK-V7: error: instruction requires: FPARMv8
64         vrintz.f64 d0, d1
65 @ CHECK-V7: error: instruction requires: FPARMv8
66         vrintz.f32.f32 s0, s0
67 @ CHECK-V7: error: instruction requires: FPARMv8
68         vrintz.f64.f64 d0, d0
69 @ CHECK-V7: error: instruction requires: FPARMv8
70         vrintr.f32 s0, s1
71 @ CHECK-V7: error: instruction requires: FPARMv8
72         vrintr.f64 d0, d1
73 @ CHECK-V7: error: instruction requires: FPARMv8
74         vrintr.f32.f32 s0, s0
75 @ CHECK-V7: error: instruction requires: FPARMv8
76         vrintr.f64.f64 d0, d0
77 @ CHECK-V7: error: instruction requires: FPARMv8
78         vrintx.f32 s0, s1
79 @ CHECK-V7: error: instruction requires: FPARMv8
80         vrintx.f64 d0, d1
81 @ CHECK-V7: error: instruction requires: FPARMv8
82         vrintx.f32.f32 s0, s0
83 @ CHECK-V7: error: instruction requires: FPARMv8
84         vrintx.f64.f64 d0, d0
85 @ CHECK-V7: error: instruction requires: FPARMv8
86
87         vrinta.f32 s0, s0
88 @ CHECK-V7: error: instruction requires: FPARMv8
89         vrinta.f64 d0, d0
90 @ CHECK-V7: error: instruction requires: FPARMv8
91         vrinta.f32.f32 s0, s0
92 @ CHECK-V7: error: instruction requires: FPARMv8
93         vrinta.f64.f64 d0, d0
94 @ CHECK-V7: error: instruction requires: FPARMv8
95         vrintn.f32 s0, s0
96 @ CHECK-V7: error: instruction requires: FPARMv8
97         vrintn.f64 d0, d0
98 @ CHECK-V7: error: instruction requires: FPARMv8
99         vrintn.f32.f32 s0, s0
100 @ CHECK-V7: error: instruction requires: FPARMv8
101         vrintn.f64.f64 d0, d0
102 @ CHECK-V7: error: instruction requires: FPARMv8
103         vrintp.f32 s0, s0
104 @ CHECK-V7: error: instruction requires: FPARMv8
105         vrintp.f64 d0, d0
106 @ CHECK-V7: error: instruction requires: FPARMv8
107         vrintp.f32.f32 s0, s0
108 @ CHECK-V7: error: instruction requires: FPARMv8
109         vrintp.f64.f64 d0, d0
110 @ CHECK-V7: error: instruction requires: FPARMv8
111         vrintm.f32 s0, s0
112 @ CHECK-V7: error: instruction requires: FPARMv8
113         vrintm.f64 d0, d0
114 @ CHECK-V7: error: instruction requires: FPARMv8
115         vrintm.f32.f32 s0, s0
116 @ CHECK-V7: error: instruction requires: FPARMv8
117         vrintm.f64.f64 d0, d0
118 @ CHECK-V7: error: instruction requires: FPARMv8
119
120         .arch_extension nosimd
121 @ CHECK-V7: error: architectural extension 'simd' is not allowed for the current base architecture
122 @ CHECK-V7-NEXT:        .arch_extension nosimd
123 @ CHECK-V7-NEXT:                     ^
124
125         .type nosimd,%function
126 nosimd:
127         vmaxnm.f32 s0, s0, s0
128 @ CHECK-V7: error: instruction requires: FPARMv8
129 @ CHECK-V8: error: instruction requires: FPARMv8
130         vminnm.f32 s0, s0, s0
131 @ CHECK-V7: error: instruction requires: FPARMv8
132 @ CHECK-V8: error: instruction requires: FPARMv8
133
134         vmaxnm.f64 d0, d0, d0
135 @ CHECK-V7: error: instruction requires: FPARMv8
136 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
137         vminnm.f64 d0, d0, d0
138 @ CHECK-V7: error: instruction requires: FPARMv8
139 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
140
141         vcvta.s32.f32 s0, s0
142 @ CHECK-V7: error: instruction requires: FPARMv8
143 @ CHECK-V8: error: instruction requires: FPARMv8
144         vcvta.u32.f32 s0, s0
145 @ CHECK-V7: error: instruction requires: FPARMv8
146 @ CHECK-V8: error: instruction requires: FPARMv8
147         vcvta.s32.f64 s0, d0
148 @ CHECK-V7: error: instruction requires: FPARMv8
149 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
150         vcvta.u32.f64 s0, d0
151 @ CHECK-V7: error: instruction requires: FPARMv8
152 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
153         vcvtn.s32.f32 s0, s0
154 @ CHECK-V7: error: instruction requires: FPARMv8
155 @ CHECK-V8: error: instruction requires: FPARMv8
156         vcvtn.u32.f32 s0, s0
157 @ CHECK-V7: error: instruction requires: FPARMv8
158 @ CHECK-V8: error: instruction requires: FPARMv8
159         vcvtn.s32.f64 s0, d0
160 @ CHECK-V7: error: instruction requires: FPARMv8
161 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
162         vcvtn.u32.f64 s0, d0
163 @ CHECK-V7: error: instruction requires: FPARMv8
164 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
165         vcvtp.s32.f32 s0, s0
166 @ CHECK-V7: error: instruction requires: FPARMv8
167 @ CHECK-V8: error: instruction requires: FPARMv8
168         vcvtp.u32.f32 s0, s0
169 @ CHECK-V7: error: instruction requires: FPARMv8
170 @ CHECK-V8: error: instruction requires: FPARMv8
171         vcvtp.s32.f64 s0, d0
172 @ CHECK-V7: error: instruction requires: FPARMv8
173 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
174         vcvtp.u32.f64 s0, d0
175 @ CHECK-V7: error: instruction requires: FPARMv8
176 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
177         vcvtm.s32.f32 s0, s0
178 @ CHECK-V7: error: instruction requires: FPARMv8
179 @ CHECK-V8: error: instruction requires: FPARMv8
180         vcvtm.u32.f32 s0, s0
181 @ CHECK-V7: error: instruction requires: FPARMv8
182 @ CHECK-V8: error: instruction requires: FPARMv8
183         vcvtm.s32.f64 s0, d0
184 @ CHECK-V7: error: instruction requires: FPARMv8
185 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
186         vcvtm.u32.f64 s0, d0
187 @ CHECK-V7: error: instruction requires: FPARMv8
188 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
189
190         vrintz.f32 s0, s1
191 @ CHECK-V7: error: instruction requires: FPARMv8
192 @ CHECK-V8: error: instruction requires: FPARMv8
193         vrintz.f64 d0, d1
194 @ CHECK-V7: error: instruction requires: FPARMv8
195 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
196         vrintz.f32.f32 s0, s0
197 @ CHECK-V7: error: instruction requires: FPARMv8
198 @ CHECK-V8: error: instruction requires: FPARMv8
199         vrintz.f64.f64 d0, d0
200 @ CHECK-V7: error: instruction requires: FPARMv8
201 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
202         vrintr.f32 s0, s1
203 @ CHECK-V7: error: instruction requires: FPARMv8
204 @ CHECK-V8: error: instruction requires: FPARMv8
205         vrintr.f64 d0, d1
206 @ CHECK-V7: error: instruction requires: FPARMv8
207 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
208         vrintr.f32.f32 s0, s0
209 @ CHECK-V7: error: instruction requires: FPARMv8
210 @ CHECK-V8: error: instruction requires: FPARMv8
211         vrintr.f64.f64 d0, d0
212 @ CHECK-V7: error: instruction requires: FPARMv8
213 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
214         vrintx.f32 s0, s1
215 @ CHECK-V7: error: instruction requires: FPARMv8
216 @ CHECK-V8: error: instruction requires: FPARMv8
217         vrintx.f64 d0, d1
218 @ CHECK-V7: error: instruction requires: FPARMv8
219 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
220         vrintx.f32.f32 s0, s0
221 @ CHECK-V7: error: instruction requires: FPARMv8
222 @ CHECK-V8: error: instruction requires: FPARMv8
223         vrintx.f64.f64 d0, d0
224 @ CHECK-V7: error: instruction requires: FPARMv8
225 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
226
227         vrinta.f32 s0, s0
228 @ CHECK-V7: error: instruction requires: FPARMv8
229 @ CHECK-V8: error: instruction requires: FPARMv8
230         vrinta.f64 d0, d0
231 @ CHECK-V7: error: instruction requires: FPARMv8
232 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
233         vrinta.f32.f32 s0, s0
234 @ CHECK-V7: error: instruction requires: FPARMv8
235 @ CHECK-V8: error: instruction requires: FPARMv8
236         vrinta.f64.f64 d0, d0
237 @ CHECK-V7: error: instruction requires: FPARMv8
238 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
239         vrintn.f32 s0, s0
240 @ CHECK-V7: error: instruction requires: FPARMv8
241 @ CHECK-V8: error: instruction requires: FPARMv8
242         vrintn.f64 d0, d0
243 @ CHECK-V7: error: instruction requires: FPARMv8
244 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
245         vrintn.f32.f32 s0, s0
246 @ CHECK-V7: error: instruction requires: FPARMv8
247 @ CHECK-V8: error: instruction requires: FPARMv8
248         vrintn.f64.f64 d0, d0
249 @ CHECK-V7: error: instruction requires: FPARMv8
250 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
251         vrintp.f32 s0, s0
252 @ CHECK-V7: error: instruction requires: FPARMv8
253 @ CHECK-V8: error: instruction requires: FPARMv8
254         vrintp.f64 d0, d0
255 @ CHECK-V7: error: instruction requires: FPARMv8
256 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
257         vrintp.f32.f32 s0, s0
258 @ CHECK-V7: error: instruction requires: FPARMv8
259 @ CHECK-V8: error: instruction requires: FPARMv8
260         vrintp.f64.f64 d0, d0
261 @ CHECK-V7: error: instruction requires: FPARMv8
262 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
263         vrintm.f32 s0, s0
264 @ CHECK-V7: error: instruction requires: FPARMv8
265 @ CHECK-V8: error: instruction requires: FPARMv8
266         vrintm.f64 d0, d0
267 @ CHECK-V7: error: instruction requires: FPARMv8
268 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
269         vrintm.f32.f32 s0, s0
270 @ CHECK-V7: error: instruction requires: FPARMv8
271 @ CHECK-V8: error: instruction requires: FPARMv8
272         vrintm.f64.f64 d0, d0
273 @ CHECK-V7: error: instruction requires: FPARMv8
274 @ CHECK-V8: error: instruction requires: double precision VFP FPARMv8
275