[AArch64] Fix FP16 vector instructions that should only accept low registers
[oota-llvm.git] / test / MC / AArch64 / fullfp16-diagnostics.s
1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t
2 // RUN: FileCheck < %t %s
3
4   fmla v0.4h, v1.4h, v16.h[3]
5   fmla v2.8h, v3.8h, v17.h[6]
6
7 // CHECK:      error: invalid operand for instruction
8 // CHECK-NEXT: fmla v0.4h, v1.4h, v16.h[3]
9 // CHECK-NEXT:                    ^
10 // CHECK:      error: invalid operand for instruction
11 // CHECK-NEXT: fmla v2.8h, v3.8h, v17.h[6]
12 // CHECK-NEXT:                    ^
13
14   fmls v0.4h, v1.4h, v16.h[3]
15   fmls v2.8h, v3.8h, v17.h[6]
16
17 // CHECK:      error: invalid operand for instruction
18 // CHECK-NEXT: fmls v0.4h, v1.4h, v16.h[3]
19 // CHECK-NEXT:                    ^
20 // CHECK:      error: invalid operand for instruction
21 // CHECK-NEXT: fmls v2.8h, v3.8h, v17.h[6]
22 // CHECK-NEXT:                    ^
23
24   fmul v0.4h, v1.4h, v16.h[3]
25   fmul v2.8h, v3.8h, v17.h[6]
26
27 // CHECK:      error: invalid operand for instruction
28 // CHECK-NEXT: fmul v0.4h, v1.4h, v16.h[3]
29 // CHECK-NEXT:                    ^
30 // CHECK:      error: invalid operand for instruction
31 // CHECK-NEXT: fmul v2.8h, v3.8h, v17.h[6]
32 // CHECK-NEXT:                    ^
33
34   fmulx v0.4h, v1.4h, v16.h[3]
35   fmulx v2.8h, v3.8h, v17.h[6]
36
37 // CHECK:      error: invalid operand for instruction
38 // CHECK-NEXT: fmulx v0.4h, v1.4h, v16.h[3]
39 // CHECK-NEXT:                     ^
40 // CHECK:      error: invalid operand for instruction
41 // CHECK-NEXT: fmulx v2.8h, v3.8h, v17.h[6]
42 // CHECK-NEXT:                     ^
43
44   fmla h0, h1, v16.h[3]
45   fmla h2, h3, v17.h[6]
46
47 // CHECK:      error: invalid operand for instruction
48 // CHECK-NEXT: fmla h0, h1, v16.h[3]
49 // CHECK-NEXT:              ^
50 // CHECK:      error: invalid operand for instruction
51 // CHECK-NEXT: fmla h2, h3, v17.h[6]
52 // CHECK-NEXT:              ^
53
54   fmls h0, h1, v16.h[3]
55   fmls h2, h3, v17.h[6]
56
57 // CHECK:      error: invalid operand for instruction
58 // CHECK-NEXT: fmls h0, h1, v16.h[3]
59 // CHECK-NEXT:              ^
60 // CHECK:      error: invalid operand for instruction
61 // CHECK-NEXT: fmls h2, h3, v17.h[6]
62 // CHECK-NEXT:              ^
63
64   fmul h0, h1, v16.h[3]
65   fmul h2, h3, v17.h[6]
66
67 // CHECK:      error: invalid operand for instruction
68 // CHECK-NEXT: fmul h0, h1, v16.h[3]
69 // CHECK-NEXT:              ^
70 // CHECK:      error: invalid operand for instruction
71 // CHECK-NEXT: fmul h2, h3, v17.h[6]
72 // CHECK-NEXT:              ^
73
74   fmulx h0, h1, v16.h[3]
75   fmulx h2, h3, v17.h[6]
76
77 // CHECK:      error: invalid operand for instruction
78 // CHECK-NEXT: fmulx h0, h1, v16.h[3]
79 // CHECK-NEXT:               ^
80 // CHECK:      error: invalid operand for instruction
81 // CHECK-NEXT: fmulx h2, h3, v17.h[6]
82 // CHECK-NEXT:               ^