Index: gdb/testsuite/gdb.reverse/i386-sse-reverse.exp |
diff --git a/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp |
index 530b2aa4bb16bbd7e29a4c25f51941f342e07621..6bc21c9daaf587d38105d1a4803b0d595154c058 100644 |
--- a/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp |
+++ b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp |
@@ -23,38 +23,27 @@ if ![supports_reverse] { |
return |
} |
-if $tracelevel { |
- strace $tracelevel |
-} |
- |
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} |
+standard_testfile |
# some targets have leading underscores on assembly symbols. |
set additional_flags [gdb_target_symbol_prefix_flags] |
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } { |
- untested i386-sse-reverse |
+if {[prepare_for_testing $testfile.exp $testfile $srcfile \ |
+ [list debug $additional_flags]]} { |
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_ssse3_test [gdb_get_line_number " end ssse3_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 [supports_process_record] { |
@@ -71,177 +60,142 @@ 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" |
+set test "continue to end of sse_test" |
+gdb_test_multiple "continue" $test { |
+ -re " end sse_test .*\r\n$gdb_prompt $" { |
+ pass $test |
+ } |
+ -re " Illegal instruction.*\r\n$gdb_prompt $" { |
+ untested i386-sse-reverse |
+ return -1 |
+ } |
+} |
gdb_test "reverse-step" "xorps.*" "reverse-step to xorps" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \ |
+ "xmm0 .*uint128 = 0xf000c00080008000f800c00080008000.*" \ |
"verify xmm0 at end of sse_test" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x00ff00ff0000000000ff00ff00000000.*" \ |
+ "xmm1 .*uint128 = 0x70004000000000007800400000000000.*" \ |
"verify xmm1 at end of sse_test" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 at end of sse_test" |
gdb_test "reverse-step" "xorpd.*" "reverse-step to xorpd" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x7f007f007fff7fff7f007f007fff7fff.*" \ |
+ "xmm0 .*uint128 = 0xf000c00080008000f800c00080008000.*" \ |
"verify xmm0 after reverse xorps" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ |
+ "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \ |
"verify xmm1 after reverse xorps" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 after reverse xorps" |
gdb_test "reverse-step" "unpckhps.*" "reverse-step to unpckhps" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x7fff7fff7fff7fff0108000001400000.*" \ |
+ "xmm0 .*uint128 = 0x8000800080008000fff00000ffc00000.*" \ |
"verify xmm0 after reverse xorpd" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ |
+ "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \ |
"verify xmm1 after reverse xorpd" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 after reverse xorpd" |
gdb_test "reverse-step" "unpckhpd.*" "reverse-step to unpckhpd" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ |
+ "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ |
"verify xmm0 after reverse unpckhps" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ |
+ "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \ |
"verify xmm1 after reverse unpckhps" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 after reverse unpckhps" |
gdb_test "reverse-step" "ucomiss.*" "reverse-step to ucomiss" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ |
+ "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ |
"verify xmm0 after reverse unpckhpd" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ |
+ "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \ |
"verify xmm1 after reverse unpckhpd" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 after reverse unpckhpd" |
gdb_test "reverse-step" "ucomisd.*" "reverse-step to ucomisd" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ |
+ "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ |
"verify xmm0 after reverse ucomiss" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \ |
+ "xmm1 .*uint128 = 0x80008000800080008000800080008000.*" \ |
"verify xmm1 after reverse ucomiss" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"verify xmm2 after reverse ucomiss" |
gdb_test "reverse-step" "packssdw.*" "reverse-step to packssdw" |
gdb_test "info register xmm0" \ |
- "xmm0 .*uint128 = 0x01080000014000000108000001400000.*" \ |
+ "xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ |
"verify xmm0 after reverse ucomisd" |
gdb_test "info register xmm1" \ |
- "xmm1 .*uint128 = 0x01080000014000000108000001400000.*" \ |
+ "xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ |
"verify xmm1 after reverse ucomisd" |
gdb_test "info register xmm2" \ |
- "xmm2 .*uint128 = 0x7f007f007f007f007f007f007f007f00.*" \ |
+ "xmm2 .*uint128 = 0xf000c000f800c000f000c000f000c000.*" \ |
"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" |
+ "verify xmm0 after reverse packssdw" |
gdb_test "info register xmm1" \ |
"xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ |
- "verify xmm1 after reverse pabsw" |
+ "verify xmm1 after reverse packssdw" |
gdb_test "info register xmm2" \ |
"xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ |
- "verify xmm2 after reverse pabsw" |
+ "verify xmm2 after reverse packssdw" |
gdb_test "reverse-step" "orps.*" "reverse-step to orps" |
gdb_test "info register xmm0" \ |
"xmm0 .*uint128 = 0xfff00000ffc00000fff80000ffc00000.*" \ |
- "verify xmm0 after reverse pabsb" |
+ "verify xmm0 after reverse packsswb" |
gdb_test "info register xmm1" \ |
"xmm1 .*uint128 = 0xfff80000ffc00000fff80000ffc00000.*" \ |
- "verify xmm1 after reverse pabsb" |
+ "verify xmm1 after reverse packsswb" |
gdb_test "info register xmm2" \ |
"xmm2 .*uint128 = 0xfff00000ffc00000fff00000ffc00000.*" \ |
- "verify xmm2 after reverse pabsb" |
+ "verify xmm2 after reverse packsswb" |
gdb_test "reverse-step" "orpd.*" "reverse-step to orpd" |
@@ -622,12 +576,88 @@ gdb_test "info register xmm2" \ |
"verify xmm2 after reverse addps" |
-#sse4_test |
+#ssse3_test |
gdb_test "continue" \ |
" end sse_test .*" \ |
"continue to end of sse_test #2" |
+gdb_test "break $end_ssse3_test" \ |
+ "Breakpoint $decimal at .* line $end_ssse3_test\." \ |
+ "set breakpoint at end of ssse3_test" |
+ |
+set test "continue to end of ssse3_test" |
+gdb_test_multiple "continue" $test { |
+ -re " end ssse3_test .*\r\n$gdb_prompt $" { |
+ pass $test |
+ } |
+ -re " Illegal instruction.*\r\n$gdb_prompt $" { |
+ untested i386-ssse3-reverse |
+ return -1 |
+ } |
+} |
+ |
+gdb_test "info register xmm0" \ |
+ "xmm0 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm0 at end of ssse3_test" |
+ |
+gdb_test "info register xmm1" \ |
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm1 at end of ssse3_test" |
+ |
+gdb_test "info register xmm2" \ |
+ "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm2 at end of ssse3_test" |
+ |
+gdb_test "reverse-step" "pabsd.*" "reverse-step to pabsd" |
+ |
+gdb_test "info register xmm0" \ |
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ |
+ "verify xmm0 after reverse pabsd" |
+ |
+gdb_test "info register xmm1" \ |
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm1 after reverse pabsd" |
+ |
+gdb_test "info register xmm2" \ |
+ "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm2 after reverse pabsd" |
+ |
+gdb_test "reverse-step" "pabsw.*" "reverse-step to pabsw" |
+ |
+gdb_test "info register xmm0" \ |
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ |
+ "verify xmm0 after reverse pabsw" |
+ |
+gdb_test "info register xmm1" \ |
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm1 after reverse pabsw" |
+ |
+gdb_test "info register xmm2" \ |
+ "xmm2 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm2 after reverse pabsw" |
+ |
+gdb_test "reverse-step" "pabsb.*" "reverse-step to pabsb" |
+ |
+gdb_test "info register xmm0" \ |
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \ |
+ "verify xmm0 after reverse pabsb" |
+ |
+gdb_test "info register xmm1" \ |
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \ |
+ "verify xmm1 after reverse pabsb" |
+ |
+gdb_test "info register xmm2" \ |
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \ |
+ "verify xmm2 after reverse pabsb" |
+ |
+ |
+#sse4_test |
+ |
+gdb_test "continue" \ |
+ " end ssse3_test .*" \ |
+ "continue to end of ssse3_test #2" |
+ |
gdb_test "break $end_sse4_test" \ |
"Breakpoint $decimal at .* line $end_sse4_test\." \ |
"set breakpoint at end of sse4_test" |