1@ RUN: llvm-mc < %s -triple armv7-unknown-unknown -show-encoding -mattr=+neon,+vfp4   | FileCheck %s --check-prefix=ARM
2@ RUN: llvm-mc < %s -triple thumbv7-unknown-unknown -show-encoding -mattr=+neon,+vfp4 | FileCheck %s --check-prefix=THUMB
3@ RUN: not llvm-mc < %s -triple thumbv7-unknown-unknown -show-encoding -mcpu=cortex-m4 > %t 2> %t2
4@ RUN:     FileCheck %s < %t --check-prefix=THUMB_V7EM
5@ RUN:     FileCheck %s < %t2 --check-prefix=THUMB_V7EM-ERRORS
6
7@ ARM: vfma.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0xe2,0xee]
8@ THUMB: vfma.f64 d16, d18, d17 @ encoding: [0xe2,0xee,0xa1,0x0b]
9@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
10@ THUMB_V7EM-ERRORS-NEXT: vfma.f64 d16, d18, d17
11vfma.f64 d16, d18, d17
12
13@ ARM: vfma.f32 s2, s4, s0 @ encoding: [0x00,0x1a,0xa2,0xee]
14@ THUMB: vfma.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x00,0x1a]
15@ THUMB_V7EM: vfma.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x00,0x1a]
16vfma.f32 s2, s4, s0
17
18@ ARM: vfma.f32 d16, d18, d17 @ encoding: [0xb1,0x0c,0x42,0xf2]
19@ THUMB: vfma.f32 d16, d18, d17 @ encoding: [0x42,0xef,0xb1,0x0c]
20@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
21@ THUMB_V7EM-ERRORS-NEXT: vfma.f32 d16, d18, d17
22vfma.f32 d16, d18, d17
23
24@ ARM: vfma.f32 q2, q4, q0 @ encoding: [0x50,0x4c,0x08,0xf2]
25@ THUMB: vfma.f32	q2, q4, q0 @ encoding: [0x08,0xef,0x50,0x4c]
26@ THUMB_V7EM-ERRORS: error: instruction requires: NEON
27@ THUMB_V7EM-ERRORS-NEXT: vfma.f32 q2, q4, q0
28vfma.f32 q2, q4, q0
29
30@ ARM: vfnma.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0xd2,0xee]
31@ THUMB: vfnma.f64 d16, d18, d17 @ encoding: [0xd2,0xee,0xe1,0x0b]
32@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
33@ THUMB_V7EM-ERRORS-NEXT: vfnma.f64 d16, d18, d17
34vfnma.f64 d16, d18, d17
35
36@ ARM: vfnma.f32 s2, s4, s0 @ encoding: [0x40,0x1a,0x92,0xee]
37@ THUMB: vfnma.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x40,0x1a]
38@ THUMB_V7EM: vfnma.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x40,0x1a]
39vfnma.f32 s2, s4, s0
40
41@ ARM: vfms.f64 d16, d18, d17 @ encoding: [0xe1,0x0b,0xe2,0xee]
42@ THUMB: vfms.f64 d16, d18, d17 @ encoding: [0xe2,0xee,0xe1,0x0b]
43@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
44@ THUMB_V7EM-ERRORS-NEXT: vfms.f64 d16, d18, d17
45vfms.f64 d16, d18, d17
46
47@ ARM: vfms.f32 s2, s4, s0 @ encoding: [0x40,0x1a,0xa2,0xee]
48@ THUMB: vfms.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x40,0x1a]
49@ THUMB_V7EM: vfms.f32 s2, s4, s0 @ encoding: [0xa2,0xee,0x40,0x1a]
50vfms.f32 s2, s4, s0
51
52@ ARM: vfms.f32 d16, d18, d17 @ encoding: [0xb1,0x0c,0x62,0xf2]
53@ THUMB: vfms.f32 d16, d18, d17 @ encoding: [0x62,0xef,0xb1,0x0c]
54@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
55@ THUMB_V7EM-ERRORS-NEXT: vfms.f32 d16, d18, d17
56vfms.f32 d16, d18, d17
57
58@ ARM: vfms.f32 q2, q4, q0 @ encoding: [0x50,0x4c,0x28,0xf2]
59@ THUMB: vfms.f32	q2, q4, q0 @ encoding: [0x28,0xef,0x50,0x4c]
60@ THUMB_V7EM-ERRORS: error: instruction requires: NEON
61@ THUMB_V7EM-ERRORS-NEXT: vfms.f32 q2, q4, q0
62vfms.f32 q2, q4, q0
63
64@ ARM: vfnms.f64 d16, d18, d17 @ encoding: [0xa1,0x0b,0xd2,0xee]
65@ THUMB: vfnms.f64 d16, d18, d17 @ encoding: [0xd2,0xee,0xa1,0x0b]
66@ THUMB_V7EM-ERRORS: error: invalid operand for instruction
67@ THUMB_V7EM-ERRORS-NEXT: vfnms.f64 d16, d18, d17
68vfnms.f64 d16, d18, d17
69
70@ ARM: vfnms.f32 s2, s4, s0 @ encoding: [0x00,0x1a,0x92,0xee]
71@ THUMB: vfnms.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x00,0x1a]
72@ THUMB_V7EM: vfnms.f32 s2, s4, s0 @ encoding: [0x92,0xee,0x00,0x1a]
73vfnms.f32 s2, s4, s0
74