1 /*
2  * This file contains instructions for testing by the test titled:
3  *
4  *         "Test x86 instruction decoder - new instructions"
5  *
6  * Note that the 'Expecting' comment lines are consumed by the
7  * gen-insn-x86-dat.awk script and have the format:
8  *
9  *         Expecting: <op> <branch> <rel>
10  *
11  * If this file is changed, remember to run the gen-insn-x86-dat.sh
12  * script and commit the result.
13  *
14  * Refer to insn-x86.c for more details.
15  */
16 
17 int main(void)
18 {
19 	/* Following line is a marker for the awk script - do not change */
20 	asm volatile("rdtsc"); /* Start here */
21 
22 	/* Test fix for vcvtph2ps in x86-opcode-map.txt */
23 
24 	asm volatile("vcvtph2ps %xmm3,%ymm5");
25 
26 #ifdef __x86_64__
27 
28 	/* bndmk m64, bnd */
29 
30 	asm volatile("bndmk (%rax), %bnd0");
31 	asm volatile("bndmk (%r8), %bnd0");
32 	asm volatile("bndmk (0x12345678), %bnd0");
33 	asm volatile("bndmk (%rax), %bnd3");
34 	asm volatile("bndmk (%rcx,%rax,1), %bnd0");
35 	asm volatile("bndmk 0x12345678(,%rax,1), %bnd0");
36 	asm volatile("bndmk (%rax,%rcx,1), %bnd0");
37 	asm volatile("bndmk (%rax,%rcx,8), %bnd0");
38 	asm volatile("bndmk 0x12(%rax), %bnd0");
39 	asm volatile("bndmk 0x12(%rbp), %bnd0");
40 	asm volatile("bndmk 0x12(%rcx,%rax,1), %bnd0");
41 	asm volatile("bndmk 0x12(%rbp,%rax,1), %bnd0");
42 	asm volatile("bndmk 0x12(%rax,%rcx,1), %bnd0");
43 	asm volatile("bndmk 0x12(%rax,%rcx,8), %bnd0");
44 	asm volatile("bndmk 0x12345678(%rax), %bnd0");
45 	asm volatile("bndmk 0x12345678(%rbp), %bnd0");
46 	asm volatile("bndmk 0x12345678(%rcx,%rax,1), %bnd0");
47 	asm volatile("bndmk 0x12345678(%rbp,%rax,1), %bnd0");
48 	asm volatile("bndmk 0x12345678(%rax,%rcx,1), %bnd0");
49 	asm volatile("bndmk 0x12345678(%rax,%rcx,8), %bnd0");
50 
51 	/* bndcl r/m64, bnd */
52 
53 	asm volatile("bndcl (%rax), %bnd0");
54 	asm volatile("bndcl (%r8), %bnd0");
55 	asm volatile("bndcl (0x12345678), %bnd0");
56 	asm volatile("bndcl (%rax), %bnd3");
57 	asm volatile("bndcl (%rcx,%rax,1), %bnd0");
58 	asm volatile("bndcl 0x12345678(,%rax,1), %bnd0");
59 	asm volatile("bndcl (%rax,%rcx,1), %bnd0");
60 	asm volatile("bndcl (%rax,%rcx,8), %bnd0");
61 	asm volatile("bndcl 0x12(%rax), %bnd0");
62 	asm volatile("bndcl 0x12(%rbp), %bnd0");
63 	asm volatile("bndcl 0x12(%rcx,%rax,1), %bnd0");
64 	asm volatile("bndcl 0x12(%rbp,%rax,1), %bnd0");
65 	asm volatile("bndcl 0x12(%rax,%rcx,1), %bnd0");
66 	asm volatile("bndcl 0x12(%rax,%rcx,8), %bnd0");
67 	asm volatile("bndcl 0x12345678(%rax), %bnd0");
68 	asm volatile("bndcl 0x12345678(%rbp), %bnd0");
69 	asm volatile("bndcl 0x12345678(%rcx,%rax,1), %bnd0");
70 	asm volatile("bndcl 0x12345678(%rbp,%rax,1), %bnd0");
71 	asm volatile("bndcl 0x12345678(%rax,%rcx,1), %bnd0");
72 	asm volatile("bndcl 0x12345678(%rax,%rcx,8), %bnd0");
73 	asm volatile("bndcl %rax, %bnd0");
74 
75 	/* bndcu r/m64, bnd */
76 
77 	asm volatile("bndcu (%rax), %bnd0");
78 	asm volatile("bndcu (%r8), %bnd0");
79 	asm volatile("bndcu (0x12345678), %bnd0");
80 	asm volatile("bndcu (%rax), %bnd3");
81 	asm volatile("bndcu (%rcx,%rax,1), %bnd0");
82 	asm volatile("bndcu 0x12345678(,%rax,1), %bnd0");
83 	asm volatile("bndcu (%rax,%rcx,1), %bnd0");
84 	asm volatile("bndcu (%rax,%rcx,8), %bnd0");
85 	asm volatile("bndcu 0x12(%rax), %bnd0");
86 	asm volatile("bndcu 0x12(%rbp), %bnd0");
87 	asm volatile("bndcu 0x12(%rcx,%rax,1), %bnd0");
88 	asm volatile("bndcu 0x12(%rbp,%rax,1), %bnd0");
89 	asm volatile("bndcu 0x12(%rax,%rcx,1), %bnd0");
90 	asm volatile("bndcu 0x12(%rax,%rcx,8), %bnd0");
91 	asm volatile("bndcu 0x12345678(%rax), %bnd0");
92 	asm volatile("bndcu 0x12345678(%rbp), %bnd0");
93 	asm volatile("bndcu 0x12345678(%rcx,%rax,1), %bnd0");
94 	asm volatile("bndcu 0x12345678(%rbp,%rax,1), %bnd0");
95 	asm volatile("bndcu 0x12345678(%rax,%rcx,1), %bnd0");
96 	asm volatile("bndcu 0x12345678(%rax,%rcx,8), %bnd0");
97 	asm volatile("bndcu %rax, %bnd0");
98 
99 	/* bndcn r/m64, bnd */
100 
101 	asm volatile("bndcn (%rax), %bnd0");
102 	asm volatile("bndcn (%r8), %bnd0");
103 	asm volatile("bndcn (0x12345678), %bnd0");
104 	asm volatile("bndcn (%rax), %bnd3");
105 	asm volatile("bndcn (%rcx,%rax,1), %bnd0");
106 	asm volatile("bndcn 0x12345678(,%rax,1), %bnd0");
107 	asm volatile("bndcn (%rax,%rcx,1), %bnd0");
108 	asm volatile("bndcn (%rax,%rcx,8), %bnd0");
109 	asm volatile("bndcn 0x12(%rax), %bnd0");
110 	asm volatile("bndcn 0x12(%rbp), %bnd0");
111 	asm volatile("bndcn 0x12(%rcx,%rax,1), %bnd0");
112 	asm volatile("bndcn 0x12(%rbp,%rax,1), %bnd0");
113 	asm volatile("bndcn 0x12(%rax,%rcx,1), %bnd0");
114 	asm volatile("bndcn 0x12(%rax,%rcx,8), %bnd0");
115 	asm volatile("bndcn 0x12345678(%rax), %bnd0");
116 	asm volatile("bndcn 0x12345678(%rbp), %bnd0");
117 	asm volatile("bndcn 0x12345678(%rcx,%rax,1), %bnd0");
118 	asm volatile("bndcn 0x12345678(%rbp,%rax,1), %bnd0");
119 	asm volatile("bndcn 0x12345678(%rax,%rcx,1), %bnd0");
120 	asm volatile("bndcn 0x12345678(%rax,%rcx,8), %bnd0");
121 	asm volatile("bndcn %rax, %bnd0");
122 
123 	/* bndmov m128, bnd */
124 
125 	asm volatile("bndmov (%rax), %bnd0");
126 	asm volatile("bndmov (%r8), %bnd0");
127 	asm volatile("bndmov (0x12345678), %bnd0");
128 	asm volatile("bndmov (%rax), %bnd3");
129 	asm volatile("bndmov (%rcx,%rax,1), %bnd0");
130 	asm volatile("bndmov 0x12345678(,%rax,1), %bnd0");
131 	asm volatile("bndmov (%rax,%rcx,1), %bnd0");
132 	asm volatile("bndmov (%rax,%rcx,8), %bnd0");
133 	asm volatile("bndmov 0x12(%rax), %bnd0");
134 	asm volatile("bndmov 0x12(%rbp), %bnd0");
135 	asm volatile("bndmov 0x12(%rcx,%rax,1), %bnd0");
136 	asm volatile("bndmov 0x12(%rbp,%rax,1), %bnd0");
137 	asm volatile("bndmov 0x12(%rax,%rcx,1), %bnd0");
138 	asm volatile("bndmov 0x12(%rax,%rcx,8), %bnd0");
139 	asm volatile("bndmov 0x12345678(%rax), %bnd0");
140 	asm volatile("bndmov 0x12345678(%rbp), %bnd0");
141 	asm volatile("bndmov 0x12345678(%rcx,%rax,1), %bnd0");
142 	asm volatile("bndmov 0x12345678(%rbp,%rax,1), %bnd0");
143 	asm volatile("bndmov 0x12345678(%rax,%rcx,1), %bnd0");
144 	asm volatile("bndmov 0x12345678(%rax,%rcx,8), %bnd0");
145 
146 	/* bndmov bnd, m128 */
147 
148 	asm volatile("bndmov %bnd0, (%rax)");
149 	asm volatile("bndmov %bnd0, (%r8)");
150 	asm volatile("bndmov %bnd0, (0x12345678)");
151 	asm volatile("bndmov %bnd3, (%rax)");
152 	asm volatile("bndmov %bnd0, (%rcx,%rax,1)");
153 	asm volatile("bndmov %bnd0, 0x12345678(,%rax,1)");
154 	asm volatile("bndmov %bnd0, (%rax,%rcx,1)");
155 	asm volatile("bndmov %bnd0, (%rax,%rcx,8)");
156 	asm volatile("bndmov %bnd0, 0x12(%rax)");
157 	asm volatile("bndmov %bnd0, 0x12(%rbp)");
158 	asm volatile("bndmov %bnd0, 0x12(%rcx,%rax,1)");
159 	asm volatile("bndmov %bnd0, 0x12(%rbp,%rax,1)");
160 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,1)");
161 	asm volatile("bndmov %bnd0, 0x12(%rax,%rcx,8)");
162 	asm volatile("bndmov %bnd0, 0x12345678(%rax)");
163 	asm volatile("bndmov %bnd0, 0x12345678(%rbp)");
164 	asm volatile("bndmov %bnd0, 0x12345678(%rcx,%rax,1)");
165 	asm volatile("bndmov %bnd0, 0x12345678(%rbp,%rax,1)");
166 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,1)");
167 	asm volatile("bndmov %bnd0, 0x12345678(%rax,%rcx,8)");
168 
169 	/* bndmov bnd2, bnd1 */
170 
171 	asm volatile("bndmov %bnd0, %bnd1");
172 	asm volatile("bndmov %bnd1, %bnd0");
173 
174 	/* bndldx mib, bnd */
175 
176 	asm volatile("bndldx (%rax), %bnd0");
177 	asm volatile("bndldx (%r8), %bnd0");
178 	asm volatile("bndldx (0x12345678), %bnd0");
179 	asm volatile("bndldx (%rax), %bnd3");
180 	asm volatile("bndldx (%rcx,%rax,1), %bnd0");
181 	asm volatile("bndldx 0x12345678(,%rax,1), %bnd0");
182 	asm volatile("bndldx (%rax,%rcx,1), %bnd0");
183 	asm volatile("bndldx 0x12(%rax), %bnd0");
184 	asm volatile("bndldx 0x12(%rbp), %bnd0");
185 	asm volatile("bndldx 0x12(%rcx,%rax,1), %bnd0");
186 	asm volatile("bndldx 0x12(%rbp,%rax,1), %bnd0");
187 	asm volatile("bndldx 0x12(%rax,%rcx,1), %bnd0");
188 	asm volatile("bndldx 0x12345678(%rax), %bnd0");
189 	asm volatile("bndldx 0x12345678(%rbp), %bnd0");
190 	asm volatile("bndldx 0x12345678(%rcx,%rax,1), %bnd0");
191 	asm volatile("bndldx 0x12345678(%rbp,%rax,1), %bnd0");
192 	asm volatile("bndldx 0x12345678(%rax,%rcx,1), %bnd0");
193 
194 	/* bndstx bnd, mib */
195 
196 	asm volatile("bndstx %bnd0, (%rax)");
197 	asm volatile("bndstx %bnd0, (%r8)");
198 	asm volatile("bndstx %bnd0, (0x12345678)");
199 	asm volatile("bndstx %bnd3, (%rax)");
200 	asm volatile("bndstx %bnd0, (%rcx,%rax,1)");
201 	asm volatile("bndstx %bnd0, 0x12345678(,%rax,1)");
202 	asm volatile("bndstx %bnd0, (%rax,%rcx,1)");
203 	asm volatile("bndstx %bnd0, 0x12(%rax)");
204 	asm volatile("bndstx %bnd0, 0x12(%rbp)");
205 	asm volatile("bndstx %bnd0, 0x12(%rcx,%rax,1)");
206 	asm volatile("bndstx %bnd0, 0x12(%rbp,%rax,1)");
207 	asm volatile("bndstx %bnd0, 0x12(%rax,%rcx,1)");
208 	asm volatile("bndstx %bnd0, 0x12345678(%rax)");
209 	asm volatile("bndstx %bnd0, 0x12345678(%rbp)");
210 	asm volatile("bndstx %bnd0, 0x12345678(%rcx,%rax,1)");
211 	asm volatile("bndstx %bnd0, 0x12345678(%rbp,%rax,1)");
212 	asm volatile("bndstx %bnd0, 0x12345678(%rax,%rcx,1)");
213 
214 	/* bnd prefix on call, ret, jmp and all jcc */
215 
216 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0 */
217 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
218 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
219 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
220 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0 */
221 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
222 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0 */
223 
224 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
225 
226 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
227 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
228 	asm volatile("sha1rnds4 $0x91, %xmm8, %xmm0");
229 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm8");
230 	asm volatile("sha1rnds4 $0x91, %xmm15, %xmm8");
231 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm0");
232 	asm volatile("sha1rnds4 $0x91, (%r8), %xmm0");
233 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
234 	asm volatile("sha1rnds4 $0x91, (%rax), %xmm3");
235 	asm volatile("sha1rnds4 $0x91, (%rcx,%rax,1), %xmm0");
236 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%rax,1), %xmm0");
237 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,1), %xmm0");
238 	asm volatile("sha1rnds4 $0x91, (%rax,%rcx,8), %xmm0");
239 	asm volatile("sha1rnds4 $0x91, 0x12(%rax), %xmm0");
240 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp), %xmm0");
241 	asm volatile("sha1rnds4 $0x91, 0x12(%rcx,%rax,1), %xmm0");
242 	asm volatile("sha1rnds4 $0x91, 0x12(%rbp,%rax,1), %xmm0");
243 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,1), %xmm0");
244 	asm volatile("sha1rnds4 $0x91, 0x12(%rax,%rcx,8), %xmm0");
245 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax), %xmm0");
246 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp), %xmm0");
247 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rcx,%rax,1), %xmm0");
248 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rbp,%rax,1), %xmm0");
249 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,1), %xmm0");
250 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm0");
251 	asm volatile("sha1rnds4 $0x91, 0x12345678(%rax,%rcx,8), %xmm15");
252 
253 	/* sha1nexte xmm2/m128, xmm1 */
254 
255 	asm volatile("sha1nexte %xmm1, %xmm0");
256 	asm volatile("sha1nexte %xmm7, %xmm2");
257 	asm volatile("sha1nexte %xmm8, %xmm0");
258 	asm volatile("sha1nexte %xmm7, %xmm8");
259 	asm volatile("sha1nexte %xmm15, %xmm8");
260 	asm volatile("sha1nexte (%rax), %xmm0");
261 	asm volatile("sha1nexte (%r8), %xmm0");
262 	asm volatile("sha1nexte (0x12345678), %xmm0");
263 	asm volatile("sha1nexte (%rax), %xmm3");
264 	asm volatile("sha1nexte (%rcx,%rax,1), %xmm0");
265 	asm volatile("sha1nexte 0x12345678(,%rax,1), %xmm0");
266 	asm volatile("sha1nexte (%rax,%rcx,1), %xmm0");
267 	asm volatile("sha1nexte (%rax,%rcx,8), %xmm0");
268 	asm volatile("sha1nexte 0x12(%rax), %xmm0");
269 	asm volatile("sha1nexte 0x12(%rbp), %xmm0");
270 	asm volatile("sha1nexte 0x12(%rcx,%rax,1), %xmm0");
271 	asm volatile("sha1nexte 0x12(%rbp,%rax,1), %xmm0");
272 	asm volatile("sha1nexte 0x12(%rax,%rcx,1), %xmm0");
273 	asm volatile("sha1nexte 0x12(%rax,%rcx,8), %xmm0");
274 	asm volatile("sha1nexte 0x12345678(%rax), %xmm0");
275 	asm volatile("sha1nexte 0x12345678(%rbp), %xmm0");
276 	asm volatile("sha1nexte 0x12345678(%rcx,%rax,1), %xmm0");
277 	asm volatile("sha1nexte 0x12345678(%rbp,%rax,1), %xmm0");
278 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,1), %xmm0");
279 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm0");
280 	asm volatile("sha1nexte 0x12345678(%rax,%rcx,8), %xmm15");
281 
282 	/* sha1msg1 xmm2/m128, xmm1 */
283 
284 	asm volatile("sha1msg1 %xmm1, %xmm0");
285 	asm volatile("sha1msg1 %xmm7, %xmm2");
286 	asm volatile("sha1msg1 %xmm8, %xmm0");
287 	asm volatile("sha1msg1 %xmm7, %xmm8");
288 	asm volatile("sha1msg1 %xmm15, %xmm8");
289 	asm volatile("sha1msg1 (%rax), %xmm0");
290 	asm volatile("sha1msg1 (%r8), %xmm0");
291 	asm volatile("sha1msg1 (0x12345678), %xmm0");
292 	asm volatile("sha1msg1 (%rax), %xmm3");
293 	asm volatile("sha1msg1 (%rcx,%rax,1), %xmm0");
294 	asm volatile("sha1msg1 0x12345678(,%rax,1), %xmm0");
295 	asm volatile("sha1msg1 (%rax,%rcx,1), %xmm0");
296 	asm volatile("sha1msg1 (%rax,%rcx,8), %xmm0");
297 	asm volatile("sha1msg1 0x12(%rax), %xmm0");
298 	asm volatile("sha1msg1 0x12(%rbp), %xmm0");
299 	asm volatile("sha1msg1 0x12(%rcx,%rax,1), %xmm0");
300 	asm volatile("sha1msg1 0x12(%rbp,%rax,1), %xmm0");
301 	asm volatile("sha1msg1 0x12(%rax,%rcx,1), %xmm0");
302 	asm volatile("sha1msg1 0x12(%rax,%rcx,8), %xmm0");
303 	asm volatile("sha1msg1 0x12345678(%rax), %xmm0");
304 	asm volatile("sha1msg1 0x12345678(%rbp), %xmm0");
305 	asm volatile("sha1msg1 0x12345678(%rcx,%rax,1), %xmm0");
306 	asm volatile("sha1msg1 0x12345678(%rbp,%rax,1), %xmm0");
307 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,1), %xmm0");
308 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm0");
309 	asm volatile("sha1msg1 0x12345678(%rax,%rcx,8), %xmm15");
310 
311 	/* sha1msg2 xmm2/m128, xmm1 */
312 
313 	asm volatile("sha1msg2 %xmm1, %xmm0");
314 	asm volatile("sha1msg2 %xmm7, %xmm2");
315 	asm volatile("sha1msg2 %xmm8, %xmm0");
316 	asm volatile("sha1msg2 %xmm7, %xmm8");
317 	asm volatile("sha1msg2 %xmm15, %xmm8");
318 	asm volatile("sha1msg2 (%rax), %xmm0");
319 	asm volatile("sha1msg2 (%r8), %xmm0");
320 	asm volatile("sha1msg2 (0x12345678), %xmm0");
321 	asm volatile("sha1msg2 (%rax), %xmm3");
322 	asm volatile("sha1msg2 (%rcx,%rax,1), %xmm0");
323 	asm volatile("sha1msg2 0x12345678(,%rax,1), %xmm0");
324 	asm volatile("sha1msg2 (%rax,%rcx,1), %xmm0");
325 	asm volatile("sha1msg2 (%rax,%rcx,8), %xmm0");
326 	asm volatile("sha1msg2 0x12(%rax), %xmm0");
327 	asm volatile("sha1msg2 0x12(%rbp), %xmm0");
328 	asm volatile("sha1msg2 0x12(%rcx,%rax,1), %xmm0");
329 	asm volatile("sha1msg2 0x12(%rbp,%rax,1), %xmm0");
330 	asm volatile("sha1msg2 0x12(%rax,%rcx,1), %xmm0");
331 	asm volatile("sha1msg2 0x12(%rax,%rcx,8), %xmm0");
332 	asm volatile("sha1msg2 0x12345678(%rax), %xmm0");
333 	asm volatile("sha1msg2 0x12345678(%rbp), %xmm0");
334 	asm volatile("sha1msg2 0x12345678(%rcx,%rax,1), %xmm0");
335 	asm volatile("sha1msg2 0x12345678(%rbp,%rax,1), %xmm0");
336 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,1), %xmm0");
337 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm0");
338 	asm volatile("sha1msg2 0x12345678(%rax,%rcx,8), %xmm15");
339 
340 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
341 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
342 
343 	asm volatile("sha256rnds2 %xmm4, %xmm1");
344 	asm volatile("sha256rnds2 %xmm7, %xmm2");
345 	asm volatile("sha256rnds2 %xmm8, %xmm1");
346 	asm volatile("sha256rnds2 %xmm7, %xmm8");
347 	asm volatile("sha256rnds2 %xmm15, %xmm8");
348 	asm volatile("sha256rnds2 (%rax), %xmm1");
349 	asm volatile("sha256rnds2 (%r8), %xmm1");
350 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
351 	asm volatile("sha256rnds2 (%rax), %xmm3");
352 	asm volatile("sha256rnds2 (%rcx,%rax,1), %xmm1");
353 	asm volatile("sha256rnds2 0x12345678(,%rax,1), %xmm1");
354 	asm volatile("sha256rnds2 (%rax,%rcx,1), %xmm1");
355 	asm volatile("sha256rnds2 (%rax,%rcx,8), %xmm1");
356 	asm volatile("sha256rnds2 0x12(%rax), %xmm1");
357 	asm volatile("sha256rnds2 0x12(%rbp), %xmm1");
358 	asm volatile("sha256rnds2 0x12(%rcx,%rax,1), %xmm1");
359 	asm volatile("sha256rnds2 0x12(%rbp,%rax,1), %xmm1");
360 	asm volatile("sha256rnds2 0x12(%rax,%rcx,1), %xmm1");
361 	asm volatile("sha256rnds2 0x12(%rax,%rcx,8), %xmm1");
362 	asm volatile("sha256rnds2 0x12345678(%rax), %xmm1");
363 	asm volatile("sha256rnds2 0x12345678(%rbp), %xmm1");
364 	asm volatile("sha256rnds2 0x12345678(%rcx,%rax,1), %xmm1");
365 	asm volatile("sha256rnds2 0x12345678(%rbp,%rax,1), %xmm1");
366 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,1), %xmm1");
367 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm1");
368 	asm volatile("sha256rnds2 0x12345678(%rax,%rcx,8), %xmm15");
369 
370 	/* sha256msg1 xmm2/m128, xmm1 */
371 
372 	asm volatile("sha256msg1 %xmm1, %xmm0");
373 	asm volatile("sha256msg1 %xmm7, %xmm2");
374 	asm volatile("sha256msg1 %xmm8, %xmm0");
375 	asm volatile("sha256msg1 %xmm7, %xmm8");
376 	asm volatile("sha256msg1 %xmm15, %xmm8");
377 	asm volatile("sha256msg1 (%rax), %xmm0");
378 	asm volatile("sha256msg1 (%r8), %xmm0");
379 	asm volatile("sha256msg1 (0x12345678), %xmm0");
380 	asm volatile("sha256msg1 (%rax), %xmm3");
381 	asm volatile("sha256msg1 (%rcx,%rax,1), %xmm0");
382 	asm volatile("sha256msg1 0x12345678(,%rax,1), %xmm0");
383 	asm volatile("sha256msg1 (%rax,%rcx,1), %xmm0");
384 	asm volatile("sha256msg1 (%rax,%rcx,8), %xmm0");
385 	asm volatile("sha256msg1 0x12(%rax), %xmm0");
386 	asm volatile("sha256msg1 0x12(%rbp), %xmm0");
387 	asm volatile("sha256msg1 0x12(%rcx,%rax,1), %xmm0");
388 	asm volatile("sha256msg1 0x12(%rbp,%rax,1), %xmm0");
389 	asm volatile("sha256msg1 0x12(%rax,%rcx,1), %xmm0");
390 	asm volatile("sha256msg1 0x12(%rax,%rcx,8), %xmm0");
391 	asm volatile("sha256msg1 0x12345678(%rax), %xmm0");
392 	asm volatile("sha256msg1 0x12345678(%rbp), %xmm0");
393 	asm volatile("sha256msg1 0x12345678(%rcx,%rax,1), %xmm0");
394 	asm volatile("sha256msg1 0x12345678(%rbp,%rax,1), %xmm0");
395 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,1), %xmm0");
396 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm0");
397 	asm volatile("sha256msg1 0x12345678(%rax,%rcx,8), %xmm15");
398 
399 	/* sha256msg2 xmm2/m128, xmm1 */
400 
401 	asm volatile("sha256msg2 %xmm1, %xmm0");
402 	asm volatile("sha256msg2 %xmm7, %xmm2");
403 	asm volatile("sha256msg2 %xmm8, %xmm0");
404 	asm volatile("sha256msg2 %xmm7, %xmm8");
405 	asm volatile("sha256msg2 %xmm15, %xmm8");
406 	asm volatile("sha256msg2 (%rax), %xmm0");
407 	asm volatile("sha256msg2 (%r8), %xmm0");
408 	asm volatile("sha256msg2 (0x12345678), %xmm0");
409 	asm volatile("sha256msg2 (%rax), %xmm3");
410 	asm volatile("sha256msg2 (%rcx,%rax,1), %xmm0");
411 	asm volatile("sha256msg2 0x12345678(,%rax,1), %xmm0");
412 	asm volatile("sha256msg2 (%rax,%rcx,1), %xmm0");
413 	asm volatile("sha256msg2 (%rax,%rcx,8), %xmm0");
414 	asm volatile("sha256msg2 0x12(%rax), %xmm0");
415 	asm volatile("sha256msg2 0x12(%rbp), %xmm0");
416 	asm volatile("sha256msg2 0x12(%rcx,%rax,1), %xmm0");
417 	asm volatile("sha256msg2 0x12(%rbp,%rax,1), %xmm0");
418 	asm volatile("sha256msg2 0x12(%rax,%rcx,1), %xmm0");
419 	asm volatile("sha256msg2 0x12(%rax,%rcx,8), %xmm0");
420 	asm volatile("sha256msg2 0x12345678(%rax), %xmm0");
421 	asm volatile("sha256msg2 0x12345678(%rbp), %xmm0");
422 	asm volatile("sha256msg2 0x12345678(%rcx,%rax,1), %xmm0");
423 	asm volatile("sha256msg2 0x12345678(%rbp,%rax,1), %xmm0");
424 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,1), %xmm0");
425 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm0");
426 	asm volatile("sha256msg2 0x12345678(%rax,%rcx,8), %xmm15");
427 
428 	/* clflushopt m8 */
429 
430 	asm volatile("clflushopt (%rax)");
431 	asm volatile("clflushopt (%r8)");
432 	asm volatile("clflushopt (0x12345678)");
433 	asm volatile("clflushopt 0x12345678(%rax,%rcx,8)");
434 	asm volatile("clflushopt 0x12345678(%r8,%rcx,8)");
435 	/* Also check instructions in the same group encoding as clflushopt */
436 	asm volatile("clflush (%rax)");
437 	asm volatile("clflush (%r8)");
438 	asm volatile("sfence");
439 
440 	/* clwb m8 */
441 
442 	asm volatile("clwb (%rax)");
443 	asm volatile("clwb (%r8)");
444 	asm volatile("clwb (0x12345678)");
445 	asm volatile("clwb 0x12345678(%rax,%rcx,8)");
446 	asm volatile("clwb 0x12345678(%r8,%rcx,8)");
447 	/* Also check instructions in the same group encoding as clwb */
448 	asm volatile("xsaveopt (%rax)");
449 	asm volatile("xsaveopt (%r8)");
450 	asm volatile("mfence");
451 
452 	/* xsavec mem */
453 
454 	asm volatile("xsavec (%rax)");
455 	asm volatile("xsavec (%r8)");
456 	asm volatile("xsavec (0x12345678)");
457 	asm volatile("xsavec 0x12345678(%rax,%rcx,8)");
458 	asm volatile("xsavec 0x12345678(%r8,%rcx,8)");
459 
460 	/* xsaves mem */
461 
462 	asm volatile("xsaves (%rax)");
463 	asm volatile("xsaves (%r8)");
464 	asm volatile("xsaves (0x12345678)");
465 	asm volatile("xsaves 0x12345678(%rax,%rcx,8)");
466 	asm volatile("xsaves 0x12345678(%r8,%rcx,8)");
467 
468 	/* xrstors mem */
469 
470 	asm volatile("xrstors (%rax)");
471 	asm volatile("xrstors (%r8)");
472 	asm volatile("xrstors (0x12345678)");
473 	asm volatile("xrstors 0x12345678(%rax,%rcx,8)");
474 	asm volatile("xrstors 0x12345678(%r8,%rcx,8)");
475 
476 #else  /* #ifdef __x86_64__ */
477 
478 	/* bndmk m32, bnd */
479 
480 	asm volatile("bndmk (%eax), %bnd0");
481 	asm volatile("bndmk (0x12345678), %bnd0");
482 	asm volatile("bndmk (%eax), %bnd3");
483 	asm volatile("bndmk (%ecx,%eax,1), %bnd0");
484 	asm volatile("bndmk 0x12345678(,%eax,1), %bnd0");
485 	asm volatile("bndmk (%eax,%ecx,1), %bnd0");
486 	asm volatile("bndmk (%eax,%ecx,8), %bnd0");
487 	asm volatile("bndmk 0x12(%eax), %bnd0");
488 	asm volatile("bndmk 0x12(%ebp), %bnd0");
489 	asm volatile("bndmk 0x12(%ecx,%eax,1), %bnd0");
490 	asm volatile("bndmk 0x12(%ebp,%eax,1), %bnd0");
491 	asm volatile("bndmk 0x12(%eax,%ecx,1), %bnd0");
492 	asm volatile("bndmk 0x12(%eax,%ecx,8), %bnd0");
493 	asm volatile("bndmk 0x12345678(%eax), %bnd0");
494 	asm volatile("bndmk 0x12345678(%ebp), %bnd0");
495 	asm volatile("bndmk 0x12345678(%ecx,%eax,1), %bnd0");
496 	asm volatile("bndmk 0x12345678(%ebp,%eax,1), %bnd0");
497 	asm volatile("bndmk 0x12345678(%eax,%ecx,1), %bnd0");
498 	asm volatile("bndmk 0x12345678(%eax,%ecx,8), %bnd0");
499 
500 	/* bndcl r/m32, bnd */
501 
502 	asm volatile("bndcl (%eax), %bnd0");
503 	asm volatile("bndcl (0x12345678), %bnd0");
504 	asm volatile("bndcl (%eax), %bnd3");
505 	asm volatile("bndcl (%ecx,%eax,1), %bnd0");
506 	asm volatile("bndcl 0x12345678(,%eax,1), %bnd0");
507 	asm volatile("bndcl (%eax,%ecx,1), %bnd0");
508 	asm volatile("bndcl (%eax,%ecx,8), %bnd0");
509 	asm volatile("bndcl 0x12(%eax), %bnd0");
510 	asm volatile("bndcl 0x12(%ebp), %bnd0");
511 	asm volatile("bndcl 0x12(%ecx,%eax,1), %bnd0");
512 	asm volatile("bndcl 0x12(%ebp,%eax,1), %bnd0");
513 	asm volatile("bndcl 0x12(%eax,%ecx,1), %bnd0");
514 	asm volatile("bndcl 0x12(%eax,%ecx,8), %bnd0");
515 	asm volatile("bndcl 0x12345678(%eax), %bnd0");
516 	asm volatile("bndcl 0x12345678(%ebp), %bnd0");
517 	asm volatile("bndcl 0x12345678(%ecx,%eax,1), %bnd0");
518 	asm volatile("bndcl 0x12345678(%ebp,%eax,1), %bnd0");
519 	asm volatile("bndcl 0x12345678(%eax,%ecx,1), %bnd0");
520 	asm volatile("bndcl 0x12345678(%eax,%ecx,8), %bnd0");
521 	asm volatile("bndcl %eax, %bnd0");
522 
523 	/* bndcu r/m32, bnd */
524 
525 	asm volatile("bndcu (%eax), %bnd0");
526 	asm volatile("bndcu (0x12345678), %bnd0");
527 	asm volatile("bndcu (%eax), %bnd3");
528 	asm volatile("bndcu (%ecx,%eax,1), %bnd0");
529 	asm volatile("bndcu 0x12345678(,%eax,1), %bnd0");
530 	asm volatile("bndcu (%eax,%ecx,1), %bnd0");
531 	asm volatile("bndcu (%eax,%ecx,8), %bnd0");
532 	asm volatile("bndcu 0x12(%eax), %bnd0");
533 	asm volatile("bndcu 0x12(%ebp), %bnd0");
534 	asm volatile("bndcu 0x12(%ecx,%eax,1), %bnd0");
535 	asm volatile("bndcu 0x12(%ebp,%eax,1), %bnd0");
536 	asm volatile("bndcu 0x12(%eax,%ecx,1), %bnd0");
537 	asm volatile("bndcu 0x12(%eax,%ecx,8), %bnd0");
538 	asm volatile("bndcu 0x12345678(%eax), %bnd0");
539 	asm volatile("bndcu 0x12345678(%ebp), %bnd0");
540 	asm volatile("bndcu 0x12345678(%ecx,%eax,1), %bnd0");
541 	asm volatile("bndcu 0x12345678(%ebp,%eax,1), %bnd0");
542 	asm volatile("bndcu 0x12345678(%eax,%ecx,1), %bnd0");
543 	asm volatile("bndcu 0x12345678(%eax,%ecx,8), %bnd0");
544 	asm volatile("bndcu %eax, %bnd0");
545 
546 	/* bndcn r/m32, bnd */
547 
548 	asm volatile("bndcn (%eax), %bnd0");
549 	asm volatile("bndcn (0x12345678), %bnd0");
550 	asm volatile("bndcn (%eax), %bnd3");
551 	asm volatile("bndcn (%ecx,%eax,1), %bnd0");
552 	asm volatile("bndcn 0x12345678(,%eax,1), %bnd0");
553 	asm volatile("bndcn (%eax,%ecx,1), %bnd0");
554 	asm volatile("bndcn (%eax,%ecx,8), %bnd0");
555 	asm volatile("bndcn 0x12(%eax), %bnd0");
556 	asm volatile("bndcn 0x12(%ebp), %bnd0");
557 	asm volatile("bndcn 0x12(%ecx,%eax,1), %bnd0");
558 	asm volatile("bndcn 0x12(%ebp,%eax,1), %bnd0");
559 	asm volatile("bndcn 0x12(%eax,%ecx,1), %bnd0");
560 	asm volatile("bndcn 0x12(%eax,%ecx,8), %bnd0");
561 	asm volatile("bndcn 0x12345678(%eax), %bnd0");
562 	asm volatile("bndcn 0x12345678(%ebp), %bnd0");
563 	asm volatile("bndcn 0x12345678(%ecx,%eax,1), %bnd0");
564 	asm volatile("bndcn 0x12345678(%ebp,%eax,1), %bnd0");
565 	asm volatile("bndcn 0x12345678(%eax,%ecx,1), %bnd0");
566 	asm volatile("bndcn 0x12345678(%eax,%ecx,8), %bnd0");
567 	asm volatile("bndcn %eax, %bnd0");
568 
569 	/* bndmov m64, bnd */
570 
571 	asm volatile("bndmov (%eax), %bnd0");
572 	asm volatile("bndmov (0x12345678), %bnd0");
573 	asm volatile("bndmov (%eax), %bnd3");
574 	asm volatile("bndmov (%ecx,%eax,1), %bnd0");
575 	asm volatile("bndmov 0x12345678(,%eax,1), %bnd0");
576 	asm volatile("bndmov (%eax,%ecx,1), %bnd0");
577 	asm volatile("bndmov (%eax,%ecx,8), %bnd0");
578 	asm volatile("bndmov 0x12(%eax), %bnd0");
579 	asm volatile("bndmov 0x12(%ebp), %bnd0");
580 	asm volatile("bndmov 0x12(%ecx,%eax,1), %bnd0");
581 	asm volatile("bndmov 0x12(%ebp,%eax,1), %bnd0");
582 	asm volatile("bndmov 0x12(%eax,%ecx,1), %bnd0");
583 	asm volatile("bndmov 0x12(%eax,%ecx,8), %bnd0");
584 	asm volatile("bndmov 0x12345678(%eax), %bnd0");
585 	asm volatile("bndmov 0x12345678(%ebp), %bnd0");
586 	asm volatile("bndmov 0x12345678(%ecx,%eax,1), %bnd0");
587 	asm volatile("bndmov 0x12345678(%ebp,%eax,1), %bnd0");
588 	asm volatile("bndmov 0x12345678(%eax,%ecx,1), %bnd0");
589 	asm volatile("bndmov 0x12345678(%eax,%ecx,8), %bnd0");
590 
591 	/* bndmov bnd, m64 */
592 
593 	asm volatile("bndmov %bnd0, (%eax)");
594 	asm volatile("bndmov %bnd0, (0x12345678)");
595 	asm volatile("bndmov %bnd3, (%eax)");
596 	asm volatile("bndmov %bnd0, (%ecx,%eax,1)");
597 	asm volatile("bndmov %bnd0, 0x12345678(,%eax,1)");
598 	asm volatile("bndmov %bnd0, (%eax,%ecx,1)");
599 	asm volatile("bndmov %bnd0, (%eax,%ecx,8)");
600 	asm volatile("bndmov %bnd0, 0x12(%eax)");
601 	asm volatile("bndmov %bnd0, 0x12(%ebp)");
602 	asm volatile("bndmov %bnd0, 0x12(%ecx,%eax,1)");
603 	asm volatile("bndmov %bnd0, 0x12(%ebp,%eax,1)");
604 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,1)");
605 	asm volatile("bndmov %bnd0, 0x12(%eax,%ecx,8)");
606 	asm volatile("bndmov %bnd0, 0x12345678(%eax)");
607 	asm volatile("bndmov %bnd0, 0x12345678(%ebp)");
608 	asm volatile("bndmov %bnd0, 0x12345678(%ecx,%eax,1)");
609 	asm volatile("bndmov %bnd0, 0x12345678(%ebp,%eax,1)");
610 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,1)");
611 	asm volatile("bndmov %bnd0, 0x12345678(%eax,%ecx,8)");
612 
613 	/* bndmov bnd2, bnd1 */
614 
615 	asm volatile("bndmov %bnd0, %bnd1");
616 	asm volatile("bndmov %bnd1, %bnd0");
617 
618 	/* bndldx mib, bnd */
619 
620 	asm volatile("bndldx (%eax), %bnd0");
621 	asm volatile("bndldx (0x12345678), %bnd0");
622 	asm volatile("bndldx (%eax), %bnd3");
623 	asm volatile("bndldx (%ecx,%eax,1), %bnd0");
624 	asm volatile("bndldx 0x12345678(,%eax,1), %bnd0");
625 	asm volatile("bndldx (%eax,%ecx,1), %bnd0");
626 	asm volatile("bndldx 0x12(%eax), %bnd0");
627 	asm volatile("bndldx 0x12(%ebp), %bnd0");
628 	asm volatile("bndldx 0x12(%ecx,%eax,1), %bnd0");
629 	asm volatile("bndldx 0x12(%ebp,%eax,1), %bnd0");
630 	asm volatile("bndldx 0x12(%eax,%ecx,1), %bnd0");
631 	asm volatile("bndldx 0x12345678(%eax), %bnd0");
632 	asm volatile("bndldx 0x12345678(%ebp), %bnd0");
633 	asm volatile("bndldx 0x12345678(%ecx,%eax,1), %bnd0");
634 	asm volatile("bndldx 0x12345678(%ebp,%eax,1), %bnd0");
635 	asm volatile("bndldx 0x12345678(%eax,%ecx,1), %bnd0");
636 
637 	/* bndstx bnd, mib */
638 
639 	asm volatile("bndstx %bnd0, (%eax)");
640 	asm volatile("bndstx %bnd0, (0x12345678)");
641 	asm volatile("bndstx %bnd3, (%eax)");
642 	asm volatile("bndstx %bnd0, (%ecx,%eax,1)");
643 	asm volatile("bndstx %bnd0, 0x12345678(,%eax,1)");
644 	asm volatile("bndstx %bnd0, (%eax,%ecx,1)");
645 	asm volatile("bndstx %bnd0, 0x12(%eax)");
646 	asm volatile("bndstx %bnd0, 0x12(%ebp)");
647 	asm volatile("bndstx %bnd0, 0x12(%ecx,%eax,1)");
648 	asm volatile("bndstx %bnd0, 0x12(%ebp,%eax,1)");
649 	asm volatile("bndstx %bnd0, 0x12(%eax,%ecx,1)");
650 	asm volatile("bndstx %bnd0, 0x12345678(%eax)");
651 	asm volatile("bndstx %bnd0, 0x12345678(%ebp)");
652 	asm volatile("bndstx %bnd0, 0x12345678(%ecx,%eax,1)");
653 	asm volatile("bndstx %bnd0, 0x12345678(%ebp,%eax,1)");
654 	asm volatile("bndstx %bnd0, 0x12345678(%eax,%ecx,1)");
655 
656 	/* bnd prefix on call, ret, jmp and all jcc */
657 
658 	asm volatile("bnd call label1");  /* Expecting: call unconditional 0xfffffffc */
659 	asm volatile("bnd call *(%eax)"); /* Expecting: call indirect      0 */
660 	asm volatile("bnd ret");          /* Expecting: ret  indirect      0 */
661 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
662 	asm volatile("bnd jmp label1");   /* Expecting: jmp  unconditional 0xfffffffc */
663 	asm volatile("bnd jmp *(%ecx)");  /* Expecting: jmp  indirect      0 */
664 	asm volatile("bnd jne label1");   /* Expecting: jcc  conditional   0xfffffffc */
665 
666 	/* sha1rnds4 imm8, xmm2/m128, xmm1 */
667 
668 	asm volatile("sha1rnds4 $0x0, %xmm1, %xmm0");
669 	asm volatile("sha1rnds4 $0x91, %xmm7, %xmm2");
670 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm0");
671 	asm volatile("sha1rnds4 $0x91, (0x12345678), %xmm0");
672 	asm volatile("sha1rnds4 $0x91, (%eax), %xmm3");
673 	asm volatile("sha1rnds4 $0x91, (%ecx,%eax,1), %xmm0");
674 	asm volatile("sha1rnds4 $0x91, 0x12345678(,%eax,1), %xmm0");
675 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,1), %xmm0");
676 	asm volatile("sha1rnds4 $0x91, (%eax,%ecx,8), %xmm0");
677 	asm volatile("sha1rnds4 $0x91, 0x12(%eax), %xmm0");
678 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp), %xmm0");
679 	asm volatile("sha1rnds4 $0x91, 0x12(%ecx,%eax,1), %xmm0");
680 	asm volatile("sha1rnds4 $0x91, 0x12(%ebp,%eax,1), %xmm0");
681 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,1), %xmm0");
682 	asm volatile("sha1rnds4 $0x91, 0x12(%eax,%ecx,8), %xmm0");
683 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax), %xmm0");
684 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp), %xmm0");
685 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ecx,%eax,1), %xmm0");
686 	asm volatile("sha1rnds4 $0x91, 0x12345678(%ebp,%eax,1), %xmm0");
687 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,1), %xmm0");
688 	asm volatile("sha1rnds4 $0x91, 0x12345678(%eax,%ecx,8), %xmm0");
689 
690 	/* sha1nexte xmm2/m128, xmm1 */
691 
692 	asm volatile("sha1nexte %xmm1, %xmm0");
693 	asm volatile("sha1nexte %xmm7, %xmm2");
694 	asm volatile("sha1nexte (%eax), %xmm0");
695 	asm volatile("sha1nexte (0x12345678), %xmm0");
696 	asm volatile("sha1nexte (%eax), %xmm3");
697 	asm volatile("sha1nexte (%ecx,%eax,1), %xmm0");
698 	asm volatile("sha1nexte 0x12345678(,%eax,1), %xmm0");
699 	asm volatile("sha1nexte (%eax,%ecx,1), %xmm0");
700 	asm volatile("sha1nexte (%eax,%ecx,8), %xmm0");
701 	asm volatile("sha1nexte 0x12(%eax), %xmm0");
702 	asm volatile("sha1nexte 0x12(%ebp), %xmm0");
703 	asm volatile("sha1nexte 0x12(%ecx,%eax,1), %xmm0");
704 	asm volatile("sha1nexte 0x12(%ebp,%eax,1), %xmm0");
705 	asm volatile("sha1nexte 0x12(%eax,%ecx,1), %xmm0");
706 	asm volatile("sha1nexte 0x12(%eax,%ecx,8), %xmm0");
707 	asm volatile("sha1nexte 0x12345678(%eax), %xmm0");
708 	asm volatile("sha1nexte 0x12345678(%ebp), %xmm0");
709 	asm volatile("sha1nexte 0x12345678(%ecx,%eax,1), %xmm0");
710 	asm volatile("sha1nexte 0x12345678(%ebp,%eax,1), %xmm0");
711 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,1), %xmm0");
712 	asm volatile("sha1nexte 0x12345678(%eax,%ecx,8), %xmm0");
713 
714 	/* sha1msg1 xmm2/m128, xmm1 */
715 
716 	asm volatile("sha1msg1 %xmm1, %xmm0");
717 	asm volatile("sha1msg1 %xmm7, %xmm2");
718 	asm volatile("sha1msg1 (%eax), %xmm0");
719 	asm volatile("sha1msg1 (0x12345678), %xmm0");
720 	asm volatile("sha1msg1 (%eax), %xmm3");
721 	asm volatile("sha1msg1 (%ecx,%eax,1), %xmm0");
722 	asm volatile("sha1msg1 0x12345678(,%eax,1), %xmm0");
723 	asm volatile("sha1msg1 (%eax,%ecx,1), %xmm0");
724 	asm volatile("sha1msg1 (%eax,%ecx,8), %xmm0");
725 	asm volatile("sha1msg1 0x12(%eax), %xmm0");
726 	asm volatile("sha1msg1 0x12(%ebp), %xmm0");
727 	asm volatile("sha1msg1 0x12(%ecx,%eax,1), %xmm0");
728 	asm volatile("sha1msg1 0x12(%ebp,%eax,1), %xmm0");
729 	asm volatile("sha1msg1 0x12(%eax,%ecx,1), %xmm0");
730 	asm volatile("sha1msg1 0x12(%eax,%ecx,8), %xmm0");
731 	asm volatile("sha1msg1 0x12345678(%eax), %xmm0");
732 	asm volatile("sha1msg1 0x12345678(%ebp), %xmm0");
733 	asm volatile("sha1msg1 0x12345678(%ecx,%eax,1), %xmm0");
734 	asm volatile("sha1msg1 0x12345678(%ebp,%eax,1), %xmm0");
735 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,1), %xmm0");
736 	asm volatile("sha1msg1 0x12345678(%eax,%ecx,8), %xmm0");
737 
738 	/* sha1msg2 xmm2/m128, xmm1 */
739 
740 	asm volatile("sha1msg2 %xmm1, %xmm0");
741 	asm volatile("sha1msg2 %xmm7, %xmm2");
742 	asm volatile("sha1msg2 (%eax), %xmm0");
743 	asm volatile("sha1msg2 (0x12345678), %xmm0");
744 	asm volatile("sha1msg2 (%eax), %xmm3");
745 	asm volatile("sha1msg2 (%ecx,%eax,1), %xmm0");
746 	asm volatile("sha1msg2 0x12345678(,%eax,1), %xmm0");
747 	asm volatile("sha1msg2 (%eax,%ecx,1), %xmm0");
748 	asm volatile("sha1msg2 (%eax,%ecx,8), %xmm0");
749 	asm volatile("sha1msg2 0x12(%eax), %xmm0");
750 	asm volatile("sha1msg2 0x12(%ebp), %xmm0");
751 	asm volatile("sha1msg2 0x12(%ecx,%eax,1), %xmm0");
752 	asm volatile("sha1msg2 0x12(%ebp,%eax,1), %xmm0");
753 	asm volatile("sha1msg2 0x12(%eax,%ecx,1), %xmm0");
754 	asm volatile("sha1msg2 0x12(%eax,%ecx,8), %xmm0");
755 	asm volatile("sha1msg2 0x12345678(%eax), %xmm0");
756 	asm volatile("sha1msg2 0x12345678(%ebp), %xmm0");
757 	asm volatile("sha1msg2 0x12345678(%ecx,%eax,1), %xmm0");
758 	asm volatile("sha1msg2 0x12345678(%ebp,%eax,1), %xmm0");
759 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,1), %xmm0");
760 	asm volatile("sha1msg2 0x12345678(%eax,%ecx,8), %xmm0");
761 
762 	/* sha256rnds2 <XMM0>, xmm2/m128, xmm1 */
763 	/* Note sha256rnds2 has an implicit operand 'xmm0' */
764 
765 	asm volatile("sha256rnds2 %xmm4, %xmm1");
766 	asm volatile("sha256rnds2 %xmm7, %xmm2");
767 	asm volatile("sha256rnds2 (%eax), %xmm1");
768 	asm volatile("sha256rnds2 (0x12345678), %xmm1");
769 	asm volatile("sha256rnds2 (%eax), %xmm3");
770 	asm volatile("sha256rnds2 (%ecx,%eax,1), %xmm1");
771 	asm volatile("sha256rnds2 0x12345678(,%eax,1), %xmm1");
772 	asm volatile("sha256rnds2 (%eax,%ecx,1), %xmm1");
773 	asm volatile("sha256rnds2 (%eax,%ecx,8), %xmm1");
774 	asm volatile("sha256rnds2 0x12(%eax), %xmm1");
775 	asm volatile("sha256rnds2 0x12(%ebp), %xmm1");
776 	asm volatile("sha256rnds2 0x12(%ecx,%eax,1), %xmm1");
777 	asm volatile("sha256rnds2 0x12(%ebp,%eax,1), %xmm1");
778 	asm volatile("sha256rnds2 0x12(%eax,%ecx,1), %xmm1");
779 	asm volatile("sha256rnds2 0x12(%eax,%ecx,8), %xmm1");
780 	asm volatile("sha256rnds2 0x12345678(%eax), %xmm1");
781 	asm volatile("sha256rnds2 0x12345678(%ebp), %xmm1");
782 	asm volatile("sha256rnds2 0x12345678(%ecx,%eax,1), %xmm1");
783 	asm volatile("sha256rnds2 0x12345678(%ebp,%eax,1), %xmm1");
784 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,1), %xmm1");
785 	asm volatile("sha256rnds2 0x12345678(%eax,%ecx,8), %xmm1");
786 
787 	/* sha256msg1 xmm2/m128, xmm1 */
788 
789 	asm volatile("sha256msg1 %xmm1, %xmm0");
790 	asm volatile("sha256msg1 %xmm7, %xmm2");
791 	asm volatile("sha256msg1 (%eax), %xmm0");
792 	asm volatile("sha256msg1 (0x12345678), %xmm0");
793 	asm volatile("sha256msg1 (%eax), %xmm3");
794 	asm volatile("sha256msg1 (%ecx,%eax,1), %xmm0");
795 	asm volatile("sha256msg1 0x12345678(,%eax,1), %xmm0");
796 	asm volatile("sha256msg1 (%eax,%ecx,1), %xmm0");
797 	asm volatile("sha256msg1 (%eax,%ecx,8), %xmm0");
798 	asm volatile("sha256msg1 0x12(%eax), %xmm0");
799 	asm volatile("sha256msg1 0x12(%ebp), %xmm0");
800 	asm volatile("sha256msg1 0x12(%ecx,%eax,1), %xmm0");
801 	asm volatile("sha256msg1 0x12(%ebp,%eax,1), %xmm0");
802 	asm volatile("sha256msg1 0x12(%eax,%ecx,1), %xmm0");
803 	asm volatile("sha256msg1 0x12(%eax,%ecx,8), %xmm0");
804 	asm volatile("sha256msg1 0x12345678(%eax), %xmm0");
805 	asm volatile("sha256msg1 0x12345678(%ebp), %xmm0");
806 	asm volatile("sha256msg1 0x12345678(%ecx,%eax,1), %xmm0");
807 	asm volatile("sha256msg1 0x12345678(%ebp,%eax,1), %xmm0");
808 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,1), %xmm0");
809 	asm volatile("sha256msg1 0x12345678(%eax,%ecx,8), %xmm0");
810 
811 	/* sha256msg2 xmm2/m128, xmm1 */
812 
813 	asm volatile("sha256msg2 %xmm1, %xmm0");
814 	asm volatile("sha256msg2 %xmm7, %xmm2");
815 	asm volatile("sha256msg2 (%eax), %xmm0");
816 	asm volatile("sha256msg2 (0x12345678), %xmm0");
817 	asm volatile("sha256msg2 (%eax), %xmm3");
818 	asm volatile("sha256msg2 (%ecx,%eax,1), %xmm0");
819 	asm volatile("sha256msg2 0x12345678(,%eax,1), %xmm0");
820 	asm volatile("sha256msg2 (%eax,%ecx,1), %xmm0");
821 	asm volatile("sha256msg2 (%eax,%ecx,8), %xmm0");
822 	asm volatile("sha256msg2 0x12(%eax), %xmm0");
823 	asm volatile("sha256msg2 0x12(%ebp), %xmm0");
824 	asm volatile("sha256msg2 0x12(%ecx,%eax,1), %xmm0");
825 	asm volatile("sha256msg2 0x12(%ebp,%eax,1), %xmm0");
826 	asm volatile("sha256msg2 0x12(%eax,%ecx,1), %xmm0");
827 	asm volatile("sha256msg2 0x12(%eax,%ecx,8), %xmm0");
828 	asm volatile("sha256msg2 0x12345678(%eax), %xmm0");
829 	asm volatile("sha256msg2 0x12345678(%ebp), %xmm0");
830 	asm volatile("sha256msg2 0x12345678(%ecx,%eax,1), %xmm0");
831 	asm volatile("sha256msg2 0x12345678(%ebp,%eax,1), %xmm0");
832 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,1), %xmm0");
833 	asm volatile("sha256msg2 0x12345678(%eax,%ecx,8), %xmm0");
834 
835 	/* clflushopt m8 */
836 
837 	asm volatile("clflushopt (%eax)");
838 	asm volatile("clflushopt (0x12345678)");
839 	asm volatile("clflushopt 0x12345678(%eax,%ecx,8)");
840 	/* Also check instructions in the same group encoding as clflushopt */
841 	asm volatile("clflush (%eax)");
842 	asm volatile("sfence");
843 
844 	/* clwb m8 */
845 
846 	asm volatile("clwb (%eax)");
847 	asm volatile("clwb (0x12345678)");
848 	asm volatile("clwb 0x12345678(%eax,%ecx,8)");
849 	/* Also check instructions in the same group encoding as clwb */
850 	asm volatile("xsaveopt (%eax)");
851 	asm volatile("mfence");
852 
853 	/* xsavec mem */
854 
855 	asm volatile("xsavec (%eax)");
856 	asm volatile("xsavec (0x12345678)");
857 	asm volatile("xsavec 0x12345678(%eax,%ecx,8)");
858 
859 	/* xsaves mem */
860 
861 	asm volatile("xsaves (%eax)");
862 	asm volatile("xsaves (0x12345678)");
863 	asm volatile("xsaves 0x12345678(%eax,%ecx,8)");
864 
865 	/* xrstors mem */
866 
867 	asm volatile("xrstors (%eax)");
868 	asm volatile("xrstors (0x12345678)");
869 	asm volatile("xrstors 0x12345678(%eax,%ecx,8)");
870 
871 #endif /* #ifndef __x86_64__ */
872 
873 	/* pcommit */
874 
875 	asm volatile("pcommit");
876 
877 	/* Following line is a marker for the awk script - do not change */
878 	asm volatile("rdtsc"); /* Stop here */
879 
880 	return 0;
881 }
882