about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-02 17:01:08 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-02 17:01:08 +0100
commite561196f440eb4987ca643576477e496cc51e222 (patch)
tree548d9b4da508f3576af4a04ff61747f5eab4c122
parent14bd1368cc34dc2b6d2c722fe6fa3e66c2566f67 (diff)
downloadbox64-e561196f440eb4987ca643576477e496cc51e222.tar.gz
box64-e561196f440eb4987ca643576477e496cc51e222.zip
Improved test16
-rw-r--r--tests/ref16.txt126
-rwxr-xr-xtests/test16bin29624 -> 30912 bytes
-rw-r--r--tests/test16.c76
3 files changed, 134 insertions, 68 deletions
diff --git a/tests/ref16.txt b/tests/ref16.txt
index 7fac500d..90a64d4d 100644
--- a/tests/ref16.txt
+++ b/tests/ref16.txt
@@ -1,24 +1,130 @@
+ucomiss 1.000000, 1.000000 => 0x242
 ucomiss 1.000000, 2.000000 => 0x202
-ucomiss 2.000000, 1.000000 => 0x203
+ucomiss 1.000000, 0.000000 => 0x203
+ucomiss 1.000000, -0.000000 => 0x203
+ucomiss 1.000000, -1.000000 => 0x203
 ucomiss 1.000000, inf => 0x202
-ucomiss inf, 1.000000 => 0x203
 ucomiss 1.000000, -inf => 0x203
-ucomiss -inf, 1.000000 => 0x202
 ucomiss 1.000000, nan => 0x247
-ucomiss nan, 1.000000 => 0x247
-ucomiss 1.000000, 1.000000 => 0x242
+ucomiss 2.000000, 1.000000 => 0x203
+ucomiss 2.000000, 2.000000 => 0x242
+ucomiss 2.000000, 0.000000 => 0x203
+ucomiss 2.000000, -0.000000 => 0x203
+ucomiss 2.000000, -1.000000 => 0x203
+ucomiss 2.000000, inf => 0x202
+ucomiss 2.000000, -inf => 0x203
+ucomiss 2.000000, nan => 0x247
+ucomiss 0.000000, 1.000000 => 0x202
+ucomiss 0.000000, 2.000000 => 0x202
+ucomiss 0.000000, 0.000000 => 0x242
+ucomiss 0.000000, -0.000000 => 0x242
+ucomiss 0.000000, -1.000000 => 0x203
+ucomiss 0.000000, inf => 0x202
+ucomiss 0.000000, -inf => 0x203
+ucomiss 0.000000, nan => 0x247
+ucomiss -0.000000, 1.000000 => 0x202
+ucomiss -0.000000, 2.000000 => 0x202
+ucomiss -0.000000, 0.000000 => 0x242
+ucomiss -0.000000, -0.000000 => 0x242
+ucomiss -0.000000, -1.000000 => 0x203
+ucomiss -0.000000, inf => 0x202
+ucomiss -0.000000, -inf => 0x203
+ucomiss -0.000000, nan => 0x247
+ucomiss -1.000000, 1.000000 => 0x202
+ucomiss -1.000000, 2.000000 => 0x202
+ucomiss -1.000000, 0.000000 => 0x202
+ucomiss -1.000000, -0.000000 => 0x202
+ucomiss -1.000000, -1.000000 => 0x242
+ucomiss -1.000000, inf => 0x202
+ucomiss -1.000000, -inf => 0x203
+ucomiss -1.000000, nan => 0x247
+ucomiss inf, 1.000000 => 0x203
+ucomiss inf, 2.000000 => 0x203
+ucomiss inf, 0.000000 => 0x203
+ucomiss inf, -0.000000 => 0x203
+ucomiss inf, -1.000000 => 0x203
 ucomiss inf, inf => 0x242
+ucomiss inf, -inf => 0x203
+ucomiss inf, nan => 0x247
+ucomiss -inf, 1.000000 => 0x202
+ucomiss -inf, 2.000000 => 0x202
+ucomiss -inf, 0.000000 => 0x202
+ucomiss -inf, -0.000000 => 0x202
+ucomiss -inf, -1.000000 => 0x202
+ucomiss -inf, inf => 0x202
+ucomiss -inf, -inf => 0x242
+ucomiss -inf, nan => 0x247
+ucomiss nan, 1.000000 => 0x247
+ucomiss nan, 2.000000 => 0x247
+ucomiss nan, 0.000000 => 0x247
+ucomiss nan, -0.000000 => 0x247
+ucomiss nan, -1.000000 => 0x247
+ucomiss nan, inf => 0x247
+ucomiss nan, -inf => 0x247
 ucomiss nan, nan => 0x247
+ucomisd 1.000000, 1.000000 => 0x242
 ucomisd 1.000000, 2.000000 => 0x202
-ucomisd 2.000000, 1.000000 => 0x203
+ucomisd 1.000000, 0.000000 => 0x203
+ucomisd 1.000000, -0.000000 => 0x203
+ucomisd 1.000000, -1.000000 => 0x203
 ucomisd 1.000000, inf => 0x202
-ucomisd inf, 1.000000 => 0x203
 ucomisd 1.000000, -inf => 0x203
-ucomisd -inf, 1.000000 => 0x202
 ucomisd 1.000000, nan => 0x247
