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 18fp: 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 154nofp: 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