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