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