# 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

[0x82 0xee 0x07 0x0f]
# CHECK: vabav.s8  r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

[0x92 0xee 0x07 0x0f]
# CHECK: vabav.s16 r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

[0xa2 0xee 0x07 0x0f]
# CHECK: vabav.s32 r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

[0x82 0xfe 0x07 0x0f]
# CHECK: vabav.u8 r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

[0x92 0xfe 0x07 0x0f]
# CHECK: vabav.u16  r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

[0xa2 0xfe 0x07 0x0f]
# CHECK: vabav.u32  r0, q1, q3
# CHECK-NOMVE: [[@LINE-2]]:2: warning: invalid instruction encoding

# CHECK: vaddv.s16 lr, q0  @ encoding: [0xf5,0xee,0x00,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf5,0xee,0x00,0xef]

# CHECK: vaddva.s16 lr, q0  @ encoding: [0xf5,0xee,0x20,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf5,0xee,0x20,0xef]

# CHECK: vpte.i8 eq, q0, q0 @ encoding: [0x41,0xfe,0x00,0x8f]
# CHECK-NOMVE: [[@LINE+5]]:2: warning: invalid instruction encoding
# CHECK: vaddvat.s16 lr, q0  @ encoding: [0xf5,0xee,0x20,0xef]
# CHECK-NOMVE: [[@LINE+4]]:2: warning: invalid instruction encoding
# CHECK: vaddvae.s16 lr, q0  @ encoding: [0xf5,0xee,0x20,0xef]
# CHECK-NOMVE: [[@LINE+3]]:2: warning: invalid instruction encoding
[0x41,0xfe,0x00,0x8f]
[0xf5,0xee,0x20,0xef]
[0xf5,0xee,0x20,0xef]

# CHECK: vaddlv.s32 r0, r9, q2  @ encoding: [0xc9,0xee,0x04,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xc9,0xee,0x04,0x0f]

# CHECK: vaddlv.u32 r0, r1, q1  @ encoding: [0x89,0xfe,0x02,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x89,0xfe,0x02,0x0f]

# CHECK: vminnmv.f16 lr, q3  @ encoding: [0xee,0xfe,0x86,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xee,0xfe,0x86,0xef]

# CHECK: vminnmv.f32 lr, q1  @ encoding: [0xee,0xee,0x82,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xee,0xee,0x82,0xef]

# CHECK: vminnmav.f16 lr, q0  @ encoding: [0xec,0xfe,0x80,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xec,0xfe,0x80,0xef]

# CHECK: vminnmav.f32 lr, q3  @ encoding: [0xec,0xee,0x86,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xec,0xee,0x86,0xef]

# CHECK: vpte.i8 eq, q0, q0    @ encoding: [0x41,0xfe,0x00,0x8f]
# CHECK-NOMVE: [[@LINE+5]]:2: warning: invalid instruction encoding
# CHECK: vminnmavt.f32 lr, q3  @ encoding: [0xec,0xee,0x86,0xef]
# CHECK-NOMVE: [[@LINE+4]]:2: warning: invalid instruction encoding
# CHECK: vminnmave.f32 lr, q3  @ encoding: [0xec,0xee,0x86,0xef]
# CHECK-NOMVE: [[@LINE+3]]:2: warning: invalid instruction encoding
[0x41,0xfe,0x00,0x8f]
[0xec,0xee,0x86,0xef]
[0xec,0xee,0x86,0xef]

# CHECK: vminv.s8 lr, q0  @ encoding: [0xe2,0xee,0x80,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe2,0xee,0x80,0xef]

# CHECK: vminv.s16 lr, q0  @ encoding: [0xe6,0xee,0x80,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe6,0xee,0x80,0xef]

# CHECK: vminv.s32 lr, q2  @ encoding: [0xea,0xee,0x84,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xea,0xee,0x84,0xef]

# CHECK: vminv.u8 r0, q0  @ encoding: [0xe2,0xfe,0x80,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe2,0xfe,0x80,0x0f]

# CHECK: vminv.u32 r10, q3  @ encoding: [0xea,0xfe,0x86,0xaf]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xea,0xfe,0x86,0xaf]

# CHECK: vminav.s16 r0, q0  @ encoding: [0xe4,0xee,0x80,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe4,0xee,0x80,0x0f]

# CHECK: vminav.s8 r0, q1  @ encoding: [0xe0,0xee,0x82,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe0,0xee,0x82,0x0f]

# CHECK: vminav.s32 lr, q1  @ encoding: [0xe8,0xee,0x82,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe8,0xee,0x82,0xef]

# CHECK: vmaxnmv.f16 lr, q1  @ encoding: [0xee,0xfe,0x02,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xee,0xfe,0x02,0xef]

# CHECK: vmaxnmv.f32 r10, q1  @ encoding: [0xee,0xee,0x02,0xaf]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xee,0xee,0x02,0xaf]

