// RUN: not llvm-mc -triple aarch64-none-eabi -mattr=-fp-armv8 < %s 2>&1 | FileCheck %s --implicit-check-not error
ldr s0, [x0]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fmov d0, xzr
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldnp s0, s1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldnp d0, d1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldnp q0, q1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp s0, s1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp d0, d1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp q0, q1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp s0, s1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp d0, d1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp q0, q1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp s0, s1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp d0, d1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldp q0, q1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr b0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr h0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr s0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr b0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr h0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr s0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr b0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr h0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr s0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr b0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr h0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr s0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr b0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr h0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr s0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
label:
ldr s0, label
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr d0, label
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
ldr q0, label
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stnp s0, s1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stnp d0, d1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stnp q0, q1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp s0, s1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp d0, d1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp q0, q1, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp s0, s1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp d0, d1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp q0, q1, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp s0, s1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp d0, d1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
stp q0, q1, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str b0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str h0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str s0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str d0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0], #16
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str b0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str h0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str s0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str d0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0, #16]!
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str b0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str h0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str s0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str d0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0, #16]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str b0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str h0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str s0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str d0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0, x1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str b0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str h0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str s0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str d0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0, w1, sxtw]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
mrs x0, FPCR
// CHECK: [[@LINE-1]]:11: error: expected readable system register
mrs x0, FPSR
// CHECK: [[@LINE-1]]:11: error: expected readable system register
msr FPCR, x0
// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate
msr FPSR, x0
// CHECK: [[@LINE-1]]:7: error: expected writable system register or pstate
ldr s0, [x0, #1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
str q0, [x0, #1]
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fmov s0, #0.0
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fmov d0, #0.0
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
mvn v0.8b, v1.8b
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvn v0.16b, v1.16b
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.16b, v1.16b
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.8h, v1.8h
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.4s, v1.4s
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.2d, v1.2d
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.8b, v1.8b
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.4h, v1.4h
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.2s, v1.2s
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mov v0.1d, v1.1d
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
faclt v0.4h, v1.4h, v2.4h
// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon
faclt v0.8h, v1.8h, v2.8h
// CHECK: [[@LINE-1]]:3: error: instruction requires: fullfp16 neon
faclt v0.2s, v1.2s, v2.2s
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
faclt v0.4s, v1.4s, v2.4s
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
faclt v0.2d, v1.2d, v2.2d
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
cmls d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
cmle d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
cmlo d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
cmlt d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
fcmle s0, s1, s2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fcmle d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fcmlt s0, s1, s2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
fcmlt d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
facle s0, s1, s2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
facle d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
faclt s0, s1, s2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
faclt d0, d1, d2
// CHECK: [[@LINE-1]]:3: error: instruction requires: fp-armv8
bic v0.4h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic v0.8h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic v0.2s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic v0.4s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic.4h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic.8h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic.2s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
bic.4s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr v0.4h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr v0.8h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr v0.2s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr v0.4s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr.4h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr.8h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr.2s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
orr.4s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi v0.4h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi v0.8h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi v0.2s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi v0.4s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi.4h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi.8h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi.2s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
movi.4s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni v0.4h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni v0.8h, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni v0.2s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni v0.4s, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni.4h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni.8h v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni.2s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
mvni.4s v0, #42
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl.8h v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl.4s v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl.2d v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl2.8h v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl2.4s v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
sxtl2.2d v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl.8h v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl.4s v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl.2d v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl2.8h v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl2.4s v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon
uxtl2.2d v0, v1
// CHECK: [[@LINE-1]]:3: error: instruction requires: neon