Initialize the register dumping machinery while testing assembler code.
[catacomb] / math / mpx.c
index 4294845..f761003 100644 (file)
@@ -818,7 +818,7 @@ void mpx_usub(mpw *dv, mpw *dvl, const mpw *av, const mpw *avl,
 
 void mpx_usubn(mpw *dv, mpw *dvl, mpw n) { MPX_USUBN(dv, dvl, n); }
 
-/* --- @mpx_uaddnlsl@ --- *
+/* --- @mpx_usubnlsl@ --- *
  *
  * Arguments:  @mpw *dv, *dvl@ = destination and first argument vector
  *             @mpw a@ = second argument
@@ -1274,9 +1274,14 @@ mpw mpx_udivn(mpw *qv, mpw *qvl, const mpw *rv, const mpw *rvl, mpw d)
 
 #include <mLib/alloc.h>
 #include <mLib/dstr.h>
+#include <mLib/macros.h>
 #include <mLib/quis.h>
 #include <mLib/testrig.h>
 
+#ifdef ENABLE_ASM_DEBUG
+#  include "regdump.h"
+#endif
+
 #include "mpscan.h"
 
 #define ALLOC(v, vl, sz) do {                                          \
@@ -1366,7 +1371,7 @@ static int loadstore(dstr *v)
       ok = 0;
     MPX_OCTETS(oct, m, ml);
     mpx_storel(m, ml, d.buf, d.sz);
-    if (memcmp(d.buf, v->buf, oct) != 0) {
+    if (MEMCMP(d.buf, !=, v->buf, oct)) {
       dumpbits("\n*** storel failed", d.buf, d.sz);
       ok = 0;
     }
@@ -1376,7 +1381,7 @@ static int loadstore(dstr *v)
       ok = 0;
     MPX_OCTETS(oct, m, ml);
     mpx_storeb(m, ml, d.buf, d.sz);
-    if (memcmp(d.buf + d.sz - oct, v->buf + v->len - oct, oct) != 0) {
+    if (MEMCMP(d.buf + d.sz - oct, !=, v->buf + v->len - oct, oct)) {
       dumpbits("\n*** storeb failed", d.buf, d.sz);
       ok = 0;
     }
@@ -1410,14 +1415,14 @@ static int twocl(dstr *v)
 
     mpx_loadl(m, ml0, v[0].buf, v[0].len);
     mpx_storel2cn(m, ml0, d.buf, v[1].len);
-    if (memcmp(d.buf, v[1].buf, v[1].len)) {
+    if (MEMCMP(d.buf, !=, v[1].buf, v[1].len)) {
       dumpbits("\n*** storel2cn failed", d.buf, v[1].len);
       ok = 0;
     }
 
     mpx_loadl2cn(m, ml1, v[1].buf, v[1].len);
     mpx_storel(m, ml1, d.buf, v[0].len);
-    if (memcmp(d.buf, v[0].buf, v[0].len)) {
+    if (MEMCMP(d.buf, !=, v[0].buf, v[0].len)) {
       dumpbits("\n*** loadl2cn failed", d.buf, v[0].len);
       ok = 0;
     }
@@ -1454,14 +1459,14 @@ static int twocb(dstr *v)
 
     mpx_loadb(m, ml0, v[0].buf, v[0].len);
     mpx_storeb2cn(m, ml0, d.buf, v[1].len);
-    if (memcmp(d.buf, v[1].buf, v[1].len)) {
+    if (MEMCMP(d.buf, !=, v[1].buf, v[1].len)) {
       dumpbits("\n*** storeb2cn failed", d.buf, v[1].len);
       ok = 0;
     }
 
     mpx_loadb2cn(m, ml1, v[1].buf, v[1].len);
     mpx_storeb(m, ml1, d.buf, v[0].len);
-    if (memcmp(d.buf, v[0].buf, v[0].len)) {
+    if (MEMCMP(d.buf, !=, v[0].buf, v[0].len)) {
       dumpbits("\n*** loadb2cn failed", d.buf, v[0].len);
       ok = 0;
     }
@@ -1708,6 +1713,9 @@ static test_chunk defs[] = {
 
 int main(int argc, char *argv[])
 {
+#ifdef ENABLE_ASM_DEBUG
+  regdump_init();
+#endif
   test_run(argc, argv, defs, SRCDIR"/t/mpx");
   return (0);
 }