# RUN: llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding %s | FileCheck %s
# RUN: not llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -show-encoding %s &> %t
# RUN: FileCheck --check-prefix=CHECK-NOMVE < %t %s

# CHECK: vrintn.f16 q1, q0  @ encoding: [0xb6,0xff,0x40,0x24]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0x40,0x24]

# CHECK: vrintn.f32 q0, q4  @ encoding: [0xba,0xff,0x48,0x04]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0x48,0x04]

# CHECK: vrinta.f16 q0, q1  @ encoding: [0xb6,0xff,0x42,0x05]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0x42,0x05]

# CHECK: vrinta.f32 q1, q3  @ encoding: [0xba,0xff,0x46,0x25]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0x46,0x25]

# CHECK: vrintm.f16 q0, q5  @ encoding: [0xb6,0xff,0xca,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0xca,0x06]

# CHECK: vrintm.f32 q0, q4  @ encoding: [0xba,0xff,0xc8,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0xc8,0x06]

# CHECK: vrintp.f16 q1, q0  @ encoding: [0xb6,0xff,0xc0,0x27]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0xc0,0x27]

# CHECK: vrintp.f32 q0, q1  @ encoding: [0xba,0xff,0xc2,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0xc2,0x07]

# CHECK: vrintx.f16 q1, q2  @ encoding: [0xb6,0xff,0xc4,0x24]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0xc4,0x24]

# CHECK: vrintx.f32 q1, q1  @ encoding: [0xba,0xff,0xc2,0x24]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0xc2,0x24]

# CHECK: vrintz.f16 q1, q6  @ encoding: [0xb6,0xff,0xcc,0x25]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xff,0xcc,0x25]

# CHECK: vrintz.f32 q1, q0  @ encoding: [0xba,0xff,0xc0,0x25]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xba,0xff,0xc0,0x25]

# CHECK: vrintr.f32 s0, s1 @ encoding: [0xb6,0xee,0x60,0x0a]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xee,0x60,0x0a]

# CHECK: vrintr.f64 d0, d1 @ encoding: [0xb6,0xee,0x41,0x0b]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb6,0xee,0x41,0x0b]

# CHECK: vmul.f16 q2, q1, q3  @ encoding: [0x12,0xff,0x56,0x4d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x12,0xff,0x56,0x4d]

# CHECK: vmul.f32 q0, q0, q5  @ encoding: [0x00,0xff,0x5a,0x0d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x00,0xff,0x5a,0x0d]

# CHECK: vfma.f16 q0, q2, q3  @ encoding: [0x14,0xef,0x56,0x0c]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x14,0xef,0x56,0x0c]

# CHECK: vfma.f32 q0, q3, q7  @ encoding: [0x06,0xef,0x5e,0x0c]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x06,0xef,0x5e,0x0c]

# CHECK: vfms.f16 q0, q2, q5  @ encoding: [0x34,0xef,0x5a,0x0c]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x34,0xef,0x5a,0x0c]

# CHECK: vfms.f32 q1, q1, q2  @ encoding: [0x22,0xef,0x54,0x2c]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x22,0xef,0x54,0x2c]

# CHECK: vadd.f16 q0, q0, q5  @ encoding: [0x10,0xef,0x4a,0x0d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x10,0xef,0x4a,0x0d]

# CHECK: vadd.f32 q1, q3, q0  @ encoding: [0x06,0xef,0x40,0x2d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x06,0xef,0x40,0x2d]

# CHECK: vcadd.f16 q2, q1, q7, #90  @ encoding: [0x82,0xfc,0x4e,0x48]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x82,0xfc,0x4e,0x48]

# CHECK: vcadd.f16 q2, q5, q7, #270  @ encoding: [0x8a,0xfd,0x4e,0x48]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8a,0xfd,0x4e,0x48]

# CHECK: vcadd.f32 q0, q4, q7, #90  @ encoding: [0x98,0xfc,0x4e,0x08]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x98,0xfc,0x4e,0x08]

# CHECK: vcadd.f32 q2, q2, q3, #270  @ encoding: [0x94,0xfd,0x46,0x48]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x94,0xfd,0x46,0x48]

# CHECK: vabd.f16 q0, q0, q6  @ encoding: [0x30,0xff,0x4c,0x0d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x30,0xff,0x4c,0x0d]

# CHECK: vabd.f32 q0, q1, q4  @ encoding: [0x22,0xff,0x48,0x0d]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x22,0xff,0x48,0x0d]

# CHECK: vcvt.f16.s16 q0, q1  @ encoding: [0xb7,0xff,0x42,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb7,0xff,0x42,0x06]

# CHECK: vcvt.f16.u16 q0, q4  @ encoding: [0xb7,0xff,0xc8,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb7,0xff,0xc8,0x06]

# CHECK: vcvt.s16.f16 q0, q0  @ encoding: [0xb7,0xff,0x40,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb7,0xff,0x40,0x07]

# CHECK: vcvt.u16.f16 q0, q0  @ encoding: [0xb7,0xff,0xc0,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb7,0xff,0xc0,0x07]

# CHECK: vcvt.f32.s32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0x40,0x06]

# CHECK: vcvt.f32.u32 q0, q0  @ encoding: [0xbb,0xff,0xc0,0x06]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0xc0,0x06]

# CHECK: vcvt.s32.f32 q0, q0  @ encoding: [0xbb,0xff,0x40,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0x40,0x07]

# CHECK: vcvt.u32.f32 q0, q2  @ encoding: [0xbb,0xff,0xc4,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0xc4,0x07]

# CHECK: vcvta.s16.f16 q0, q7  @ encoding: [0xb7,0xff,0x4e,0x00]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb7,0xff,0x4e,0x00]

# CHECK: vcvtn.u32.f32 q7, q6  @ encoding: [0xbb,0xff,0xcc,0xe1]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0xcc,0xe1]

# CHECK: vcvtp.s32.f32 q0, q7  @ encoding: [0xbb,0xff,0x4e,0x02]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0x4e,0x02]

# CHECK: vcvtm.u32.f32 q1, q4  @ encoding: [0xbb,0xff,0xc8,0x23]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xbb,0xff,0xc8,0x23]

# CHECK: vneg.f16 q0, q7  @ encoding: [0xb5,0xff,0xce,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb5,0xff,0xce,0x07]

# CHECK: vneg.f32 q0, q2  @ encoding: [0xb9,0xff,0xc4,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb9,0xff,0xc4,0x07]

# CHECK: vabs.f16 q0, q2  @ encoding: [0xb5,0xff,0x44,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb5,0xff,0x44,0x07]

# CHECK: vabs.f32 q0, q0  @ encoding: [0xb9,0xff,0x40,0x07]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xb9,0xff,0x40,0x07]

# CHECK: vmaxnma.f16 q1, q1  @ encoding: [0x3f,0xfe,0x83,0x2e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x3f,0xfe,0x83,0x2e]

# CHECK: vmaxnma.f32 q2, q6  @ encoding: [0x3f,0xee,0x8d,0x4e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x3f,0xee,0x8d,0x4e]

# CHECK: vminnma.f16 q0, q2  @ encoding: [0x3f,0xfe,0x85,0x1e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x3f,0xfe,0x85,0x1e]

# CHECK: vminnma.f32 q0, q1  @ encoding: [0x3f,0xee,0x83,0x1e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x3f,0xee,0x83,0x1e]
