diff options
author | Hui Zhu <teawater@gmail.com> | 2010-04-02 05:13:09 +0000 |
---|---|---|
committer | Hui Zhu <teawater@gmail.com> | 2010-04-02 05:13:09 +0000 |
commit | eb8e76db62be7f9c66669baa51ba660b445cd835 (patch) | |
tree | 2bf621275897f0efd7add5fece01834f05ca3b3b /gdb/testsuite/gdb.reverse/i386-sse-reverse.exp | |
parent | a3c4230a6352173ed7b57e835478cbae4e2d8327 (diff) | |
download | binutils-gdb-eb8e76db62be7f9c66669baa51ba660b445cd835.tar.gz |
2010-04-02 Hui Zhu <teawater@gmail.com>
Michael Snyder <msnyder@vmware.com>
* gdb.reverse/i386-sse-reverse.exp: New file.
* gdb.reverse/i386-sse-reverse.c: New file.
Diffstat (limited to 'gdb/testsuite/gdb.reverse/i386-sse-reverse.exp')
-rw-r--r-- | gdb/testsuite/gdb.reverse/i386-sse-reverse.exp | 705 |
1 files changed, 705 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp new file mode 100644 index 00000000000..872d0cfd60b --- /dev/null +++ b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp @@ -0,0 +1,705 @@ +# Copyright 2009, 2010 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# This file is part of the gdb testsuite. + +# +# This test tests some i386 general instructions for reverse execution. +# + +if ![target_info exists gdb,can_reverse] { + return +} + +if $tracelevel { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +if ![istarget "*86*-*linux*"] then { + verbose "Skipping i386 reverse tests." + return +} + +set testfile "i386-sse-reverse" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +# some targets have leading underscores on assembly symbols. +# TODO: detect this automatically +set additional_flags "" +if [istarget "i?86-*-cygwin*"] then { + set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\"" +} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } { + untested i386-sse-reverse + return -1 +} + +set end_of_main [gdb_get_line_number " end of main "] +set end_sse_test [gdb_get_line_number " end sse_test "] +set end_sse4_test [gdb_get_line_number " end sse4_test "] + +# Get things started. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} +runto main + +if [target_info exists gdb,use_precord] { + # Activate process record/replay + gdb_test "record" "" "Turn on process record" + # FIXME: command ought to acknowledge, so we can test if it succeeded. +} + +global hex +global decimal + +#sse_test + +gdb_test "break $end_sse_test" \ + "Breakpoint $decimal at .* line $end_sse_test\." \ + "set breakpoint at end of sse_test" + +gdb_test "continue" \ + " end sse_test .*" \ + "continue to end of sse_test" + +gdb_test "reverse-step" "xorps.*" "reverse-step to xorps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \ + "verify xmm0 at end of sse_test" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x00ff00ff0000000000ff00ff00000000.*" \ + "verify xmm1 at end of sse_test" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 at end of sse_test" + +gdb_test "reverse-step" "xorpd.*" "reverse-step to xorpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \ + "verify xmm0 after reverse xorps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ + "verify xmm1 after reverse xorps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse xorps" + +gdb_test "reverse-step" "unpckhps.*" "reverse-step to unpckhps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x7fff7fff7fff7fff0108000001400000.*" \ + "verify xmm0 after reverse xorpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ + "verify xmm1 after reverse xorpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse xorpd" + +gdb_test "reverse-step" "unpckhpd.*" "reverse-step to unpckhpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm0 after reverse unpckhps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ + "verify xmm1 after reverse unpckhps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse unpckhps" + +gdb_test "reverse-step" "ucomiss.*" "reverse-step to ucomiss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm0 after reverse unpckhpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ + "verify xmm1 after reverse unpckhpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse unpckhpd" + +gdb_test "reverse-step" "ucomisd.*" "reverse-step to ucomisd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm0 after reverse ucomiss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ + "verify xmm1 after reverse ucomiss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse ucomiss" + +gdb_test "reverse-step" "packssdw.*" "reverse-step to packssdw" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm0 after reverse ucomisd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm1 after reverse ucomisd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ + "verify xmm2 after reverse ucomisd" + +gdb_test "reverse-step" "packsswb.*" "reverse-step to packsswb" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm0 after reverse packssdw" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm1 after reverse packssdw" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm2 after reverse packssdw" + +gdb_test "reverse-step" "pabsd.*" "reverse-step to pabsd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ + "verify xmm0 after reverse packsswb" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm1 after reverse packsswb" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm2 after reverse packsswb" + +gdb_test "reverse-step" "pabsw.*" "reverse-step to pabsw" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ + "verify xmm0 after reverse pabsd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse pabsd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x01080000014000000108000001400000.*" \ + "verify xmm2 after reverse pabsd" + +gdb_test "reverse-step" "pabsb.*" "reverse-step to pabsb" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ + "verify xmm0 after reverse pabsw" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse pabsw" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm2 after reverse pabsw" + +gdb_test "reverse-step" "orps.*" "reverse-step to orps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ + "verify xmm0 after reverse pabsb" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse pabsb" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm2 after reverse pabsb" + +gdb_test "reverse-step" "orpd.*" "reverse-step to orpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse orps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse orps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm2 after reverse orps" + +gdb_test "reverse-step" "mulss.*" "reverse-step to mulss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse orpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse orpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm2 after reverse orpd" + +gdb_test "reverse-step" "mulsd.*" "reverse-step to mulsd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse mulss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse mulss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm2 after reverse mulss" + +gdb_test "reverse-step" "mulps.*" "reverse-step to mulps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse mulsd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ + "verify xmm1 after reverse mulsd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \ + "verify xmm2 after reverse mulsd" + +gdb_test "reverse-step" "mulpd.*" "reverse-step to mulpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse mulps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm1 after reverse mulps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff0000000000000fff00000ffc00000.*" \ + "verify xmm2 after reverse mulps" + +gdb_test "reverse-step" "divss.*" "reverse-step to divss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0000000000000000fff80000ffc00000.*" \ + "verify xmm0 after reverse mulpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm1 after reverse mulpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \ + "verify xmm2 after reverse mulpd" + +gdb_test "reverse-step" "divsd.*" "reverse-step to divsd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \ + "verify xmm0 after reverse divss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ + "verify xmm1 after reverse divss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \ + "verify xmm2 after reverse divss" + +gdb_test "reverse-step" "divps.*" "reverse-step to divps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \ + "verify xmm0 after reverse divsd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x00000000000000000000000080000000.*" \ + "verify xmm1 after reverse divsd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xfff0000000000000fff0000000000000.*" \ + "verify xmm2 after reverse divsd" + +gdb_test "reverse-step" "divpd.*" "reverse-step to divpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \ + "verify xmm0 after reverse divps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x00000000000000000000000080000000.*" \ + "verify xmm1 after reverse divps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \ + "verify xmm2 after reverse divps" + +gdb_test "reverse-step" "cvtpd2ps.*" "reverse-step to cvtpd2ps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \ + "verify xmm0 after reverse divpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \ + "verify xmm1 after reverse divpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \ + "verify xmm2 after reverse divpd" + +gdb_test "reverse-step" "cvtpd2dq.*" "reverse-step to cvtpd2dq" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \ + "verify xmm0 after reverse cvtpd2ps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \ + "verify xmm1 after reverse cvtpd2ps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \ + "verify xmm2 after reverse cvtpd2ps" + +gdb_test "reverse-step" "cvtdq2ps.*" "reverse-step to cvtdq2ps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \ + "verify xmm0 after reverse cvtpd2dq" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \ + "verify xmm1 after reverse cvtpd2dq" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \ + "verify xmm2 after reverse cvtpd2dq" + +gdb_test "reverse-step" "cvtdq2pd.*" "reverse-step to cvtdq2pd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \ + "verify xmm0 after reverse cvtdq2ps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \ + "verify xmm1 after reverse cvtdq2ps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \ + "verify xmm2 after reverse cvtdq2ps" + +gdb_test "reverse-step" "comiss.*" "reverse-step to comiss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \ + "verify xmm0 after reverse cvtdq2pd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \ + "verify xmm1 after reverse cvtdq2pd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \ + "verify xmm2 after reverse cvtdq2pd" + +gdb_test "reverse-step" "comisd.*" "reverse-step to comisd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a090807060504ffffffff.*" \ + "verify xmm0 after reverse comiss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \ + "verify xmm1 after reverse comiss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \ + "verify xmm2 after reverse comiss" + +gdb_test "reverse-step" "cmpss.*" "reverse-step to cmpss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse comisd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \ + "verify xmm1 after reverse comisd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \ + "verify xmm2 after reverse comisd" + +gdb_test "reverse-step" "cmpsd.*" "reverse-step to cmpsd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse cmpss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \ + "verify xmm1 after reverse cmpss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \ + "verify xmm2 after reverse cmpss" + +gdb_test "reverse-step" "cmpps.*" "reverse-step to cmpps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse cmpsd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \ + "verify xmm1 after reverse cmpsd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \ + "verify xmm2 after reverse cmpsd" + +gdb_test "reverse-step" "cmppd.*" "reverse-step to cmppd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse cmpps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \ + "verify xmm1 after reverse cmpps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \ + "verify xmm2 after reverse cmpps" + +gdb_test "reverse-step" "andps.*" "reverse-step to andps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse cmppd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \ + "verify xmm1 after reverse cmppd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \ + "verify xmm2 after reverse cmppd" + +gdb_test "reverse-step" "andpd.*" "reverse-step to andpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse andps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \ + "verify xmm1 after reverse andps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse andps" + +gdb_test "reverse-step" "addsubps.*" "reverse-step to addsubps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse andpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \ + "verify xmm1 after reverse andpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse andpd" + +gdb_test "reverse-step" "addsubpd.*" "reverse-step to addsubpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \ + "verify xmm0 after reverse addsubps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \ + "verify xmm1 after reverse addsubps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse addsubps" + +gdb_test "reverse-step" "addss.*" "reverse-step to addss" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ + "verify xmm0 after reverse addsubpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \ + "verify xmm1 after reverse addsubpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse addsubpd" + +gdb_test "reverse-step" "addsd.*" "reverse-step to addsd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ + "verify xmm0 after reverse addss" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse addss" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse addss" + +gdb_test "reverse-step" "addps.*" "reverse-step to addps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ + "verify xmm0 after reverse addsd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse addsd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse addsd" + +gdb_test "reverse-step" "addpd.*" "reverse-step to addpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ + "verify xmm0 after reverse addps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse addps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse addps" + + +#sse4_test + +send_gdb "continue\n" + +gdb_test "break $end_sse4_test" \ + "Breakpoint $decimal at .* line $end_sse4_test\." \ + "set breakpoint at end of sse4_test" + +send_gdb "continue\n" +gdb_expect { + -re " end sse4_test .*" { + pass "continue to end of sse4_test" + } + -re " Illegal instruction.*" { + untested i386-sse4-reverse + return -1 + } +} + +gdb_test "reverse-step" "blendvps.*" "reverse-step to blendvps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252413121110.*" \ + "verify xmm0 at end of sse4_test" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 at end of sse4_test" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 at end of sse4_test" + +gdb_test "reverse-step" "blendvpd.*" "reverse-step to blendvpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252413121110.*" \ + "verify xmm0 after reverse blendvps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse blendvps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse blendvps" + +gdb_test "reverse-step" "blendps.*" "reverse-step to blendps" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09081716151413121110.*" \ + "verify xmm0 after reverse blendvpd" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse blendvpd" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse blendvpd" + +gdb_test "reverse-step" "blendpd.*" "reverse-step to blendpd" + +gdb_test "info register xmm0" \ + "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ + "verify xmm0 after reverse blendps" + +gdb_test "info register xmm1" \ + "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ + "verify xmm1 after reverse blendps" + +gdb_test "info register xmm2" \ + "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ + "verify xmm2 after reverse blendps" |