OSDN Git Service

Copyright year update in most files of the GDB Project.
[pf3gnuchains/pf3gnuchains4x.git] / gdb / testsuite / gdb.reverse / i386-sse-reverse.exp
1 # Copyright 2009-2012 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 # This file is part of the gdb testsuite.
17
18 #
19 # This test tests some i386 general instructions for reverse execution.
20 #
21
22 if ![supports_reverse] {
23     return
24 }
25
26 if $tracelevel {
27     strace $tracelevel
28 }
29
30
31 if ![istarget "*86*-*linux*"] then {
32     verbose "Skipping i386 reverse tests."
33     return
34 }
35
36 set testfile "i386-sse-reverse"
37 set srcfile ${testfile}.c
38 set binfile ${objdir}/${subdir}/${testfile}
39
40 # some targets have leading underscores on assembly symbols.
41 set additional_flags [gdb_target_symbol_prefix_flags]
42
43 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } {
44     untested i386-sse-reverse
45     return -1
46 }
47
48 set end_of_main          [gdb_get_line_number " end of main "]
49 set end_sse_test         [gdb_get_line_number " end sse_test "]
50 set end_sse4_test         [gdb_get_line_number " end sse4_test "]
51
52 # Get things started.
53
54 gdb_exit
55 gdb_start
56 gdb_reinitialize_dir $srcdir/$subdir
57 gdb_load ${binfile}
58 runto main
59
60 if [supports_process_record] {
61     # Activate process record/replay
62     gdb_test_no_output "record" "Turn on process record"
63 }
64
65 global hex
66 global decimal
67
68 #sse_test
69
70 gdb_test "break $end_sse_test" \
71     "Breakpoint $decimal at .* line $end_sse_test\." \
72     "set breakpoint at end of sse_test"
73
74 gdb_test "continue" \
75     " end sse_test .*" \
76     "continue to end of sse_test"
77
78 gdb_test "reverse-step" "xorps.*" "reverse-step to xorps"
79
80 gdb_test "info register xmm0" \
81     "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \
82     "verify xmm0 at end of sse_test"
83
84 gdb_test "info register xmm1" \
85     "xmm1 .*uint128 = 0x00ff00ff0000000000ff00ff00000000.*" \
86     "verify xmm1 at end of sse_test"
87
88 gdb_test "info register xmm2" \
89     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
90     "verify xmm2 at end of sse_test"
91
92 gdb_test "reverse-step" "xorpd.*" "reverse-step to xorpd"
93
94 gdb_test "info register xmm0" \
95     "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \
96     "verify xmm0 after reverse xorps"
97
98 gdb_test "info register xmm1" \
99     "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
100     "verify xmm1 after reverse xorps"
101
102 gdb_test "info register xmm2" \
103     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
104     "verify xmm2 after reverse xorps"
105
106 gdb_test "reverse-step" "unpckhps.*" "reverse-step to unpckhps"
107
108 gdb_test "info register xmm0" \
109     "xmm0 .*uint128 = 0x7fff7fff7fff7fff0108000001400000.*" \
110     "verify xmm0 after reverse xorpd"
111
112 gdb_test "info register xmm1" \
113     "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
114     "verify xmm1 after reverse xorpd"
115
116 gdb_test "info register xmm2" \
117     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
118     "verify xmm2 after reverse xorpd"
119
120 gdb_test "reverse-step" "unpckhpd.*" "reverse-step to unpckhpd"
121
122 gdb_test "info register xmm0" \
123     "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \
124     "verify xmm0 after reverse unpckhps"
125
126 gdb_test "info register xmm1" \
127     "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
128     "verify xmm1 after reverse unpckhps"
129
130 gdb_test "info register xmm2" \
131     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
132     "verify xmm2 after reverse unpckhps"
133
134 gdb_test "reverse-step" "ucomiss.*" "reverse-step to ucomiss"
135
136 gdb_test "info register xmm0" \
137     "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \
138     "verify xmm0 after reverse unpckhpd"
139
140 gdb_test "info register xmm1" \
141     "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
142     "verify xmm1 after reverse unpckhpd"
143
144 gdb_test "info register xmm2" \
145     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
146     "verify xmm2 after reverse unpckhpd"
147
148 gdb_test "reverse-step" "ucomisd.*" "reverse-step to ucomisd"
149
150 gdb_test "info register xmm0" \
151     "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \
152     "verify xmm0 after reverse ucomiss"
153
154 gdb_test "info register xmm1" \
155     "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
156     "verify xmm1 after reverse ucomiss"
157
158 gdb_test "info register xmm2" \
159     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
160     "verify xmm2 after reverse ucomiss"
161
162 gdb_test "reverse-step" "packssdw.*" "reverse-step to packssdw"
163
164 gdb_test "info register xmm0" \
165     "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \
166     "verify xmm0 after reverse ucomisd"
167
168 gdb_test "info register xmm1" \
169     "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \
170     "verify xmm1 after reverse ucomisd"
171
172 gdb_test "info register xmm2" \
173     "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \
174     "verify xmm2 after reverse ucomisd"
175
176 gdb_test "reverse-step" "packsswb.*" "reverse-step to packsswb"
177
178 gdb_test "info register xmm0" \
179     "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \
180     "verify xmm0 after reverse packssdw"
181
182 gdb_test "info register xmm1" \
183     "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \
184     "verify xmm1 after reverse packssdw"
185
186 gdb_test "info register xmm2" \
187     "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \
188     "verify xmm2 after reverse packssdw"
189
190 gdb_test "reverse-step" "pabsd.*" "reverse-step to pabsd"
191
192 gdb_test "info register xmm0" \
193     "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
194     "verify xmm0 after reverse packsswb"
195
196 gdb_test "info register xmm1" \
197     "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \
198     "verify xmm1 after reverse packsswb"
199
200 gdb_test "info register xmm2" \
201     "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \
202     "verify xmm2 after reverse packsswb"
203
204 gdb_test "reverse-step" "pabsw.*" "reverse-step to pabsw"
205
206 gdb_test "info register xmm0" \
207     "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
208     "verify xmm0 after reverse pabsd"
209
210 gdb_test "info register xmm1" \
211     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
212     "verify xmm1 after reverse pabsd"
213
214 gdb_test "info register xmm2" \
215     "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \
216     "verify xmm2 after reverse pabsd"
217
218 gdb_test "reverse-step" "pabsb.*" "reverse-step to pabsb"
219
220 gdb_test "info register xmm0" \
221     "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
222     "verify xmm0 after reverse pabsw"
223
224 gdb_test "info register xmm1" \
225     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
226     "verify xmm1 after reverse pabsw"
227
228 gdb_test "info register xmm2" \
229     "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
230     "verify xmm2 after reverse pabsw"
231
232 gdb_test "reverse-step" "orps.*" "reverse-step to orps"
233
234 gdb_test "info register xmm0" \
235     "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
236     "verify xmm0 after reverse pabsb"
237
238 gdb_test "info register xmm1" \
239     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
240     "verify xmm1 after reverse pabsb"
241
242 gdb_test "info register xmm2" \
243     "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
244     "verify xmm2 after reverse pabsb"
245
246 gdb_test "reverse-step" "orpd.*" "reverse-step to orpd"
247
248 gdb_test "info register xmm0" \
249     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
250     "verify xmm0 after reverse orps"
251
252 gdb_test "info register xmm1" \
253     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
254     "verify xmm1 after reverse orps"
255
256 gdb_test "info register xmm2" \
257     "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
258     "verify xmm2 after reverse orps"
259
260 gdb_test "reverse-step" "mulss.*" "reverse-step to mulss"
261
262 gdb_test "info register xmm0" \
263     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
264     "verify xmm0 after reverse orpd"
265
266 gdb_test "info register xmm1" \
267     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
268     "verify xmm1 after reverse orpd"
269
270 gdb_test "info register xmm2" \
271     "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
272     "verify xmm2 after reverse orpd"
273
274 gdb_test "reverse-step" "mulsd.*" "reverse-step to mulsd"
275
276 gdb_test "info register xmm0" \
277     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
278     "verify xmm0 after reverse mulss"
279
280 gdb_test "info register xmm1" \
281     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
282     "verify xmm1 after reverse mulss"
283
284 gdb_test "info register xmm2" \
285     "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
286     "verify xmm2 after reverse mulss"
287
288 gdb_test "reverse-step" "mulps.*" "reverse-step to mulps"
289
290 gdb_test "info register xmm0" \
291     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
292     "verify xmm0 after reverse mulsd"
293
294 gdb_test "info register xmm1" \
295     "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
296     "verify xmm1 after reverse mulsd"
297
298 gdb_test "info register xmm2" \
299     "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \
300     "verify xmm2 after reverse mulsd"
301
302 gdb_test "reverse-step" "mulpd.*" "reverse-step to mulpd"
303
304 gdb_test "info register xmm0" \
305     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
306     "verify xmm0 after reverse mulps"
307
308 gdb_test "info register xmm1" \
309     "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
310     "verify xmm1 after reverse mulps"
311
312 gdb_test "info register xmm2" \
313     "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \
314     "verify xmm2 after reverse mulps"
315
316 gdb_test "reverse-step" "divss.*" "reverse-step to divss"
317
318 gdb_test "info register xmm0" \
319     "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \
320     "verify xmm0 after reverse mulpd"
321
322 gdb_test "info register xmm1" \
323     "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
324     "verify xmm1 after reverse mulpd"
325
326 gdb_test "info register xmm2" \
327     "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
328     "verify xmm2 after reverse mulpd"
329
330 gdb_test "reverse-step" "divsd.*" "reverse-step to divsd"
331
332 gdb_test "info register xmm0" \
333     "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \
334     "verify xmm0 after reverse divss"
335
336 gdb_test "info register xmm1" \
337     "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
338     "verify xmm1 after reverse divss"
339
340 gdb_test "info register xmm2" \
341     "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
342     "verify xmm2 after reverse divss"
343
344 gdb_test "reverse-step" "divps.*" "reverse-step to divps"
345
346 gdb_test "info register xmm0" \
347     "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \
348     "verify xmm0 after reverse divsd"
349
350 gdb_test "info register xmm1" \
351     "xmm1 .*uint128 = 0x00000000000000000000000080000000.*" \
352     "verify xmm1 after reverse divsd"
353
354 gdb_test "info register xmm2" \
355     "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
356     "verify xmm2 after reverse divsd"
357
358 gdb_test "reverse-step" "divpd.*" "reverse-step to divpd"
359
360 gdb_test "info register xmm0" \
361     "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \
362     "verify xmm0 after reverse divps"
363
364 gdb_test "info register xmm1" \
365     "xmm1 .*uint128 = 0x00000000000000000000000080000000.*" \
366     "verify xmm1 after reverse divps"
367
368 gdb_test "info register xmm2" \
369     "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
370     "verify xmm2 after reverse divps"
371
372 gdb_test "reverse-step" "cvtpd2ps.*" "reverse-step to cvtpd2ps"
373
374 gdb_test "info register xmm0" \
375     "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \
376     "verify xmm0 after reverse divpd"
377
378 gdb_test "info register xmm1" \
379     "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
380     "verify xmm1 after reverse divpd"
381
382 gdb_test "info register xmm2" \
383     "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
384     "verify xmm2 after reverse divpd"
385
386 gdb_test "reverse-step" "cvtpd2dq.*" "reverse-step to cvtpd2dq"
387
388 gdb_test "info register xmm0" \
389     "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \
390     "verify xmm0 after reverse cvtpd2ps"
391
392 gdb_test "info register xmm1" \
393     "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
394     "verify xmm1 after reverse cvtpd2ps"
395
396 gdb_test "info register xmm2" \
397     "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
398     "verify xmm2 after reverse cvtpd2ps"
399
400 gdb_test "reverse-step" "cvtdq2ps.*" "reverse-step to cvtdq2ps"
401
402 gdb_test "info register xmm0" \
403     "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \
404     "verify xmm0 after reverse cvtpd2dq"
405
406 gdb_test "info register xmm1" \
407     "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
408     "verify xmm1 after reverse cvtpd2dq"
409
410 gdb_test "info register xmm2" \
411     "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
412     "verify xmm2 after reverse cvtpd2dq"
413
414 gdb_test "reverse-step" "cvtdq2pd.*" "reverse-step to cvtdq2pd"
415
416 gdb_test "info register xmm0" \
417     "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \
418     "verify xmm0 after reverse cvtdq2ps"
419
420 gdb_test "info register xmm1" \
421     "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
422     "verify xmm1 after reverse cvtdq2ps"
423
424 gdb_test "info register xmm2" \
425     "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
426     "verify xmm2 after reverse cvtdq2ps"
427
428 gdb_test "reverse-step" "comiss.*" "reverse-step to comiss"
429
430 gdb_test "info register xmm0" \
431     "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \
432     "verify xmm0 after reverse cvtdq2pd"
433
434 gdb_test "info register xmm1" \
435     "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
436     "verify xmm1 after reverse cvtdq2pd"
437
438 gdb_test "info register xmm2" \
439     "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
440     "verify xmm2 after reverse cvtdq2pd"
441
442 gdb_test "reverse-step" "comisd.*" "reverse-step to comisd"
443
444 gdb_test "info register xmm0" \
445     "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \
446     "verify xmm0 after reverse comiss"
447
448 gdb_test "info register xmm1" \
449     "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
450     "verify xmm1 after reverse comiss"
451
452 gdb_test "info register xmm2" \
453     "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
454     "verify xmm2 after reverse comiss"
455
456 gdb_test "reverse-step" "cmpss.*" "reverse-step to cmpss"
457
458 gdb_test "info register xmm0" \
459     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
460     "verify xmm0 after reverse comisd"
461
462 gdb_test "info register xmm1" \
463     "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
464     "verify xmm1 after reverse comisd"
465
466 gdb_test "info register xmm2" \
467     "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
468     "verify xmm2 after reverse comisd"
469
470 gdb_test "reverse-step" "cmpsd.*" "reverse-step to cmpsd"
471
472 gdb_test "info register xmm0" \
473     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
474     "verify xmm0 after reverse cmpss"
475
476 gdb_test "info register xmm1" \
477     "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \
478     "verify xmm1 after reverse cmpss"
479
480 gdb_test "info register xmm2" \
481     "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
482     "verify xmm2 after reverse cmpss"
483
484 gdb_test "reverse-step" "cmpps.*" "reverse-step to cmpps"
485
486 gdb_test "info register xmm0" \
487     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
488     "verify xmm0 after reverse cmpsd"
489
490 gdb_test "info register xmm1" \
491     "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \
492     "verify xmm1 after reverse cmpsd"
493
494 gdb_test "info register xmm2" \
495     "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
496     "verify xmm2 after reverse cmpsd"
497
498 gdb_test "reverse-step" "cmppd.*" "reverse-step to cmppd"
499
500 gdb_test "info register xmm0" \
501     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
502     "verify xmm0 after reverse cmpps"
503
504 gdb_test "info register xmm1" \
505     "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
506     "verify xmm1 after reverse cmpps"
507
508 gdb_test "info register xmm2" \
509     "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
510     "verify xmm2 after reverse cmpps"
511
512 gdb_test "reverse-step" "andps.*" "reverse-step to andps"
513
514 gdb_test "info register xmm0" \
515     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
516     "verify xmm0 after reverse cmppd"
517
518 gdb_test "info register xmm1" \
519     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
520     "verify xmm1 after reverse cmppd"
521
522 gdb_test "info register xmm2" \
523     "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
524     "verify xmm2 after reverse cmppd"
525
526 gdb_test "reverse-step" "andpd.*" "reverse-step to andpd"
527
528 gdb_test "info register xmm0" \
529     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
530     "verify xmm0 after reverse andps"
531
532 gdb_test "info register xmm1" \
533     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
534     "verify xmm1 after reverse andps"
535
536 gdb_test "info register xmm2" \
537     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
538     "verify xmm2 after reverse andps"
539
540 gdb_test "reverse-step" "addsubps.*" "reverse-step to addsubps"
541
542 gdb_test "info register xmm0" \
543     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
544     "verify xmm0 after reverse andpd"
545
546 gdb_test "info register xmm1" \
547     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
548     "verify xmm1 after reverse andpd"
549
550 gdb_test "info register xmm2" \
551     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
552     "verify xmm2 after reverse andpd"
553
554 gdb_test "reverse-step" "addsubpd.*" "reverse-step to addsubpd"
555
556 gdb_test "info register xmm0" \
557     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
558     "verify xmm0 after reverse addsubps"
559
560 gdb_test "info register xmm1" \
561     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
562     "verify xmm1 after reverse addsubps"
563
564 gdb_test "info register xmm2" \
565     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
566     "verify xmm2 after reverse addsubps"
567
568 gdb_test "reverse-step" "addss.*" "reverse-step to addss"
569
570 gdb_test "info register xmm0" \
571     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
572     "verify xmm0 after reverse addsubpd"
573
574 gdb_test "info register xmm1" \
575     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
576     "verify xmm1 after reverse addsubpd"
577
578 gdb_test "info register xmm2" \
579     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
580     "verify xmm2 after reverse addsubpd"
581
582 gdb_test "reverse-step" "addsd.*" "reverse-step to addsd"
583
584 gdb_test "info register xmm0" \
585     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
586     "verify xmm0 after reverse addss"
587
588 gdb_test "info register xmm1" \
589     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
590     "verify xmm1 after reverse addss"
591
592 gdb_test "info register xmm2" \
593     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
594     "verify xmm2 after reverse addss"
595
596 gdb_test "reverse-step" "addps.*" "reverse-step to addps"
597
598 gdb_test "info register xmm0" \
599     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
600     "verify xmm0 after reverse addsd"
601
602 gdb_test "info register xmm1" \
603     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
604     "verify xmm1 after reverse addsd"
605
606 gdb_test "info register xmm2" \
607     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
608     "verify xmm2 after reverse addsd"
609
610 gdb_test "reverse-step" "addpd.*" "reverse-step to addpd"
611
612 gdb_test "info register xmm0" \
613     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
614     "verify xmm0 after reverse addps"
615
616 gdb_test "info register xmm1" \
617     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
618     "verify xmm1 after reverse addps"
619
620 gdb_test "info register xmm2" \
621     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
622     "verify xmm2 after reverse addps"
623
624
625 #sse4_test
626
627 gdb_test "continue" \
628     " end sse_test .*" \
629     "continue to end of sse_test #2"
630
631 gdb_test "break $end_sse4_test" \
632     "Breakpoint $decimal at .* line $end_sse4_test\." \
633     "set breakpoint at end of sse4_test"
634
635 set test "continue to end of sse4_test"
636 gdb_test_multiple "continue" $test {
637     -re " end sse4_test .*\r\n$gdb_prompt $" {
638         pass $test
639     }
640     -re " Illegal instruction.*\r\n$gdb_prompt $" {
641         untested i386-sse4-reverse
642         return -1
643     }
644 }
645
646 gdb_test "reverse-step" "blendvps.*" "reverse-step to blendvps"
647
648 gdb_test "info register xmm0" \
649     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252413121110.*" \
650     "verify xmm0 at end of sse4_test"
651
652 gdb_test "info register xmm1" \
653     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
654     "verify xmm1 at end of sse4_test"
655
656 gdb_test "info register xmm2" \
657     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
658     "verify xmm2 at end of sse4_test"
659
660 gdb_test "reverse-step" "blendvpd.*" "reverse-step to blendvpd"
661
662 gdb_test "info register xmm0" \
663     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252413121110.*" \
664     "verify xmm0 after reverse blendvps"
665
666 gdb_test "info register xmm1" \
667     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
668     "verify xmm1 after reverse blendvps"
669
670 gdb_test "info register xmm2" \
671     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
672     "verify xmm2 after reverse blendvps"
673
674 gdb_test "reverse-step" "blendps.*" "reverse-step to blendps"
675
676 gdb_test "info register xmm0" \
677     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09081716151413121110.*" \
678     "verify xmm0 after reverse blendvpd"
679
680 gdb_test "info register xmm1" \
681     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
682     "verify xmm1 after reverse blendvpd"
683
684 gdb_test "info register xmm2" \
685     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
686     "verify xmm2 after reverse blendvpd"
687
688 gdb_test "reverse-step" "blendpd.*" "reverse-step to blendpd"
689
690 gdb_test "info register xmm0" \
691     "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
692     "verify xmm0 after reverse blendps"
693
694 gdb_test "info register xmm1" \
695     "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
696     "verify xmm1 after reverse blendps"
697
698 gdb_test "info register xmm2" \
699     "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
700     "verify xmm2 after reverse blendps"