# CHECK: vmaxv.s8 lr, q4  @ encoding: [0xe2,0xee,0x08,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe2,0xee,0x08,0xef]

# CHECK: vmaxv.s16 lr, q0  @ encoding: [0xe6,0xee,0x00,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe6,0xee,0x00,0xef]

# CHECK: vmaxv.s32 r1, q1  @ encoding: [0xea,0xee,0x02,0x1f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xea,0xee,0x02,0x1f]

# CHECK: vmaxv.u8 r0, q4  @ encoding: [0xe2,0xfe,0x08,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe2,0xfe,0x08,0x0f]

# CHECK: vmaxv.u16 r0, q1  @ encoding: [0xe6,0xfe,0x02,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe6,0xfe,0x02,0x0f]

# CHECK: vmaxv.u32 r1, q0  @ encoding: [0xea,0xfe,0x00,0x1f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xea,0xfe,0x00,0x1f]

# CHECK: vmaxav.s8 lr, q6  @ encoding: [0xe0,0xee,0x0c,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe0,0xee,0x0c,0xef]

# CHECK: vmaxav.s16 r0, q6  @ encoding: [0xe4,0xee,0x0c,0x0f]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe4,0xee,0x0c,0x0f]

# CHECK: vmaxav.s32 r10, q7  @ encoding: [0xe8,0xee,0x0e,0xaf]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xe8,0xee,0x0e,0xaf]

# CHECK: vmlav.s16 lr, q0, q7  @ encoding: [0xf0,0xee,0x0e,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x0e,0xee]

# CHECK: vmlav.s32 lr, q0, q4  @ encoding: [0xf1,0xee,0x08,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf1,0xee,0x08,0xee]

# CHECK: vmlav.u16 lr, q0, q7  @ encoding: [0xf0,0xfe,0x0e,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xfe,0x0e,0xee]

# CHECK: vmlav.u32 lr, q0, q0  @ encoding: [0xf1,0xfe,0x00,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf1,0xfe,0x00,0xee]

# CHECK: vmlava.s16 lr, q0, q4  @ encoding: [0xf0,0xee,0x28,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x28,0xee]

# CHECK: vmladavx.s16 r0, q0, q7  @ encoding: [0xf0,0xee,0x0e,0x1e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x0e,0x1e]

# CHECK: vmladavax.s16 lr, q0, q7  @ encoding: [0xf0,0xee,0x2e,0xfe]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x2e,0xfe]

# CHECK: vmlav.s8 lr, q3, q0  @ encoding: [0xf6,0xee,0x00,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf6,0xee,0x00,0xef]

# CHECK: vmlav.u8 lr, q1, q7  @ encoding: [0xf2,0xfe,0x0e,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf2,0xfe,0x0e,0xef]

# CHECK: vrmlalvh.s32 lr, r1, q6, q2  @ encoding: [0x8c,0xee,0x04,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8c,0xee,0x04,0xef]

# CHECK: vrmlalvh.u32 lr, r1, q5, q2  @ encoding: [0x8a,0xfe,0x04,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8a,0xfe,0x04,0xef]

# CHECK: vrmlalvh.u32 lr, r1, q5, q2  @ encoding: [0x8a,0xfe,0x04,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8a,0xfe,0x04,0xef]

# CHECK: vrmlaldavhax.s32 lr, r1, q3, q0  @ encoding: [0x86,0xee,0x20,0xff]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x86,0xee,0x20,0xff]

# CHECK: vrmlsldavh.s32 lr, r11, q6, q5  @ encoding: [0xdc,0xfe,0x0b,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xdc,0xfe,0x0b,0xee]

# CHECK: vmlsdav.s16 lr, q0, q3  @ encoding: [0xf0,0xee,0x07,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x07,0xee]

# CHECK: vrmlalvha.u32 lr, r1, q7, q1  @ encoding: [0x8e,0xfe,0x22,0xef]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8e,0xfe,0x22,0xef]

# CHECK: vmlsdav.s16 lr, q0, q3  @ encoding: [0xf0,0xee,0x07,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xf0,0xee,0x07,0xee]

# CHECK: vmlalv.s16 lr, r1, q4, q1  @ encoding: [0x88,0xee,0x02,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x88,0xee,0x02,0xee]

# CHECK: vmlalv.s32 lr, r11, q4, q1  @ encoding: [0xd9,0xee,0x02,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xd9,0xee,0x02,0xee]

# CHECK: vmlalv.s32 r0, r1, q7, q6  @ encoding: [0x8f,0xee,0x0c,0x0e]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0x8f,0xee,0x0c,0x0e]

# CHECK: vmlalv.u16 lr, r11, q5, q4  @ encoding: [0xda,0xfe,0x08,0xee]
# CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
[0xda,0xfe,0x08,0xee]
