1// RUN: not llvm-mc -triple aarch64-none-eabi -mattr=-fp-armv8 < %s 2>&1 | FileCheck %s --implicit-check-not error 2 3 ldr s0, [x0] 4// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 5 str q0, [x0] 6// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 7 8 fmov d0, xzr 9// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 10 11 ldnp s0, s1, [x0, #16] 12// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 13 ldnp d0, d1, [x0, #16] 14// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 15 ldnp q0, q1, [x0, #16] 16// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 17 18 ldp s0, s1, [x0, #16] 19// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 20 ldp d0, d1, [x0, #16] 21// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 22 ldp q0, q1, [x0, #16] 23// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 24 25 ldp s0, s1, [x0], #16 26// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 27 ldp d0, d1, [x0], #16 28// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 29 ldp q0, q1, [x0], #16 30// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 31 32 ldp s0, s1, [x0, #16]! 33// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 34 ldp d0, d1, [x0, #16]! 35// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 36 ldp q0, q1, [x0, #16]! 37// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 38 39 40 ldr b0, [x0], #16 41// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 42 ldr h0, [x0], #16 43// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 44 ldr s0, [x0], #16 45// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 46 ldr d0, [x0], #16 47// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 48 ldr q0, [x0], #16 49// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 50 51 ldr b0, [x0, #16]! 52// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 53 ldr h0, [x0, #16]! 54// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 55 ldr s0, [x0, #16]! 56// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 57 ldr d0, [x0, #16]! 58// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 59 ldr q0, [x0, #16]! 60// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 61 62 ldr b0, [x0, x1] 63// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 64 ldr h0, [x0, x1] 65// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 66 ldr s0, [x0, x1] 67// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 68 ldr d0, [x0, x1] 69// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 70 ldr q0, [x0, x1] 71// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 72 73 ldr b0, [x0, w1, sxtw] 74// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 75 ldr h0, [x0, w1, sxtw] 76// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 77 ldr s0, [x0, w1, sxtw] 78// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 79 ldr d0, [x0, w1, sxtw] 80// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 81 ldr q0, [x0, w1, sxtw] 82// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 83 84 ldr b0, [x0, #16] 85// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 86 ldr h0, [x0, #16] 87// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 88 ldr s0, [x0, #16] 89// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 90 ldr d0, [x0, #16] 91// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 92 ldr q0, [x0, #16] 93// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 94 95label: 96 ldr s0, label 97// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 98 ldr d0, label 99// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 100 ldr q0, label 101// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 102 103 stnp s0, s1, [x0, #16] 104// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 105 stnp d0, d1, [x0, #16] 106// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 107 stnp q0, q1, [x0, #16] 108// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 109 110 stp s0, s1, [x0, #16] 111// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 112 stp d0, d1, [x0, #16] 113// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 114 stp q0, q1, [x0, #16] 115// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 116 117 stp s0, s1, [x0], #16 118// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 119 stp d0, d1, [x0], #16 120// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 121 stp q0, q1, [x0], #16 122// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 123 124 stp s0, s1, [x0, #16]! 125// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 126 stp d0, d1, [x0, #16]! 127// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 128 stp q0, q1, [x0, #16]! 129// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 130 131 str b0, [x0], #16 132// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 133 str h0, [x0], #16 134// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 135 str s0, [x0], #16 136// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 137 str d0, [x0], #16 138// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 139 str q0, [x0], #16 140// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 141 142 str b0, [x0, #16]! 143// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 144 str h0, [x0, #16]! 145// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 146 str s0, [x0, #16]! 147// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 148 str d0, [x0, #16]! 149// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 150 str q0, [x0, #16]! 151// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 152 153 str b0, [x0, #16] 154// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 155 str h0, [x0, #16] 156// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 157 str s0, [x0, #16] 158// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 159 str d0, [x0, #16] 160// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 161 str q0, [x0, #16] 162// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 163 164 str b0, [x0, x1] 165// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 166 str h0, [x0, x1] 167// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 168 str s0, [x0, x1] 169// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 170 str d0, [x0, x1] 171// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 172 str q0, [x0, x1] 173// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 174 175 str b0, [x0, w1, sxtw] 176// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 177 str h0, [x0, w1, sxtw] 178// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 179 str s0, [x0, w1, sxtw] 180// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 181 str d0, [x0, w1, sxtw] 182// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 183 str q0, [x0, w1, sxtw] 184// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 185 186 mrs x0, FPCR 187// CHECK: [[@LINE-1]]:11: error: expected readable system register 188 mrs x0, FPSR 189// CHECK: [[@LINE-1]]:11: error: expected readable system register 190 msr FPCR, x0 191// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate 192 msr FPSR, x0 193// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate 194 195 ldr s0, [x0, #1] 196// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 197 str q0, [x0, #1] 198// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 199 200 fmov s0, #0.0 201// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 202 fmov d0, #0.0 203// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 204 205 mvn v0.8b, v1.8b 206// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 207 mvn v0.16b, v1.16b 208// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 209 210 mov v0.16b, v1.16b 211// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 212 mov v0.8h, v1.8h 213// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 214 mov v0.4s, v1.4s 215// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 216 mov v0.2d, v1.2d 217// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 218 219 mov v0.8b, v1.8b 220// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 221 mov v0.4h, v1.4h 222// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 223 mov v0.2s, v1.2s 224// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 225 mov v0.1d, v1.1d 226// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 227 228 faclt v0.4h, v1.4h, v2.4h 229// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon 230 faclt v0.8h, v1.8h, v2.8h 231// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon 232 faclt v0.2s, v1.2s, v2.2s 233// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 234 faclt v0.4s, v1.4s, v2.4s 235// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 236 faclt v0.2d, v1.2d, v2.2d 237// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 238 239 cmls d0, d1, d2 240// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 241 cmle d0, d1, d2 242// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 243 cmlo d0, d1, d2 244// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 245 cmlt d0, d1, d2 246// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 247 248 fcmle s0, s1, s2 249// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 250 fcmle d0, d1, d2 251// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 252 fcmlt s0, s1, s2 253// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 254 fcmlt d0, d1, d2 255// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 256 facle s0, s1, s2 257// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 258 facle d0, d1, d2 259// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 260 faclt s0, s1, s2 261// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 262 faclt d0, d1, d2 263// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8 264 265 bic v0.4h, #42 266// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 267 bic v0.8h, #42 268// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 269 bic v0.2s, #42 270// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 271 bic v0.4s, #42 272// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 273 274 bic.4h v0, #42 275// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 276 bic.8h v0, #42 277// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 278 bic.2s v0, #42 279// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 280 bic.4s v0, #42 281// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 282 283 orr v0.4h, #42 284// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 285 orr v0.8h, #42 286// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 287 orr v0.2s, #42 288// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 289 orr v0.4s, #42 290// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 291 292 orr.4h v0, #42 293// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 294 orr.8h v0, #42 295// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 296 orr.2s v0, #42 297// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 298 orr.4s v0, #42 299// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 300 301 movi v0.4h, #42 302// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 303 movi v0.8h, #42 304// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 305 movi v0.2s, #42 306// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 307 movi v0.4s, #42 308// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 309 310 movi.4h v0, #42 311// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 312 movi.8h v0, #42 313// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 314 movi.2s v0, #42 315// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 316 movi.4s v0, #42 317// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 318 319 mvni v0.4h, #42 320// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 321 mvni v0.8h, #42 322// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 323 mvni v0.2s, #42 324// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 325 mvni v0.4s, #42 326// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 327 328 mvni.4h v0, #42 329// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 330 mvni.8h v0, #42 331// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 332 mvni.2s v0, #42 333// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 334 mvni.4s v0, #42 335// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 336 337 sxtl.8h v0, v1 338// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 339 sxtl.4s v0, v1 340// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 341 sxtl.2d v0, v1 342// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 343 344 sxtl2.8h v0, v1 345// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 346 sxtl2.4s v0, v1 347// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 348 sxtl2.2d v0, v1 349// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 350 351 uxtl.8h v0, v1 352// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 353 uxtl.4s v0, v1 354// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 355 uxtl.2d v0, v1 356// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 357 358 uxtl2.8h v0, v1 359// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 360 uxtl2.4s v0, v1 361// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 362 uxtl2.2d v0, v1 363// CHECK: [[@LINE-1]]:3: error: instruction requires: neon 364