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 -check-prefix CHECK
      3 @ RUN: not llvm-mc -triple armv8-eabi -filetype asm -o /dev/null 2>&1 %s \
      4 @ RUN:   | FileCheck %s -check-prefix CHECK-V8 -check-prefix CHECK
      5 @ RUN: not llvm-mc -triple thumbv7-eabi -filetype asm -o /dev/null 2>&1 %s \
      6 @ RUN:   | FileCheck %s -check-prefix CHECK-V7 -check-prefix CHECK
      7 @ RUN: not llvm-mc -triple thumbv8-eabi -filetype asm -o /dev/null 2>&1 %s \
      8 @ RUN:   | FileCheck %s -check-prefix CHECK-V8 -check-prefix CHECK
      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: error: instruction requires: FPARMv8
    157 
    158 	vselgt.f32 s0, s0, s0
    159 @ CHECK: error: instruction requires: FPARMv8
    160 	vselge.f32 s0, s0, s0
    161 @ CHECK: error: instruction requires: FPARMv8
    162 	vseleq.f32 s0, s0, s0
    163 @ CHECK: error: instruction requires: FPARMv8
    164 	vselvs.f32 s0, s0, s0
    165 @ CHECK: error: instruction requires: FPARMv8
    166 	vmaxnm.f32 s0, s0, s0
    167 @ CHECK: error: instruction requires: FPARMv8
    168 	vminnm.f32 s0, s0, s0
    169 @ CHECK: error: instruction requires: FPARMv8
    170 
    171 	vselgt.f64 d0, d0, d0
    172 @ CHECK: error: instruction requires: FPARMv8
    173 	vselge.f64 d0, d0, d0
    174 @ CHECK: error: instruction requires: FPARMv8
    175 	vseleq.f64 d0, d0, d0
    176 @ CHECK: error: instruction requires: FPARMv8
    177 	vselvs.f64 d0, d0, d0
    178 @ CHECK: error: instruction requires: FPARMv8
    179 	vmaxnm.f64 d0, d0, d0
    180 @ CHECK: error: instruction requires: FPARMv8
    181 	vminnm.f64 d0, d0, d0
    182 @ CHECK: error: instruction requires: FPARMv8
    183 
    184 	vcvtb.f64.f16 d0, s0
    185 @ CHECK: error: instruction requires: FPARMv8
    186 	vcvtb.f16.f64 s0, d0
    187 @ CHECK: error: instruction requires: FPARMv8
    188 	vcvtt.f64.f16 d0, s0
    189 @ CHECK: error: instruction requires: FPARMv8
    190 	vcvtt.f16.f64 s0, d0
    191 @ CHECK: error: instruction requires: FPARMv8
    192 
    193 	vcvta.s32.f32 s0, s0
    194 @ CHECK: error: instruction requires: FPARMv8
    195 	vcvta.u32.f32 s0, s0
    196 @ CHECK: error: instruction requires: FPARMv8
    197 	vcvta.s32.f64 s0, d0
    198 @ CHECK: error: instruction requires: FPARMv8
    199 	vcvta.u32.f64 s0, d0
    200 @ CHECK: error: instruction requires: FPARMv8
    201 	vcvtn.s32.f32 s0, s0
    202 @ CHECK: error: instruction requires: FPARMv8
    203 	vcvtn.u32.f32 s0, s0
    204 @ CHECK: error: instruction requires: FPARMv8
    205 	vcvtn.s32.f64 s0, d0
    206 @ CHECK: error: instruction requires: FPARMv8
    207 	vcvtn.u32.f64 s0, d0
    208 @ CHECK: error: instruction requires: FPARMv8
    209 	vcvtp.s32.f32 s0, s0
    210 @ CHECK: error: instruction requires: FPARMv8
    211 	vcvtp.u32.f32 s0, s0
    212 @ CHECK: error: instruction requires: FPARMv8
    213 	vcvtp.s32.f64 s0, d0
    214 @ CHECK: error: instruction requires: FPARMv8
    215 	vcvtp.u32.f64 s0, d0
    216 @ CHECK: error: instruction requires: FPARMv8
    217 	vcvtm.s32.f32 s0, s0
    218 @ CHECK: error: instruction requires: FPARMv8
    219 	vcvtm.u32.f32 s0, s0
    220 @ CHECK: error: instruction requires: FPARMv8
    221 	vcvtm.s32.f64 s0, d0
    222 @ CHECK: error: instruction requires: FPARMv8
    223 	vcvtm.u32.f64 s0, d0
    224 @ CHECK: error: instruction requires: FPARMv8
    225 
    226 	vrintz.f32 s0, s1
    227 @ CHECK: error: instruction requires: FPARMv8
    228 	vrintz.f64 d0, d1
    229 @ CHECK: error: instruction requires: FPARMv8
    230 	vrintz.f32.f32 s0, s0
    231 @ CHECK: error: instruction requires: FPARMv8
    232 	vrintz.f64.f64 d0, d0
    233 @ CHECK: error: instruction requires: FPARMv8
    234 	vrintr.f32 s0, s1
    235 @ CHECK: error: instruction requires: FPARMv8
    236 	vrintr.f64 d0, d1
    237 @ CHECK: error: instruction requires: FPARMv8
    238 	vrintr.f32.f32 s0, s0
    239 @ CHECK: error: instruction requires: FPARMv8
    240 	vrintr.f64.f64 d0, d0
    241 @ CHECK: error: instruction requires: FPARMv8
    242 	vrintx.f32 s0, s1
    243 @ CHECK: error: instruction requires: FPARMv8
    244 	vrintx.f64 d0, d1
    245 @ CHECK: error: instruction requires: FPARMv8
    246 	vrintx.f32.f32 s0, s0
    247 @ CHECK: error: instruction requires: FPARMv8
    248 	vrintx.f64.f64 d0, d0
    249 @ CHECK: error: instruction requires: FPARMv8
    250 
    251 	vrinta.f32 s0, s0
    252 @ CHECK: error: instruction requires: FPARMv8
    253 	vrinta.f64 d0, d0
    254 @ CHECK: error: instruction requires: FPARMv8
    255 	vrinta.f32.f32 s0, s0
    256 @ CHECK: error: instruction requires: FPARMv8
    257 	vrinta.f64.f64 d0, d0
    258 @ CHECK: error: instruction requires: FPARMv8
    259 	vrintn.f32 s0, s0
    260 @ CHECK: error: instruction requires: FPARMv8
    261 	vrintn.f64 d0, d0
    262 @ CHECK: error: instruction requires: FPARMv8
    263 	vrintn.f32.f32 s0, s0
    264 @ CHECK: error: instruction requires: FPARMv8
    265 	vrintn.f64.f64 d0, d0
    266 @ CHECK: error: instruction requires: FPARMv8
    267 	vrintp.f32 s0, s0
    268 @ CHECK: error: instruction requires: FPARMv8
    269 	vrintp.f64 d0, d0
    270 @ CHECK: error: instruction requires: FPARMv8
    271 	vrintp.f32.f32 s0, s0
    272 @ CHECK: error: instruction requires: FPARMv8
    273 	vrintp.f64.f64 d0, d0
    274 @ CHECK: error: instruction requires: FPARMv8
    275 	vrintm.f32 s0, s0
    276 @ CHECK: error: instruction requires: FPARMv8
    277 	vrintm.f64 d0, d0
    278 @ CHECK: error: instruction requires: FPARMv8
    279 	vrintm.f32.f32 s0, s0
    280 @ CHECK: error: instruction requires: FPARMv8
    281 	vrintm.f64.f64 d0, d0
    282 @ CHECK: error: instruction requires: FPARMv8
    283 
    284