1# RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.1a --disassemble < %s 2>&1 | FileCheck %s
2
3[0x20,0x84,0x02,0x2e] # sqrdmlah  v0.8b, v1.8b, v2.8b
4[0x20,0x8c,0x02,0x2e] # sqrdmlsh  v0.8b, v1.8b, v2.8b
5[0x20,0x84,0xc2,0x2e] # sqrdmlah  v0.1d, v1.1d, v2.1d
6[0x20,0x8c,0xc2,0x2e] # sqrdmlsh  v0.1d, v1.1d, v2.1d
7[0x20,0x84,0x02,0x6e] # sqrdmlah  v0.16b, v1.16b, v2.16b
8[0x20,0x8c,0x02,0x6e] # sqrdmlsh  v0.16b, v1.16b, v2.16b
9[0x20,0x84,0xc2,0x6e] # sqrdmlah  v0.2d, v1.2d, v2.2d
10[0x20,0x8c,0xc2,0x6e] # sqrdmlsh  v0.2d, v1.2d, v2.2d
11# CHECK: warning: invalid instruction encoding
12# CHECK: [0x20,0x84,0x02,0x2e]
13# CHECK: warning: invalid instruction encoding
14# CHECK: [0x20,0x8c,0x02,0x2e]
15# CHECK: warning: invalid instruction encoding
16# CHECK: [0x20,0x84,0xc2,0x2e]
17# CHECK: warning: invalid instruction encoding
18# CHECK: [0x20,0x8c,0xc2,0x2e]
19# CHECK: warning: invalid instruction encoding
20# CHECK: [0x20,0x84,0x02,0x6e]
21# CHECK: warning: invalid instruction encoding
22# CHECK: [0x20,0x8c,0x02,0x6e]
23# CHECK: warning: invalid instruction encoding
24# CHECK: [0x20,0x84,0xc2,0x6e]
25# CHECK: warning: invalid instruction encoding
26# CHECK: [0x20,0x8c,0xc2,0x6e]
27
28[0x20,0x84,0x02,0x7e] # sqrdmlah b0, b1, b2
29[0x20,0x8c,0x02,0x7e] # sqrdmlsh b0, b1, b2
30[0x20,0x84,0xc2,0x7e] # sqrdmlah d0, d1, d2
31[0x20,0x8c,0xc2,0x7e] # sqrdmlsh d0, d1, d2
32# CHECK: warning: invalid instruction encoding
33# CHECK: [0x20,0x84,0x02,0x7e]
34# CHECK: warning: invalid instruction encoding
35# CHECK: [0x20,0x8c,0x02,0x7e]
36# CHECK: warning: invalid instruction encoding
37# CHECK: [0x20,0x84,0xc2,0x7e]
38# CHECK: warning: invalid instruction encoding
39# CHECK: [0x20,0x8c,0xc2,0x7e]
40
41[0x20,0xd0,0x32,0x2f] # sqrdmlah v0.8b, v1.8b, v2.b[3]
42[0x20,0xf0,0x32,0x2f] # sqrdmlsh v0.8b, v1.8b, v2.b[3]
43[0x20,0xd0,0xe2,0x2f] # sqrdmlah v0.1d, v1.1d, v2.d[1]
44[0x20,0xf0,0xe2,0x2f] # sqrdmlsh v0.1d, v1.1d, v2.d[1]
45[0x20,0xd0,0x32,0x6f] # sqrdmlah v0.16b, v1.16b, v2.b[3]
46[0x20,0xf0,0x32,0x6f] # sqrdmlsh v0.16b, v1.16b, v2.b[3]
47[0x20,0xd8,0xe2,0x6f] # sqrdmlah v0.2d, v1.2d, v2.d[3]
48[0x20,0xf8,0xe2,0x6f] # sqrdmlsh v0.2d, v1.2d, v2.d[3]
49# CHECK: warning: invalid instruction encoding
50# CHECK: [0x20,0xd0,0x32,0x2f]
51# CHECK: warning: invalid instruction encoding
52# CHECK: [0x20,0xf0,0x32,0x2f]
53# CHECK: warning: invalid instruction encoding
54# CHECK: [0x20,0xd0,0xe2,0x2f]
55# CHECK: warning: invalid instruction encoding
56# CHECK: [0x20,0xf0,0xe2,0x2f]
57# CHECK: warning: invalid instruction encoding
58# CHECK: [0x20,0xd0,0x32,0x6f]
59# CHECK: warning: invalid instruction encoding
60# CHECK: [0x20,0xf0,0x32,0x6f]
61# CHECK: warning: invalid instruction encoding
62# CHECK: [0x20,0xd8,0xe2,0x6f]
63# CHECK: warning: invalid instruction encoding
64# CHECK: [0x20,0xf8,0xe2,0x6f]
65
66[0x20,0xd0,0x32,0x7f] # sqrdmlah b0, b1, v2.b[3]
67[0x20,0xf0,0x32,0x7f] # sqrdmlsh b0, b1, v2.b[3]
68[0x20,0xd8,0xe2,0x7f] # sqrdmlah d0, d1, v2.d[3]
69[0x20,0xf8,0xe2,0x7f] # sqrdmlsh d0, d1, v2.d[3]
70# CHECK: warning: invalid instruction encoding
71# CHECK: [0x20,0xd0,0x32,0x7f]
72# CHECK: warning: invalid instruction encoding
73# CHECK: [0x20,0xf0,0x32,0x7f]
74# CHECK: warning: invalid instruction encoding
75# CHECK: [0x20,0xd8,0xe2,0x7f]
76# CHECK: warning: invalid instruction encoding
77# CHECK: [0x20,0xf8,0xe2,0x7f]
78
79[0x20,0x84,0x42,0x2e]
80[0x20,0x8c,0x42,0x2e]
81[0x20,0x84,0x82,0x2e]
82[0x20,0x8c,0x82,0x2e]
83[0x20,0x84,0x42,0x6e]
84[0x20,0x8c,0x42,0x6e]
85[0x20,0x84,0x82,0x6e]
86[0x20,0x8c,0x82,0x6e]
87# CHECK: sqrdmlah  v0.4h, v1.4h, v2.4h
88# CHECK: sqrdmlsh  v0.4h, v1.4h, v2.4h
89# CHECK: sqrdmlah  v0.2s, v1.2s, v2.2s
90# CHECK: sqrdmlsh  v0.2s, v1.2s, v2.2s
91# CHECK: sqrdmlah  v0.8h, v1.8h, v2.8h
92# CHECK: sqrdmlsh  v0.8h, v1.8h, v2.8h
93# CHECK: sqrdmlah  v0.4s, v1.4s, v2.4s
94# CHECK: sqrdmlsh  v0.4s, v1.4s, v2.4s
95
96[0x20,0x84,0x42,0x7e]
97[0x20,0x8c,0x42,0x7e]
98[0x20,0x84,0x82,0x7e]
99[0x20,0x8c,0x82,0x7e]
100# CHECK: sqrdmlah h0, h1, h2
101# CHECK: sqrdmlsh h0, h1, h2
102# CHECK: sqrdmlah s0, s1, s2
103# CHECK: sqrdmlsh s0, s1, s2
104
1050x20,0xd0,0x72,0x2f
1060x20,0xf0,0x72,0x2f
1070x20,0xd0,0xa2,0x2f
1080x20,0xf0,0xa2,0x2f
1090x20,0xd0,0x72,0x6f
1100x20,0xf0,0x72,0x6f
1110x20,0xd8,0xa2,0x6f
1120x20,0xf8,0xa2,0x6f
113# CHECK: sqrdmlah v0.4h, v1.4h, v2.h[3]
114# CHECK: sqrdmlsh v0.4h, v1.4h, v2.h[3]
115# CHECK: sqrdmlah v0.2s, v1.2s, v2.s[1]
116# CHECK: sqrdmlsh v0.2s, v1.2s, v2.s[1]
117# CHECK: sqrdmlah v0.8h, v1.8h, v2.h[3]
118# CHECK: sqrdmlsh v0.8h, v1.8h, v2.h[3]
119# CHECK: sqrdmlah v0.4s, v1.4s, v2.s[3]
120# CHECK: sqrdmlsh v0.4s, v1.4s, v2.s[3]
121
1220x20,0xd0,0x72,0x7f
1230x20,0xf0,0x72,0x7f
1240x20,0xd8,0xa2,0x7f
1250x20,0xf8,0xa2,0x7f
126# CHECK: sqrdmlah h0, h1, v2.h[3]
127# CHECK: sqrdmlsh h0, h1, v2.h[3]
128# CHECK: sqrdmlah s0, s1, v2.s[3]
129# CHECK: sqrdmlsh s0, s1, v2.s[3]
130