1 // RUN
: not llvm-mc
-triple aarch64-none-linux-gnu
-mattr
=+v8.1
a -show-encoding
< %s
2> %t | FileCheck
%s
2 // RUN
: FileCheck
--check-prefix
=CHECK-ERROR
< %t %s
6 sqrdmlah v0.4h
, v1.4h
, v2.4h
7 sqrdmlsh v0.4h
, v1.4h
, v2.4h
8 sqrdmlah v0.2s
, v1.2s
, v2.2s
9 sqrdmlsh v0.2s
, v1.2s
, v2.2s
10 sqrdmlah v0.4s
, v1.4s
, v2.4s
11 sqrdmlsh v0.4s
, v1.4s
, v2.4s
12 sqrdmlah v0.8h
, v1.8h
, v2.8h
13 sqrdmlsh v0.8h
, v1.8h
, v2.8h
14 // CHECK
: sqrdmlah v0.4h
, v1.4h
, v2.4h
// encoding
: [0x20,0x84,0x42,0x2e]
15 // CHECK
: sqrdmlsh v0.4h
, v1.4h
, v2.4h
// encoding
: [0x20,0x8c,0x42,0x2e]
16 // CHECK
: sqrdmlah v0.2s
, v1.2s
, v2.2s
// encoding
: [0x20,0x84,0x82,0x2e]
17 // CHECK
: sqrdmlsh v0.2s
, v1.2s
, v2.2s
// encoding
: [0x20,0x8c,0x82,0x2e]
18 // CHECK
: sqrdmlah v0.4s
, v1.4s
, v2.4s
// encoding
: [0x20,0x84,0x82,0x6e]
19 // CHECK
: sqrdmlsh v0.4s
, v1.4s
, v2.4s
// encoding
: [0x20,0x8c,0x82,0x6e]
20 // CHECK
: sqrdmlah v0.8h
, v1.8h
, v2.8h
// encoding
: [0x20,0x84,0x42,0x6e]
21 // CHECK
: sqrdmlsh v0.8h
, v1.8h
, v2.8h
// encoding
: [0x20,0x8c,0x42,0x6e]
23 sqrdmlah v0.2h
, v1.2h
, v2.2h
24 // CHECK-ERROR
: [[@LINE-
1]]:12: error
: invalid operand for instruction
25 sqrdmlsh v0.2h
, v1.2h
, v2.2h
26 // CHECK-ERROR
: [[@LINE-
1]]:12: error
: invalid operand for instruction
27 sqrdmlah v0.8s
, v1.8s
, v2.8s
28 // CHECK-ERROR
: [[@LINE-
1]]:12: error
: invalid vector kind qualifier
29 // CHECK-ERROR
: [[@LINE-
2]]:19: error
: invalid vector kind qualifier
30 // CHECK-ERROR
: [[@LINE-
3]]:26: error
: invalid vector kind qualifier
31 sqrdmlsh v0.8s
, v1.8s
, v2.8s
32 // CHECK-ERROR
: [[@LINE-
1]]:12: error
: invalid vector kind qualifier
33 // CHECK-ERROR
: [[@LINE-
2]]:19: error
: invalid vector kind qualifier
34 // CHECK-ERROR
: [[@LINE-
3]]:26: error
: invalid vector kind qualifier
35 sqrdmlah v0.2s
, v1.4h
, v2.8h
36 // CHECK-ERROR
: [[@LINE-
1]]:19: error
: invalid operand for instruction
37 sqrdmlsh v0.4s
, v1.8h
, v2.2s
38 // CHECK-ERROR
: [[@LINE-
1]]:19: error
: invalid operand for instruction
45 // CHECK
: sqrdmlah h0
, h1
, h2
// encoding
: [0x20,0x84,0x42,0x7e]
46 // CHECK
: sqrdmlsh h0
, h1
, h2
// encoding
: [0x20,0x8c,0x42,0x7e]
47 // CHECK
: sqrdmlah s0
, s1
, s2
// encoding
: [0x20,0x84,0x82,0x7e]
48 // CHECK
: sqrdmlsh s0
, s1
, s2
// encoding
: [0x20,0x8c,0x82,0x7e]
50 //AdvSIMD RDMA vector by-element
51 sqrdmlah v0.4h
, v1.4h
, v2.h
[3]
52 sqrdmlsh v0.4h
, v1.4h
, v2.h
[3]
53 sqrdmlah v0.2s
, v1.2s
, v2.s
[1]
54 sqrdmlsh v0.2s
, v1.2s
, v2.s
[1]
55 sqrdmlah v0.8h
, v1.8h
, v2.h
[3]
56 sqrdmlsh v0.8h
, v1.8h
, v2.h
[3]
57 sqrdmlah v0.4s
, v1.4s
, v2.s
[3]
58 sqrdmlsh v0.4s
, v1.4s
, v2.s
[3]
59 // CHECK
: sqrdmlah v0.4h
, v1.4h
, v2.h
[3] // encoding
: [0x20,0xd0,0x72,0x2f]
60 // CHECK
: sqrdmlsh v0.4h
, v1.4h
, v2.h
[3] // encoding
: [0x20,0xf0,0x72,0x2f]
61 // CHECK
: sqrdmlah v0.2s
, v1.2s
, v2.s
[1] // encoding
: [0x20,0xd0,0xa2,0x2f]
62 // CHECK
: sqrdmlsh v0.2s
, v1.2s
, v2.s
[1] // encoding
: [0x20,0xf0,0xa2,0x2f]
63 // CHECK
: sqrdmlah v0.8h
, v1.8h
, v2.h
[3] // encoding
: [0x20,0xd0,0x72,0x6f]
64 // CHECK
: sqrdmlsh v0.8h
, v1.8h
, v2.h
[3] // encoding
: [0x20,0xf0,0x72,0x6f]
65 // CHECK
: sqrdmlah v0.4s
, v1.4s
, v2.s
[3] // encoding
: [0x20,0xd8,0xa2,0x6f]
66 // CHECK
: sqrdmlsh v0.4s
, v1.4s
, v2.s
[3] // encoding
: [0x20,0xf8,0xa2,0x6f]
68 sqrdmlah v0.4s
, v1.2s
, v2.s
[1]
69 sqrdmlsh v0.2s
, v1.2d
, v2.s
[1]
70 sqrdmlah v0.8h
, v1.8h
, v2.s
[3]
71 sqrdmlsh v0.8h
, v1.8h
, v2.h
[8]
72 // CHECK-ERROR
: error
: invalid operand for instruction
73 // CHECK-ERROR
: sqrdmlah v0.4s
, v1.2s
, v2.s
[1]
75 // CHECK-ERROR
: error
: invalid operand for instruction
76 // CHECK-ERROR
: sqrdmlsh v0.2s
, v1.2d
, v2.s
[1]
78 // CHECK-ERROR
: error
: invalid operand for instruction
79 // CHECK-ERROR
: sqrdmlah v0.8h
, v1.8h
, v2.s
[3]
81 // CHECK-ERROR
: error
: vector lane must
be an integer in range
[0, 7].
82 // CHECK-ERROR
: sqrdmlsh v0.8h
, v1.8h
, v2.h
[8]
85 //AdvSIMD RDMA scalar by-element
86 sqrdmlah h0
, h1
, v2.h
[3]
87 sqrdmlsh h0
, h1
, v2.h
[3]
88 sqrdmlah s0
, s1
, v2.s
[3]
89 sqrdmlsh s0
, s1
, v2.s
[3]
90 // CHECK
: sqrdmlah h0
, h1
, v2.h
[3] // encoding
: [0x20,0xd0,0x72,0x7f]
91 // CHECK
: sqrdmlsh h0
, h1
, v2.h
[3] // encoding
: [0x20,0xf0,0x72,0x7f]
92 // CHECK
: sqrdmlah s0
, s1
, v2.s
[3] // encoding
: [0x20,0xd8,0xa2,0x7f]
93 // CHECK
: sqrdmlsh s0
, s1
, v2.s
[3] // encoding
: [0x20,0xf8,0xa2,0x7f]
95 sqrdmlah b0
, h1
, v2.h
[3]
96 sqrdmlah s0
, d1
, v2.s
[3]
97 sqrdmlsh h0
, h1
, v2.s
[3]
98 sqrdmlsh s0
, s1
, v2.s
[4]
99 // CHECK-ERROR
: error
: invalid operand for instruction
100 // CHECK-ERROR
: sqrdmlah b0
, h1
, v2.h
[3]
102 // CHECK-ERROR
: error
: invalid operand for instruction
103 // CHECK-ERROR
: sqrdmlah s0
, d1
, v2.s
[3]
105 // CHECK-ERROR
: error
: invalid operand for instruction
106 // CHECK-ERROR
: sqrdmlsh h0
, h1
, v2.s
[3]
108 // CHECK-ERROR
: error
: vector lane must
be an integer in range
[0, 3].
109 // CHECK-ERROR
: sqrdmlsh s0
, s1
, v2.s
[4]