aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorGuinevere Larsen <guinevere@redhat.com>2025-06-13 10:09:19 -0300
committerGuinevere Larsen <guinevere@redhat.com>2025-07-11 11:55:34 -0300
commit7f774c3914d0b43ca26c17790461f0b06c1c227e (patch)
treefda7b75275327a76d16389bc4188d4ea826b5a01 /gdb/testsuite
parent6f129dba1dc0795aa810b2a8c246fd92a198f7e2 (diff)
downloadbinutils-7f774c3914d0b43ca26c17790461f0b06c1c227e.zip
binutils-7f774c3914d0b43ca26c17790461f0b06c1c227e.tar.gz
binutils-7f774c3914d0b43ca26c17790461f0b06c1c227e.tar.bz2
gdb/record: add support for comis instructions
This commit adds support for the following instructions: * VCOMIS[S|D] * VUCOMIS[S|D] And associanted tests.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/gdb.reverse/i386-avx-reverse.c23
-rw-r--r--gdb/testsuite/gdb.reverse/i386-avx-reverse.exp23
2 files changed, 46 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
index c414803..863f5b6 100644
--- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
+++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
@@ -654,6 +654,28 @@ blend_test ()
return 0; /* end blend_test */
}
+int
+compare_test ()
+{
+ /* start compare_test. */
+ /* Using GDB, load these values onto registers for testing.
+ xmm0.v4_float = {0, 1.5, 2, 0}
+ xmm1.v4_float = {0, 1, 2.5, -1}
+ xmm15.v4_float = {-1, -2, 10, 100}
+ eflags = 2
+ eflags can't be set to some values, if we set it to 0, it'll
+ be reset to 2, so set it to that directly to make results less
+ confusing.
+ this way it's easy to confirm we're undoing things correctly. */
+
+ asm volatile ("vcomisd %xmm0, %xmm1");
+ asm volatile ("vcomiss %xmm15, %xmm1");
+ asm volatile ("vucomiss %xmm1, %xmm15");
+ asm volatile ("vucomisd %xmm15, %xmm0");
+
+ return 0; /* end compare_test */
+}
+
/* This include is used to allocate the dynamic buffer and have
the pointers aligned to a 32-bit boundary, so we can test instructions
that require aligned memory. */
@@ -691,5 +713,6 @@ main ()
permute_test ();
extract_insert_test ();
blend_test ();
+ compare_test ();
return 0; /* end of main */
}
diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
index 7307f88..f401aef 100644
--- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
@@ -1054,3 +1054,26 @@ if {[record_full_function "blend"] == true} {
}
gdb_test "finish" "Run till exit from.*blend_test.*" \
"leaving blend"
+
+# Preparation and testing compare instructions.
+gdb_test_no_output \
+ "set \$xmm0.v4_float = {0, 1.5, 2, 0}" "set ymm0 for compare"
+gdb_test_no_output \
+ "set \$xmm1.v4_float = {0, 1, 2.5, -1}" "set ymm1 for compare"
+gdb_test_no_output \
+ "set \$xmm15.v4_float = {-1, -2, 10, 100}" "set ymm15 for compare"
+gdb_test_no_output "set \$eflags = 2"
+
+if {[record_full_function "compare"] == true} {
+ test_one_general_register "vucomisd" "eflags" "0x203"
+ test_one_general_register "vucomiss" "eflags" "0x202"
+ test_one_general_register "vcomiss" "eflags" "0x203"
+ test_one_general_register "vcomisd" "eflags" "0x202"
+
+ gdb_test "record stop" "Process record is stopped.*" \
+ "delete history for compare_test"
+} else {
+ untested "couldn't run compare tests"
+}
+gdb_test "finish" "Run till exit from.*compare_test.*" \
+ "leaving compare"