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 276