1 // RUN
: llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2
< %s \
2 // RUN
: | FileCheck
%s
--check-prefixes
=CHECK-ENCODING
,CHECK-INST
3 // RUN
: not llvm-mc
-triple
=aarch64
-show-encoding
< %s
2>&1 \
4 // RUN
: | FileCheck
%s
--check-prefix
=CHECK-ERROR
5 // RUN
: llvm-mc
-triple
=aarch64
-filetype
=obj
-mattr
=+sme2
< %s \
6 // RUN
: | llvm-objdump
-d
--mattr
=+sme2
- | FileCheck
%s
--check-prefix
=CHECK-INST
7 // RUN
: llvm-mc
-triple
=aarch64
-filetype
=obj
-mattr
=+sme2
< %s \
8 // RUN
: | llvm-objdump
-d
--mattr
=-sme2
- | FileCheck
%s
--check-prefix
=CHECK-UNKNOWN
9 // RUN
: llvm-mc
-triple
=aarch64
-show-encoding
-mattr
=+sme2
< %s \
10 // RUN
: | sed
'/.text/d' | sed
's/.*encoding: //g' \
11 // RUN
: | llvm-mc
-triple
=aarch64
-mattr
=+sme2
-disassemble
-show-encoding \
12 // RUN
: | FileCheck
%s
--check-prefixes
=CHECK-ENCODING
,CHECK-INST
15 sel
{z0.h
, z1.h
}, pn8
, {z0.h
, z1.h
}, {z0.h
, z1.h
} // 11000001-01100000-10000000-00000000
16 // CHECK-INST
: sel
{ z0.h
, z1.h
}, pn8
, { z0.h
, z1.h
}, { z0.h
, z1.h
}
17 // CHECK-ENCODING
: [0x00,0x80,0x60,0xc1]
18 // CHECK-ERROR
: instruction requires
: sme2
19 // CHECK-UNKNOWN
: c1608000
<unknown
>
21 sel
{z20.h
, z21.h
}, pn13
, {z10.h
, z11.h
}, {z20.h
, z21.h
} // 11000001-01110100-10010101-01010100
22 // CHECK-INST
: sel
{ z20.h
, z21.h
}, pn13
, { z10.h
, z11.h
}, { z20.h
, z21.h
}
23 // CHECK-ENCODING
: [0x54,0x95,0x74,0xc1]
24 // CHECK-ERROR
: instruction requires
: sme2
25 // CHECK-UNKNOWN
: c1749554
<unknown
>
27 sel
{z22.h
, z23.h
}, pn11
, {z12.h
, z13.h
}, {z8.h
, z9.h
} // 11000001-01101000-10001101-10010110
28 // CHECK-INST
: sel
{ z22.h
, z23.h
}, pn11
, { z12.h
, z13.h
}, { z8.h
, z9.h
}
29 // CHECK-ENCODING
: [0x96,0x8d,0x68,0xc1]
30 // CHECK-ERROR
: instruction requires
: sme2
31 // CHECK-UNKNOWN
: c1688d96
<unknown
>
33 sel
{z30.h
, z31.h
}, pn15
, {z30.h
, z31.h
}, {z30.h
, z31.h
} // 11000001-01111110-10011111-11011110
34 // CHECK-INST
: sel
{ z30.h
, z31.h
}, pn15
, { z30.h
, z31.h
}, { z30.h
, z31.h
}
35 // CHECK-ENCODING
: [0xde,0x9f,0x7e,0xc1]
36 // CHECK-ERROR
: instruction requires
: sme2
37 // CHECK-UNKNOWN
: c17e9fde
<unknown
>
40 sel
{z0.s
, z1.s
}, pn8
, {z0.s
, z1.s
}, {z0.s
, z1.s
} // 11000001-10100000-10000000-00000000
41 // CHECK-INST
: sel
{ z0.s
, z1.s
}, pn8
, { z0.s
, z1.s
}, { z0.s
, z1.s
}
42 // CHECK-ENCODING
: [0x00,0x80,0xa0,0xc1]
43 // CHECK-ERROR
: instruction requires
: sme2
44 // CHECK-UNKNOWN
: c1a08000
<unknown
>
46 sel
{z20.s
, z21.s
}, pn13
, {z10.s
, z11.s
}, {z20.s
, z21.s
} // 11000001-10110100-10010101-01010100
47 // CHECK-INST
: sel
{ z20.s
, z21.s
}, pn13
, { z10.s
, z11.s
}, { z20.s
, z21.s
}
48 // CHECK-ENCODING
: [0x54,0x95,0xb4,0xc1]
49 // CHECK-ERROR
: instruction requires
: sme2
50 // CHECK-UNKNOWN
: c1b49554
<unknown
>
52 sel
{z22.s
, z23.s
}, pn11
, {z12.s
, z13.s
}, {z8.s
, z9.s
} // 11000001-10101000-10001101-10010110
53 // CHECK-INST
: sel
{ z22.s
, z23.s
}, pn11
, { z12.s
, z13.s
}, { z8.s
, z9.s
}
54 // CHECK-ENCODING
: [0x96,0x8d,0xa8,0xc1]
55 // CHECK-ERROR
: instruction requires
: sme2
56 // CHECK-UNKNOWN
: c1a88d96
<unknown
>
58 sel
{z30.s
, z31.s
}, pn15
, {z30.s
, z31.s
}, {z30.s
, z31.s
} // 11000001-10111110-10011111-11011110
59 // CHECK-INST
: sel
{ z30.s
, z31.s
}, pn15
, { z30.s
, z31.s
}, { z30.s
, z31.s
}
60 // CHECK-ENCODING
: [0xde,0x9f,0xbe,0xc1]
61 // CHECK-ERROR
: instruction requires
: sme2
62 // CHECK-UNKNOWN
: c1be9fde
<unknown
>
65 sel
{z0.d
, z1.d
}, pn8
, {z0.d
, z1.d
}, {z0.d
, z1.d
} // 11000001-11100000-10000000-00000000
66 // CHECK-INST
: sel
{ z0.d
, z1.d
}, pn8
, { z0.d
, z1.d
}, { z0.d
, z1.d
}
67 // CHECK-ENCODING
: [0x00,0x80,0xe0,0xc1]
68 // CHECK-ERROR
: instruction requires
: sme2
69 // CHECK-UNKNOWN
: c1e08000
<unknown
>
71 sel
{z20.d
, z21.d
}, pn13
, {z10.d
, z11.d
}, {z20.d
, z21.d
} // 11000001-11110100-10010101-01010100
72 // CHECK-INST
: sel
{ z20.d
, z21.d
}, pn13
, { z10.d
, z11.d
}, { z20.d
, z21.d
}
73 // CHECK-ENCODING
: [0x54,0x95,0xf4,0xc1]
74 // CHECK-ERROR
: instruction requires
: sme2
75 // CHECK-UNKNOWN
: c1f49554
<unknown
>
77 sel
{z22.d
, z23.d
}, pn11
, {z12.d
, z13.d
}, {z8.d
, z9.d
} // 11000001-11101000-10001101-10010110
78 // CHECK-INST
: sel
{ z22.d
, z23.d
}, pn11
, { z12.d
, z13.d
}, { z8.d
, z9.d
}
79 // CHECK-ENCODING
: [0x96,0x8d,0xe8,0xc1]
80 // CHECK-ERROR
: instruction requires
: sme2
81 // CHECK-UNKNOWN
: c1e88d96
<unknown
>
83 sel
{z30.d
, z31.d
}, pn15
, {z30.d
, z31.d
}, {z30.d
, z31.d
} // 11000001-11111110-10011111-11011110
84 // CHECK-INST
: sel
{ z30.d
, z31.d
}, pn15
, { z30.d
, z31.d
}, { z30.d
, z31.d
}
85 // CHECK-ENCODING
: [0xde,0x9f,0xfe,0xc1]
86 // CHECK-ERROR
: instruction requires
: sme2
87 // CHECK-UNKNOWN
: c1fe9fde
<unknown
>
90 sel
{z0.
b, z1.
b}, pn8
, {z0.
b, z1.
b}, {z0.
b, z1.
b} // 11000001-00100000-10000000-00000000
91 // CHECK-INST
: sel
{ z0.
b, z1.
b }, pn8
, { z0.
b, z1.
b }, { z0.
b, z1.
b }
92 // CHECK-ENCODING
: [0x00,0x80,0x20,0xc1]
93 // CHECK-ERROR
: instruction requires
: sme2
94 // CHECK-UNKNOWN
: c1208000
<unknown
>
96 sel
{z20.
b, z21.
b}, pn13
, {z10.
b, z11.
b}, {z20.
b, z21.
b} // 11000001-00110100-10010101-01010100
97 // CHECK-INST
: sel
{ z20.
b, z21.
b }, pn13
, { z10.
b, z11.
b }, { z20.
b, z21.
b }
98 // CHECK-ENCODING
: [0x54,0x95,0x34,0xc1]
99 // CHECK-ERROR
: instruction requires
: sme2
100 // CHECK-UNKNOWN
: c1349554
<unknown
>
102 sel
{z22.
b, z23.
b}, pn11
, {z12.
b, z13.
b}, {z8.
b, z9.
b} // 11000001-00101000-10001101-10010110
103 // CHECK-INST
: sel
{ z22.
b, z23.
b }, pn11
, { z12.
b, z13.
b }, { z8.
b, z9.
b }
104 // CHECK-ENCODING
: [0x96,0x8d,0x28,0xc1]
105 // CHECK-ERROR
: instruction requires
: sme2
106 // CHECK-UNKNOWN
: c1288d96
<unknown
>
108 sel
{z30.
b, z31.
b}, pn15
, {z30.
b, z31.
b}, {z30.
b, z31.
b} // 11000001-00111110-10011111-11011110
109 // CHECK-INST
: sel
{ z30.
b, z31.
b }, pn15
, { z30.
b, z31.
b }, { z30.
b, z31.
b }
110 // CHECK-ENCODING
: [0xde,0x9f,0x3e,0xc1]
111 // CHECK-ERROR
: instruction requires
: sme2
112 // CHECK-UNKNOWN
: c13e9fde
<unknown
>
115 sel
{z0.h
- z3.h
}, pn8
, {z0.h
- z3.h
}, {z0.h
- z3.h
} // 11000001-01100001-10000000-00000000
116 // CHECK-INST
: sel
{ z0.h
- z3.h
}, pn8
, { z0.h
- z3.h
}, { z0.h
- z3.h
}
117 // CHECK-ENCODING
: [0x00,0x80,0x61,0xc1]
118 // CHECK-ERROR
: instruction requires
: sme2
119 // CHECK-UNKNOWN
: c1618000
<unknown
>
121 sel
{z20.h
- z23.h
}, pn13
, {z8.h
- z11.h
}, {z20.h
- z23.h
} // 11000001-01110101-10010101-00010100
122 // CHECK-INST
: sel
{ z20.h
- z23.h
}, pn13
, { z8.h
- z11.h
}, { z20.h
- z23.h
}
123 // CHECK-ENCODING
: [0x14,0x95,0x75,0xc1]
124 // CHECK-ERROR
: instruction requires
: sme2
125 // CHECK-UNKNOWN
: c1759514
<unknown
>
127 sel
{z20.h
- z23.h
}, pn11
, {z12.h
- z15.h
}, {z8.h
- z11.h
} // 11000001-01101001-10001101-10010100
128 // CHECK-INST
: sel
{ z20.h
- z23.h
}, pn11
, { z12.h
- z15.h
}, { z8.h
- z11.h
}
129 // CHECK-ENCODING
: [0x94,0x8d,0x69,0xc1]
130 // CHECK-ERROR
: instruction requires
: sme2
131 // CHECK-UNKNOWN
: c1698d94
<unknown
>
133 sel
{z28.h
- z31.h
}, pn15
, {z28.h
- z31.h
}, {z28.h
- z31.h
} // 11000001-01111101-10011111-10011100
134 // CHECK-INST
: sel
{ z28.h
- z31.h
}, pn15
, { z28.h
- z31.h
}, { z28.h
- z31.h
}
135 // CHECK-ENCODING
: [0x9c,0x9f,0x7d,0xc1]
136 // CHECK-ERROR
: instruction requires
: sme2
137 // CHECK-UNKNOWN
: c17d9f9c
<unknown
>
140 sel
{z0.s
- z3.s
}, pn8
, {z0.s
- z3.s
}, {z0.s
- z3.s
} // 11000001-10100001-10000000-00000000
141 // CHECK-INST
: sel
{ z0.s
- z3.s
}, pn8
, { z0.s
- z3.s
}, { z0.s
- z3.s
}
142 // CHECK-ENCODING
: [0x00,0x80,0xa1,0xc1]
143 // CHECK-ERROR
: instruction requires
: sme2
144 // CHECK-UNKNOWN
: c1a18000
<unknown
>
146 sel
{z20.s
- z23.s
}, pn13
, {z8.s
- z11.s
}, {z20.s
- z23.s
} // 11000001-10110101-10010101-00010100
147 // CHECK-INST
: sel
{ z20.s
- z23.s
}, pn13
, { z8.s
- z11.s
}, { z20.s
- z23.s
}
148 // CHECK-ENCODING
: [0x14,0x95,0xb5,0xc1]
149 // CHECK-ERROR
: instruction requires
: sme2
150 // CHECK-UNKNOWN
: c1b59514
<unknown
>
152 sel
{z20.s
- z23.s
}, pn11
, {z12.s
- z15.s
}, {z8.s
- z11.s
} // 11000001-10101001-10001101-10010100
153 // CHECK-INST
: sel
{ z20.s
- z23.s
}, pn11
, { z12.s
- z15.s
}, { z8.s
- z11.s
}
154 // CHECK-ENCODING
: [0x94,0x8d,0xa9,0xc1]
155 // CHECK-ERROR
: instruction requires
: sme2
156 // CHECK-UNKNOWN
: c1a98d94
<unknown
>
158 sel
{z28.s
- z31.s
}, pn15
, {z28.s
- z31.s
}, {z28.s
- z31.s
} // 11000001-10111101-10011111-10011100
159 // CHECK-INST
: sel
{ z28.s
- z31.s
}, pn15
, { z28.s
- z31.s
}, { z28.s
- z31.s
}
160 // CHECK-ENCODING
: [0x9c,0x9f,0xbd,0xc1]
161 // CHECK-ERROR
: instruction requires
: sme2
162 // CHECK-UNKNOWN
: c1bd9f9c
<unknown
>
165 sel
{z0.d
- z3.d
}, pn8
, {z0.d
- z3.d
}, {z0.d
- z3.d
} // 11000001-11100001-10000000-00000000
166 // CHECK-INST
: sel
{ z0.d
- z3.d
}, pn8
, { z0.d
- z3.d
}, { z0.d
- z3.d
}
167 // CHECK-ENCODING
: [0x00,0x80,0xe1,0xc1]
168 // CHECK-ERROR
: instruction requires
: sme2
169 // CHECK-UNKNOWN
: c1e18000
<unknown
>
171 sel
{z20.d
- z23.d
}, pn13
, {z8.d
- z11.d
}, {z20.d
- z23.d
} // 11000001-11110101-10010101-00010100
172 // CHECK-INST
: sel
{ z20.d
- z23.d
}, pn13
, { z8.d
- z11.d
}, { z20.d
- z23.d
}
173 // CHECK-ENCODING
: [0x14,0x95,0xf5,0xc1]
174 // CHECK-ERROR
: instruction requires
: sme2
175 // CHECK-UNKNOWN
: c1f59514
<unknown
>
177 sel
{z20.d
- z23.d
}, pn11
, {z12.d
- z15.d
}, {z8.d
- z11.d
} // 11000001-11101001-10001101-10010100
178 // CHECK-INST
: sel
{ z20.d
- z23.d
}, pn11
, { z12.d
- z15.d
}, { z8.d
- z11.d
}
179 // CHECK-ENCODING
: [0x94,0x8d,0xe9,0xc1]
180 // CHECK-ERROR
: instruction requires
: sme2
181 // CHECK-UNKNOWN
: c1e98d94
<unknown
>
183 sel
{z28.d
- z31.d
}, pn15
, {z28.d
- z31.d
}, {z28.d
- z31.d
} // 11000001-11111101-10011111-10011100
184 // CHECK-INST
: sel
{ z28.d
- z31.d
}, pn15
, { z28.d
- z31.d
}, { z28.d
- z31.d
}
185 // CHECK-ENCODING
: [0x9c,0x9f,0xfd,0xc1]
186 // CHECK-ERROR
: instruction requires
: sme2
187 // CHECK-UNKNOWN
: c1fd9f9c
<unknown
>
190 sel
{z0.
b - z3.
b}, pn8
, {z0.
b - z3.
b}, {z0.
b - z3.
b} // 11000001-00100001-10000000-00000000
191 // CHECK-INST
: sel
{ z0.
b - z3.
b }, pn8
, { z0.
b - z3.
b }, { z0.
b - z3.
b }
192 // CHECK-ENCODING
: [0x00,0x80,0x21,0xc1]
193 // CHECK-ERROR
: instruction requires
: sme2
194 // CHECK-UNKNOWN
: c1218000
<unknown
>
196 sel
{z20.
b - z23.
b}, pn13
, {z8.
b - z11.
b}, {z20.
b - z23.
b} // 11000001-00110101-10010101-00010100
197 // CHECK-INST
: sel
{ z20.
b - z23.
b }, pn13
, { z8.
b - z11.
b }, { z20.
b - z23.
b }
198 // CHECK-ENCODING
: [0x14,0x95,0x35,0xc1]
199 // CHECK-ERROR
: instruction requires
: sme2
200 // CHECK-UNKNOWN
: c1359514
<unknown
>
202 sel
{z20.
b - z23.
b}, pn11
, {z12.
b - z15.
b}, {z8.
b - z11.
b} // 11000001-00101001-10001101-10010100
203 // CHECK-INST
: sel
{ z20.
b - z23.
b }, pn11
, { z12.
b - z15.
b }, { z8.
b - z11.
b }
204 // CHECK-ENCODING
: [0x94,0x8d,0x29,0xc1]
205 // CHECK-ERROR
: instruction requires
: sme2
206 // CHECK-UNKNOWN
: c1298d94
<unknown
>
208 sel
{z28.
b - z31.
b}, pn15
, {z28.
b - z31.
b}, {z28.
b - z31.
b} // 11000001-00111101-10011111-10011100
209 // CHECK-INST
: sel
{ z28.
b - z31.
b }, pn15
, { z28.
b - z31.
b }, { z28.
b - z31.
b }
210 // CHECK-ENCODING
: [0x9c,0x9f,0x3d,0xc1]
211 // CHECK-ERROR
: instruction requires
: sme2
212 // CHECK-UNKNOWN
: c13d9f9c
<unknown
>