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