-ucomisd nan, 1.000000 => 0x247
-ucomisd 1.000000, 1.000000 => 0x242
+ucomisd 2.000000, 1.000000 => 0x203
+ucomisd 2.000000, 2.000000 => 0x242
+ucomisd 2.000000, 0.000000 => 0x203
+ucomisd 2.000000, -0.000000 => 0x203
+ucomisd 2.000000, -1.000000 => 0x203
+ucomisd 2.000000, inf => 0x202
+ucomisd 2.000000, -inf => 0x203
+ucomisd 2.000000, nan => 0x247
+ucomisd 0.000000, 1.000000 => 0x202
+ucomisd 0.000000, 2.000000 => 0x202
+ucomisd 0.000000, 0.000000 => 0x242
+ucomisd 0.000000, -0.000000 => 0x242
+ucomisd 0.000000, -1.000000 => 0x203
+ucomisd 0.000000, inf => 0x202
+ucomisd 0.000000, -inf => 0x203
+ucomisd 0.000000, nan => 0x247
+ucomisd -0.000000, 1.000000 => 0x202
+ucomisd -0.000000, 2.000000 => 0x202
+ucomisd -0.000000, 0.000000 => 0x242
+ucomisd -0.000000, -0.000000 => 0x242
+ucomisd -0.000000, -1.000000 => 0x203
+ucomisd -0.000000, inf => 0x202
+ucomisd -0.000000, -inf => 0x203
+ucomisd -0.000000, nan => 0x247
+ucomisd -1.000000, 1.000000 => 0x202
+ucomisd -1.000000, 2.000000 => 0x202
+ucomisd -1.000000, 0.000000 => 0x202
+ucomisd -1.000000, -0.000000 => 0x202
+ucomisd -1.000000, -1.000000 => 0x242
+ucomisd -1.000000, inf => 0x202
+ucomisd -1.000000, -inf => 0x203
+ucomisd -1.000000, nan => 0x247
+ucomisd inf, 1.000000 => 0x203
+ucomisd inf, 2.000000 => 0x203
+ucomisd inf, 0.000000 => 0x203
+ucomisd inf, -0.000000 => 0x203
+ucomisd inf, -1.000000 => 0x203
 ucomisd inf, inf => 0x242
+ucomisd inf, -inf => 0x203
+ucomisd inf, nan => 0x247
+ucomisd -inf, 1.000000 => 0x202
+ucomisd -inf, 2.000000 => 0x202
+ucomisd -inf, 0.000000 => 0x202
+ucomisd -inf, -0.000000 => 0x202
+ucomisd -inf, -1.000000 => 0x202
+ucomisd -inf, inf => 0x202
+ucomisd -inf, -inf => 0x242
+ucomisd -inf, nan => 0x247
+ucomisd nan, 1.000000 => 0x247
+ucomisd nan, 2.000000 => 0x247
+ucomisd nan, 0.000000 => 0x247
+ucomisd nan, -0.000000 => 0x247
+ucomisd nan, -1.000000 => 0x247
+ucomisd nan, inf => 0x247
+ucomisd nan, -inf => 0x247
 ucomisd nan, nan => 0x247
 cmpsd 1.000000, 2.000000, 0 => 0x0
 cmpsd 2.000000, 1.000000, 0 => 0x0
diff --git a/tests/test16 b/tests/test16
index 00a31211..9464cf9b 100755
--- a/tests/test16
+++ b/tests/test16
Binary files differdiff --git a/tests/test16.c b/tests/test16.c
index 95bad2fc..edfc0a9a 100644
--- a/tests/test16.c
+++ b/tests/test16.c
@@ -97,72 +97,32 @@ uint64_t _ucomisd_(double a, double b)
 
 void test_ucomiss()
 {
+ float values[] = {1.0f, 2.0f, 0.0f, -0.0f, -1.0f, INFINITY, -INFINITY, NAN};
  float a, b;
  uint64_t flags;
- a = 1.0f; b = 2.0f;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomiss_(b, a);
- printf("ucomiss %f, %f => 0x%lx\n", b, a, flags);
- b = INFINITY;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomiss_(b, a);
- printf("ucomiss %f, %f => 0x%lx\n", b, a, flags);
- b = -INFINITY;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomiss_(b, a);
- printf("ucomiss %f, %f => 0x%lx\n", b, a, flags);
- b = NAN;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomiss_(b, a);
- printf("ucomiss %f, %f => 0x%lx\n", b, a, flags);
- b = a;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- a = b = INFINITY;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
- a = b = NAN;
- flags = _ucomiss_(a, b);
- printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
+ int n = sizeof(values)/sizeof(values[0]);
+ for(int i=0; i<n; ++i)
+    for(int j=0; j<n; ++j) {
+        a = values[i];
+        b = values[j];
+        flags = _ucomiss_(a, b);
+        printf("ucomiss %f, %f => 0x%lx\n", a, b, flags);
+    }
 }
 
 void test_ucomisd()
 {
+ double values[] = {1.0, 2.0, 0.0, -0.0, -1.0, INFINITY, -INFINITY, NAN};
  double a, b;
  uint64_t flags;
- a = 1.0; b = 2.0;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomisd_(b, a);
- printf("ucomisd %f, %f => 0x%lx\n", b, a, flags);
- b = INFINITY;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomisd_(b, a);
- printf("ucomisd %f, %f => 0x%lx\n", b, a, flags);
- b = -INFINITY;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomisd_(b, a);
- printf("ucomisd %f, %f => 0x%lx\n", b, a, flags);
- b = NAN;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- flags = _ucomisd_(b, a);
- printf("ucomisd %f, %f => 0x%lx\n", b, a, flags);
- b = a;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- a = b = INFINITY;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
- a = b = NAN;
- flags = _ucomisd_(a, b);
- printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
+ int n = sizeof(values)/sizeof(values[0]);
+ for(int i=0; i<n; ++i)
+    for(int j=0; j<n; ++j) {
+        a = values[i];
+        b = values[j];
+        flags = _ucomisd_(a, b);
+        printf("ucomisd %f, %f => 0x%lx\n", a, b, flags);
+    }
 }
 #if defined(__x86_64__)
 #define GO(n) \