1 # Copyright 2009-2019 Free Software Foundation, Inc.
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.
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.
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/>.
16 # This file is part of the gdb testsuite.
19 # This test tests some i386 general instructions for reverse execution.
22 if ![supports_reverse] {
27 if ![istarget "*86*-*linux*"] then {
28 verbose "Skipping i386 reverse tests."
34 # some targets have leading underscores on assembly symbols.
35 set additional_flags [gdb_target_symbol_prefix_flags]
37 if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
38 [list debug $additional_flags]]} {
42 set end_of_main [gdb_get_line_number " end of main "]
43 set end_sse_test [gdb_get_line_number " end sse_test "]
44 set end_ssse3_test [gdb_get_line_number " end ssse3_test "]
45 set end_sse4_test [gdb_get_line_number " end sse4_test "]
49 if [supports_process_record] {
50 # Activate process record/replay
51 gdb_test_no_output "record" "turn on process record"
59 gdb_test "break $end_sse_test" \
60 "Breakpoint $decimal at .* line $end_sse_test\." \
61 "set breakpoint at end of sse_test"
63 set test "continue to end of sse_test"
64 gdb_test_multiple "continue" $test {
65 -re " end sse_test .*\r\n$gdb_prompt $" {
68 -re " Illegal instruction.*\r\n$gdb_prompt $" {
69 untested i386-sse-reverse
74 gdb_test "reverse-step" "xorps.*" "reverse-step to xorps"
76 gdb_test "info register xmm0" \
77 "xmm0 .*uint128 = 0xf000c00080008000f800c00080008000.*" \
78 "verify xmm0 at end of sse_test"
80 gdb_test "info register xmm1" \
81 "xmm1 .*uint128 = 0x70004000000000007800400000000000.*" \
82 "verify xmm1 at end of sse_test"
84 gdb_test "info register xmm2" \
85 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
86 "verify xmm2 at end of sse_test"
88 gdb_test "reverse-step" "xorpd.*" "reverse-step to xorpd"
90 gdb_test "info register xmm0" \
91 "xmm0 .*uint128 = 0xf000c00080008000f800c00080008000.*" \
92 "verify xmm0 after reverse xorps"
94 gdb_test "info register xmm1" \
95 "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \
96 "verify xmm1 after reverse xorps"
98 gdb_test "info register xmm2" \
99 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
100 "verify xmm2 after reverse xorps"
102 gdb_test "reverse-step" "unpckhps.*" "reverse-step to unpckhps"
104 gdb_test "info register xmm0" \
105 "xmm0 .*uint128 = 0x8000800080008000fff00000ffc00000.*" \
106 "verify xmm0 after reverse xorpd"
108 gdb_test "info register xmm1" \
109 "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \
110 "verify xmm1 after reverse xorpd"
112 gdb_test "info register xmm2" \
113 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
114 "verify xmm2 after reverse xorpd"
116 gdb_test "reverse-step" "unpckhpd.*" "reverse-step to unpckhpd"
118 gdb_test "info register xmm0" \
119 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
120 "verify xmm0 after reverse unpckhps"
122 gdb_test "info register xmm1" \
123 "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \
124 "verify xmm1 after reverse unpckhps"
126 gdb_test "info register xmm2" \
127 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
128 "verify xmm2 after reverse unpckhps"
130 gdb_test "reverse-step" "ucomiss.*" "reverse-step to ucomiss"
132 gdb_test "info register xmm0" \
133 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
134 "verify xmm0 after reverse unpckhpd"
136 gdb_test "info register xmm1" \
137 "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \
138 "verify xmm1 after reverse unpckhpd"
140 gdb_test "info register xmm2" \
141 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
142 "verify xmm2 after reverse unpckhpd"
144 gdb_test "reverse-step" "ucomisd.*" "reverse-step to ucomisd"
146 gdb_test "info register xmm0" \
147 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
148 "verify xmm0 after reverse ucomiss"
150 gdb_test "info register xmm1" \
151 "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \
152 "verify xmm1 after reverse ucomiss"
154 gdb_test "info register xmm2" \
155 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
156 "verify xmm2 after reverse ucomiss"
158 gdb_test "reverse-step" "packssdw.*" "reverse-step to packssdw"
160 gdb_test "info register xmm0" \
161 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
162 "verify xmm0 after reverse ucomisd"
164 gdb_test "info register xmm1" \
165 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
166 "verify xmm1 after reverse ucomisd"
168 gdb_test "info register xmm2" \
169 "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \
170 "verify xmm2 after reverse ucomisd"
172 gdb_test "reverse-step" "packsswb.*" "reverse-step to packsswb"
174 gdb_test "info register xmm0" \
175 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
176 "verify xmm0 after reverse packssdw"
178 gdb_test "info register xmm1" \
179 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
180 "verify xmm1 after reverse packssdw"
182 gdb_test "info register xmm2" \
183 "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
184 "verify xmm2 after reverse packssdw"
186 gdb_test "reverse-step" "orps.*" "reverse-step to orps"
188 gdb_test "info register xmm0" \
189 "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \
190 "verify xmm0 after reverse packsswb"
192 gdb_test "info register xmm1" \
193 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
194 "verify xmm1 after reverse packsswb"
196 gdb_test "info register xmm2" \
197 "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
198 "verify xmm2 after reverse packsswb"
200 gdb_test "reverse-step" "orpd.*" "reverse-step to orpd"
202 gdb_test "info register xmm0" \
203 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
204 "verify xmm0 after reverse orps"
206 gdb_test "info register xmm1" \
207 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
208 "verify xmm1 after reverse orps"
210 gdb_test "info register xmm2" \
211 "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
212 "verify xmm2 after reverse orps"
214 gdb_test "reverse-step" "mulss.*" "reverse-step to mulss"
216 gdb_test "info register xmm0" \
217 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
218 "verify xmm0 after reverse orpd"
220 gdb_test "info register xmm1" \
221 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
222 "verify xmm1 after reverse orpd"
224 gdb_test "info register xmm2" \
225 "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
226 "verify xmm2 after reverse orpd"
228 gdb_test "reverse-step" "mulsd.*" "reverse-step to mulsd"
230 gdb_test "info register xmm0" \
231 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
232 "verify xmm0 after reverse mulss"
234 gdb_test "info register xmm1" \
235 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
236 "verify xmm1 after reverse mulss"
238 gdb_test "info register xmm2" \
239 "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
240 "verify xmm2 after reverse mulss"
242 gdb_test "reverse-step" "mulps.*" "reverse-step to mulps"
244 gdb_test "info register xmm0" \
245 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
246 "verify xmm0 after reverse mulsd"
248 gdb_test "info register xmm1" \
249 "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \
250 "verify xmm1 after reverse mulsd"
252 gdb_test "info register xmm2" \
253 "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \
254 "verify xmm2 after reverse mulsd"
256 gdb_test "reverse-step" "mulpd.*" "reverse-step to mulpd"
258 gdb_test "info register xmm0" \
259 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
260 "verify xmm0 after reverse mulps"
262 gdb_test "info register xmm1" \
263 "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
264 "verify xmm1 after reverse mulps"
266 gdb_test "info register xmm2" \
267 "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \
268 "verify xmm2 after reverse mulps"
270 gdb_test "reverse-step" "divss.*" "reverse-step to divss"
272 gdb_test "info register xmm0" \
273 "xmm0 .*uint128 = 0xfff80000ffc00000.*" \
274 "verify xmm0 after reverse mulpd"
276 gdb_test "info register xmm1" \
277 "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
278 "verify xmm1 after reverse mulpd"
280 gdb_test "info register xmm2" \
281 "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
282 "verify xmm2 after reverse mulpd"
284 gdb_test "reverse-step" "divsd.*" "reverse-step to divsd"
286 gdb_test "info register xmm0" \
287 "xmm0 .*uint128 = 0x8000000080000000.*" \
288 "verify xmm0 after reverse divss"
290 gdb_test "info register xmm1" \
291 "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \
292 "verify xmm1 after reverse divss"
294 gdb_test "info register xmm2" \
295 "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
296 "verify xmm2 after reverse divss"
298 gdb_test "reverse-step" "divps.*" "reverse-step to divps"
300 gdb_test "info register xmm0" \
301 "xmm0 .*uint128 = 0x8000000080000000.*" \
302 "verify xmm0 after reverse divsd"
304 gdb_test "info register xmm1" \
305 "xmm1 .*uint128 = 0x80000000.*" \
306 "verify xmm1 after reverse divsd"
308 gdb_test "info register xmm2" \
309 "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \
310 "verify xmm2 after reverse divsd"
312 gdb_test "reverse-step" "divpd.*" "reverse-step to divpd"
314 gdb_test "info register xmm0" \
315 "xmm0 .*uint128 = 0x8000000080000000.*" \
316 "verify xmm0 after reverse divps"
318 gdb_test "info register xmm1" \
319 "xmm1 .*uint128 = 0x80000000.*" \
320 "verify xmm1 after reverse divps"
322 gdb_test "info register xmm2" \
323 "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
324 "verify xmm2 after reverse divps"
326 gdb_test "reverse-step" "cvtpd2ps.*" "reverse-step to cvtpd2ps"
328 gdb_test "info register xmm0" \
329 "xmm0 .*uint128 = 0x8000000080000000.*" \
330 "verify xmm0 after reverse divpd"
332 gdb_test "info register xmm1" \
333 "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
334 "verify xmm1 after reverse divpd"
336 gdb_test "info register xmm2" \
337 "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
338 "verify xmm2 after reverse divpd"
340 gdb_test "reverse-step" "cvtpd2dq.*" "reverse-step to cvtpd2dq"
342 gdb_test "info register xmm0" \
343 "xmm0 .*uint128 = 0xf0e0d0c0b0a090807060504ffffffff.*" \
344 "verify xmm0 after reverse cvtpd2ps"
346 gdb_test "info register xmm1" \
347 "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
348 "verify xmm1 after reverse cvtpd2ps"
350 gdb_test "info register xmm2" \
351 "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
352 "verify xmm2 after reverse cvtpd2ps"
354 gdb_test "reverse-step" "cvtdq2ps.*" "reverse-step to cvtdq2ps"
356 gdb_test "info register xmm0" \
357 "xmm0 .*uint128 = 0xf0e0d0c0b0a090807060504ffffffff.*" \
358 "verify xmm0 after reverse cvtpd2dq"
360 gdb_test "info register xmm1" \
361 "xmm1 .*uint128 = 0xffffffffffffffff.*" \
362 "verify xmm1 after reverse cvtpd2dq"
364 gdb_test "info register xmm2" \
365 "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
366 "verify xmm2 after reverse cvtpd2dq"
368 gdb_test "reverse-step" "cvtdq2pd.*" "reverse-step to cvtdq2pd"
370 gdb_test "info register xmm0" \
371 "xmm0 .*uint128 = 0xf0e0d0c0b0a090807060504ffffffff.*" \
372 "verify xmm0 after reverse cvtdq2ps"
374 gdb_test "info register xmm1" \
375 "xmm1 .*uint128 = 0xffffffffffffffff.*" \
376 "verify xmm1 after reverse cvtdq2ps"
378 gdb_test "info register xmm2" \
379 "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
380 "verify xmm2 after reverse cvtdq2ps"
382 gdb_test "reverse-step" "comiss.*" "reverse-step to comiss"
384 gdb_test "info register xmm0" \
385 "xmm0 .*uint128 = 0xf0e0d0c0b0a090807060504ffffffff.*" \
386 "verify xmm0 after reverse cvtdq2pd"
388 gdb_test "info register xmm1" \
389 "xmm1 .*uint128 = 0xffffffffffffffff.*" \
390 "verify xmm1 after reverse cvtdq2pd"
392 gdb_test "info register xmm2" \
393 "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
394 "verify xmm2 after reverse cvtdq2pd"
396 gdb_test "reverse-step" "comisd.*" "reverse-step to comisd"
398 gdb_test "info register xmm0" \
399 "xmm0 .*uint128 = 0xf0e0d0c0b0a090807060504ffffffff.*" \
400 "verify xmm0 after reverse comiss"
402 gdb_test "info register xmm1" \
403 "xmm1 .*uint128 = 0xffffffffffffffff.*" \
404 "verify xmm1 after reverse comiss"
406 gdb_test "info register xmm2" \
407 "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
408 "verify xmm2 after reverse comiss"
410 gdb_test "reverse-step" "cmpss.*" "reverse-step to cmpss"
412 gdb_test "info register xmm0" \
413 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
414 "verify xmm0 after reverse comisd"
416 gdb_test "info register xmm1" \
417 "xmm1 .*uint128 = 0xffffffffffffffff.*" \
418 "verify xmm1 after reverse comisd"
420 gdb_test "info register xmm2" \
421 "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
422 "verify xmm2 after reverse comisd"
424 gdb_test "reverse-step" "cmpsd.*" "reverse-step to cmpsd"
426 gdb_test "info register xmm0" \
427 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
428 "verify xmm0 after reverse cmpss"
430 gdb_test "info register xmm1" \
431 "xmm1 .*uint128 = 0x.*" \
432 "verify xmm1 after reverse cmpss"
434 gdb_test "info register xmm2" \
435 "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
436 "verify xmm2 after reverse cmpss"
438 gdb_test "reverse-step" "cmpps.*" "reverse-step to cmpps"
440 gdb_test "info register xmm0" \
441 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
442 "verify xmm0 after reverse cmpsd"
444 gdb_test "info register xmm1" \
445 "xmm1 .*uint128 = 0x.*" \
446 "verify xmm1 after reverse cmpsd"
448 gdb_test "info register xmm2" \
449 "xmm2 .*uint128 = 0xf0e0d0c0b0a09082726252400000000.*" \
450 "verify xmm2 after reverse cmpsd"
452 gdb_test "reverse-step" "cmppd.*" "reverse-step to cmppd"
454 gdb_test "info register xmm0" \
455 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
456 "verify xmm0 after reverse cmpps"
458 gdb_test "info register xmm1" \
459 "xmm1 .*uint128 = 0xf0e0d0c0b0a09082726252400000000.*" \
460 "verify xmm1 after reverse cmpps"
462 gdb_test "info register xmm2" \
463 "xmm2 .*uint128 = 0xf0e0d0c0b0a09082726252400000000.*" \
464 "verify xmm2 after reverse cmpps"
466 gdb_test "reverse-step" "andps.*" "reverse-step to andps"
468 gdb_test "info register xmm0" \
469 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
470 "verify xmm0 after reverse cmppd"
472 gdb_test "info register xmm1" \
473 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
474 "verify xmm1 after reverse cmppd"
476 gdb_test "info register xmm2" \
477 "xmm2 .*uint128 = 0xf0e0d0c0b0a09082726252400000000.*" \
478 "verify xmm2 after reverse cmppd"
480 gdb_test "reverse-step" "andpd.*" "reverse-step to andpd"
482 gdb_test "info register xmm0" \
483 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
484 "verify xmm0 after reverse andps"
486 gdb_test "info register xmm1" \
487 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
488 "verify xmm1 after reverse andps"
490 gdb_test "info register xmm2" \
491 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
492 "verify xmm2 after reverse andps"
494 gdb_test "reverse-step" "addsubps.*" "reverse-step to addsubps"
496 gdb_test "info register xmm0" \
497 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
498 "verify xmm0 after reverse andpd"
500 gdb_test "info register xmm1" \
501 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
502 "verify xmm1 after reverse andpd"
504 gdb_test "info register xmm2" \
505 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
506 "verify xmm2 after reverse andpd"
508 gdb_test "reverse-step" "addsubpd.*" "reverse-step to addsubpd"
510 gdb_test "info register xmm0" \
511 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050423222120.*" \
512 "verify xmm0 after reverse addsubps"
514 gdb_test "info register xmm1" \
515 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
516 "verify xmm1 after reverse addsubps"
518 gdb_test "info register xmm2" \
519 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
520 "verify xmm2 after reverse addsubps"
522 gdb_test "reverse-step" "addss.*" "reverse-step to addss"
524 gdb_test "info register xmm0" \
525 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
526 "verify xmm0 after reverse addsubpd"
528 gdb_test "info register xmm1" \
529 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
530 "verify xmm1 after reverse addsubpd"
532 gdb_test "info register xmm2" \
533 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
534 "verify xmm2 after reverse addsubpd"
536 gdb_test "reverse-step" "addsd.*" "reverse-step to addsd"
538 gdb_test "info register xmm0" \
539 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
540 "verify xmm0 after reverse addss"
542 gdb_test "info register xmm1" \
543 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
544 "verify xmm1 after reverse addss"
546 gdb_test "info register xmm2" \
547 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
548 "verify xmm2 after reverse addss"
550 gdb_test "reverse-step" "addps.*" "reverse-step to addps"
552 gdb_test "info register xmm0" \
553 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
554 "verify xmm0 after reverse addsd"
556 gdb_test "info register xmm1" \
557 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
558 "verify xmm1 after reverse addsd"
560 gdb_test "info register xmm2" \
561 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
562 "verify xmm2 after reverse addsd"
564 gdb_test "reverse-step" "addpd.*" "reverse-step to addpd"
566 gdb_test "info register xmm0" \
567 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
568 "verify xmm0 after reverse addps"
570 gdb_test "info register xmm1" \
571 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
572 "verify xmm1 after reverse addps"
574 gdb_test "info register xmm2" \
575 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
576 "verify xmm2 after reverse addps"
581 gdb_test "continue" \
583 "continue to end of sse_test #2"
585 gdb_test "break $end_ssse3_test" \
586 "Breakpoint $decimal at .* line $end_ssse3_test\." \
587 "set breakpoint at end of ssse3_test"
589 set test "continue to end of ssse3_test"
590 gdb_test_multiple "continue" $test {
591 -re " end ssse3_test .*\r\n$gdb_prompt $" {
594 -re " Illegal instruction.*\r\n$gdb_prompt $" {
595 untested i386-ssse3-reverse
600 gdb_test "info register xmm0" \
601 "xmm0 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
602 "verify xmm0 at end of ssse3_test"
604 gdb_test "info register xmm1" \
605 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
606 "verify xmm1 at end of ssse3_test"
608 gdb_test "info register xmm2" \
609 "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
610 "verify xmm2 at end of ssse3_test"
612 gdb_test "reverse-step" "pabsd.*" "reverse-step to pabsd"
614 gdb_test "info register xmm0" \
615 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
616 "verify xmm0 after reverse pabsd"
618 gdb_test "info register xmm1" \
619 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
620 "verify xmm1 after reverse pabsd"
622 gdb_test "info register xmm2" \
623 "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
624 "verify xmm2 after reverse pabsd"
626 gdb_test "reverse-step" "pabsw.*" "reverse-step to pabsw"
628 gdb_test "info register xmm0" \
629 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
630 "verify xmm0 after reverse pabsw"
632 gdb_test "info register xmm1" \
633 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
634 "verify xmm1 after reverse pabsw"
636 gdb_test "info register xmm2" \
637 "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
638 "verify xmm2 after reverse pabsw"
640 gdb_test "reverse-step" "pabsb.*" "reverse-step to pabsb"
642 gdb_test "info register xmm0" \
643 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
644 "verify xmm0 after reverse pabsb"
646 gdb_test "info register xmm1" \
647 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
648 "verify xmm1 after reverse pabsb"
650 gdb_test "info register xmm2" \
651 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
652 "verify xmm2 after reverse pabsb"
657 gdb_test "continue" \
658 " end ssse3_test .*" \
659 "continue to end of ssse3_test #2"
661 gdb_test "break $end_sse4_test" \
662 "Breakpoint $decimal at .* line $end_sse4_test\." \
663 "set breakpoint at end of sse4_test"
665 set test "continue to end of sse4_test"
666 gdb_test_multiple "continue" $test {
667 -re " end sse4_test .*\r\n$gdb_prompt $" {
670 -re " Illegal instruction.*\r\n$gdb_prompt $" {
671 untested i386-sse4-reverse
676 gdb_test "reverse-step" "blendvps.*" "reverse-step to blendvps"
678 gdb_test "info register xmm0" \
679 "xmm0 .*uint128 = 0xf0e0d0c0b0a09082726252413121110.*" \
680 "verify xmm0 at end of sse4_test"
682 gdb_test "info register xmm1" \
683 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
684 "verify xmm1 at end of sse4_test"
686 gdb_test "info register xmm2" \
687 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
688 "verify xmm2 at end of sse4_test"
690 gdb_test "reverse-step" "blendvpd.*" "reverse-step to blendvpd"
692 gdb_test "info register xmm0" \
693 "xmm0 .*uint128 = 0xf0e0d0c0b0a09082726252413121110.*" \
694 "verify xmm0 after reverse blendvps"
696 gdb_test "info register xmm1" \
697 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
698 "verify xmm1 after reverse blendvps"
700 gdb_test "info register xmm2" \
701 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
702 "verify xmm2 after reverse blendvps"
704 gdb_test "reverse-step" "blendps.*" "reverse-step to blendps"
706 gdb_test "info register xmm0" \
707 "xmm0 .*uint128 = 0xf0e0d0c0b0a09081716151413121110.*" \
708 "verify xmm0 after reverse blendvpd"
710 gdb_test "info register xmm1" \
711 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
712 "verify xmm1 after reverse blendvpd"
714 gdb_test "info register xmm2" \
715 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
716 "verify xmm2 after reverse blendvpd"
718 gdb_test "reverse-step" "blendpd.*" "reverse-step to blendpd"
720 gdb_test "info register xmm0" \
721 "xmm0 .*uint128 = 0xf0e0d0c0b0a09080706050403020100.*" \
722 "verify xmm0 after reverse blendps"
724 gdb_test "info register xmm1" \
725 "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
726 "verify xmm1 after reverse blendps"
728 gdb_test "info register xmm2" \
729 "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
730 "verify xmm2 after reverse blendps"