1// RUN: not llvm-mc -triple arm -mattr=+fp16fml,+neon -show-encoding < %s 2>&1 | FileCheck %s  --check-prefix=CHECK-ERROR
2
3VFMAL.F16 D0, S1, S2[2]
4vfmsl.f16 d0, s1, s2[2]
5vfmsl.f16 d0, s1, s2[-1]
6vfmal.f16 q0, d1, d2[4]
7VFMSL.F16 Q0, D1, D2[4]
8vfmal.f16 q0, d1, d2[-1]
9VFMSL.F16 D0, S1, S16[0]
10vfmal.f16 d0, s1, s16[0]
11VFMSL.F16 Q0, D1, D8[0]
12vfmal.f16 q0, d1, d8[0]
13
14//CHECK-ERROR:      error: invalid operand for instruction
15//CHECK-ERROR-NEXT: VFMAL.F16 D0, S1, S2[2]
16//CHECK-ERROR-NEXT:                     ^
17//CHECK-ERROR-NEXT: error: invalid operand for instruction
18//CHECK-ERROR-NEXT: vfmsl.f16 d0, s1, s2[2]
19//CHECK-ERROR-NEXT:                     ^
20//CHECK-ERROR-NEXT: error: invalid operand for instruction
21//CHECK-ERROR-NEXT: vfmsl.f16 d0, s1, s2[-1]
22//CHECK-ERROR-NEXT:                     ^
23//CHECK-ERROR-NEXT: error: invalid operand for instruction
24//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d2[4]
25//CHECK-ERROR-NEXT:                     ^
26//CHECK-ERROR-NEXT: error: invalid operand for instruction
27//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D2[4]
28//CHECK-ERROR-NEXT:                     ^
29//CHECK-ERROR-NEXT: error: invalid operand for instruction
30//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d2[-1]
31//CHECK-ERROR-NEXT:                     ^
32//CHECK-ERROR-NEXT: error: invalid instruction, any one of the following would fix this:
33//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0]
34//CHECK-ERROR-NEXT: ^
35//CHECK-ERROR-NEXT: note: operand must be a register in range [s0, s15]
36//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0]
37//CHECK-ERROR-NEXT:                   ^
38//CHECK-ERROR-NEXT: note: too many operands for instruction
39//CHECK-ERROR-NEXT: VFMSL.F16 D0, S1, S16[0]
40//CHECK-ERROR-NEXT:                      ^
41//CHECK-ERROR-NEXT: error: invalid instruction, any one of the following would fix this:
42//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0]
43//CHECK-ERROR-NEXT: ^
44//CHECK-ERROR-NEXT: note: operand must be a register in range [s0, s15]
45//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0]
46//CHECK-ERROR-NEXT:                   ^
47//CHECK-ERROR-NEXT: note: too many operands for instruction
48//CHECK-ERROR-NEXT: vfmal.f16 d0, s1, s16[0]
49//CHECK-ERROR-NEXT:                      ^
50//CHECK-ERROR-NEXT: : error: invalid instruction, any one of the following would fix this:
51//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0]
52//CHECK-ERROR-NEXT: ^
53//CHECK-ERROR-NEXT: : note: operand must be a register in range [d0, d7]
54//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0]
55//CHECK-ERROR-NEXT:                   ^
56//CHECK-ERROR-NEXT: : note: too many operands for instruction
57//CHECK-ERROR-NEXT: VFMSL.F16 Q0, D1, D8[0]
58//CHECK-ERROR-NEXT:                     ^
59//CHECK-ERROR-NEXT: : error: invalid instruction, any one of the following would fix this:
60//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0]
61//CHECK-ERROR-NEXT: ^
62//CHECK-ERROR-NEXT: : note: operand must be a register in range [d0, d7]
63//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0]
64//CHECK-ERROR-NEXT:                   ^
65//CHECK-ERROR-NEXT: 1: note: too many operands for instruction
66//CHECK-ERROR-NEXT: vfmal.f16 q0, d1, d8[0]
67//CHECK-ERROR-NEXT:                     ^
68