Home | History | Annotate | Download | only in ARM
      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 
    345