]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Don't test division by zero; 7400 doesn't do what 970/7447 do.
authorJulian Seward <jseward@acm.org>
Sat, 19 Nov 2005 22:14:45 +0000 (22:14 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 19 Nov 2005 22:14:45 +0000 (22:14 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5214

none/tests/ppc32/jm-insns.c
none/tests/ppc32/jm-insns.stdout.exp
none/tests/ppc32/jm-vmx.stdout.exp

index 276f179c3827dcb0159bd5b5031ac3cd9b88455b..1bfe838c47942f6e26bfefbe3e6b2212022060cc 100644 (file)
@@ -4111,7 +4111,10 @@ static void test_int_two_args (const char* name, test_func_t func,
                                uint32_t test_flags)
 {
    volatile uint32_t res, flags, xer, xer_orig, tmpcr, tmpxer;
-   int i, j;
+   int i, j, is_div;
+
+   // catches div, divwu, divo, divwu, divwuo, and . variants
+   is_div = NULL != strstr(name, "divw");
    
    xer_orig = 0x00000000;
  redo:
@@ -4119,6 +4122,10 @@ static void test_int_two_args (const char* name, test_func_t func,
       for (j=0; j<nb_iargs; j++) {
          r14 = iargs[i];
          r15 = iargs[j];
+         /* result of division by zero is implementation dependent.
+            don't test it. */
+         if (is_div && iargs[j] == 0)
+            continue;
          /* Save flags */
          __asm__ __volatile__ ("mfcr 18");
          tmpcr = r18;
@@ -4145,7 +4152,7 @@ static void test_int_two_args (const char* name, test_func_t func,
       }
       if (verbose) printf("\n");
    }
-   if (test_flags & PPC_XER_CA && xer_orig == 0x00000000) {
+   if ((test_flags & PPC_XER_CA) && xer_orig == 0x00000000) {
       xer_orig = 0x20000000;
       goto redo;
    }
@@ -4185,7 +4192,7 @@ static void test_int_one_arg (const char* name, test_func_t func,
       printf("%s %08x => %08x (%08x %08x)\n",
              name, iargs[i], res, flags, xer);
    }
-   if (test_flags & PPC_XER_CA && xer_orig == 0x00000000) {
+   if ((test_flags & PPC_XER_CA) && xer_orig == 0x00000000) {
       xer_orig = 0x20000000;
       goto redo;
    }
index 94ea60e86e4e4f7f06d71bd71009c630c2ccfea7..14b6f7c9735f83d904a895df1278fa19f274d01c 100644 (file)
@@ -39,43 +39,31 @@ PPC integer arith insns with two args:
        addco ffffffff, 000f423f => 000f423e (00000000 20000000)
        addco ffffffff, ffffffff => fffffffe (00000000 20000000)
 
-        divw 00000000, 00000000 => 00000000 (00000000 00000000)
         divw 00000000, 000f423f => 00000000 (00000000 00000000)
         divw 00000000, ffffffff => 00000000 (00000000 00000000)
-        divw 000f423f, 00000000 => 00000000 (00000000 00000000)
         divw 000f423f, 000f423f => 00000001 (00000000 00000000)
         divw 000f423f, ffffffff => fff0bdc1 (00000000 00000000)
-        divw ffffffff, 00000000 => 00000000 (00000000 00000000)
         divw ffffffff, 000f423f => 00000000 (00000000 00000000)
         divw ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-       divwo 00000000, 00000000 => 00000000 (00000000 c0000000)
        divwo 00000000, 000f423f => 00000000 (00000000 00000000)
        divwo 00000000, ffffffff => 00000000 (00000000 00000000)
-       divwo 000f423f, 00000000 => 00000000 (00000000 c0000000)
        divwo 000f423f, 000f423f => 00000001 (00000000 00000000)
        divwo 000f423f, ffffffff => fff0bdc1 (00000000 00000000)
-       divwo ffffffff, 00000000 => 00000000 (00000000 c0000000)
        divwo ffffffff, 000f423f => 00000000 (00000000 00000000)
        divwo ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-       divwu 00000000, 00000000 => 00000000 (00000000 00000000)
        divwu 00000000, 000f423f => 00000000 (00000000 00000000)
        divwu 00000000, ffffffff => 00000000 (00000000 00000000)
-       divwu 000f423f, 00000000 => 00000000 (00000000 00000000)
        divwu 000f423f, 000f423f => 00000001 (00000000 00000000)
        divwu 000f423f, ffffffff => 00000000 (00000000 00000000)
-       divwu ffffffff, 00000000 => 00000000 (00000000 00000000)
        divwu ffffffff, 000f423f => 000010c6 (00000000 00000000)
        divwu ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-      divwuo 00000000, 00000000 => 00000000 (00000000 c0000000)
       divwuo 00000000, 000f423f => 00000000 (00000000 00000000)
       divwuo 00000000, ffffffff => 00000000 (00000000 00000000)
-      divwuo 000f423f, 00000000 => 00000000 (00000000 c0000000)
       divwuo 000f423f, 000f423f => 00000001 (00000000 00000000)
       divwuo 000f423f, ffffffff => 00000000 (00000000 00000000)
-      divwuo ffffffff, 00000000 => 00000000 (00000000 c0000000)
       divwuo ffffffff, 000f423f => 000010c6 (00000000 00000000)
       divwuo ffffffff, ffffffff => 00000001 (00000000 00000000)
 
@@ -200,43 +188,31 @@ PPC integer arith insns with two args with flags update:
       addco. ffffffff, 000f423f => 000f423e (40000000 20000000)
       addco. ffffffff, ffffffff => fffffffe (80000000 20000000)
 
-       divw. 00000000, 00000000 => 00000000 (20000000 00000000)
        divw. 00000000, 000f423f => 00000000 (20000000 00000000)
        divw. 00000000, ffffffff => 00000000 (20000000 00000000)
-       divw. 000f423f, 00000000 => 00000000 (20000000 00000000)
        divw. 000f423f, 000f423f => 00000001 (40000000 00000000)
        divw. 000f423f, ffffffff => fff0bdc1 (80000000 00000000)
-       divw. ffffffff, 00000000 => 00000000 (20000000 00000000)
        divw. ffffffff, 000f423f => 00000000 (20000000 00000000)
        divw. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-      divwo. 00000000, 00000000 => 00000000 (30000000 c0000000)
       divwo. 00000000, 000f423f => 00000000 (20000000 00000000)
       divwo. 00000000, ffffffff => 00000000 (20000000 00000000)
-      divwo. 000f423f, 00000000 => 00000000 (30000000 c0000000)
       divwo. 000f423f, 000f423f => 00000001 (40000000 00000000)
       divwo. 000f423f, ffffffff => fff0bdc1 (80000000 00000000)
-      divwo. ffffffff, 00000000 => 00000000 (30000000 c0000000)
       divwo. ffffffff, 000f423f => 00000000 (20000000 00000000)
       divwo. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-      divwu. 00000000, 00000000 => 00000000 (20000000 00000000)
       divwu. 00000000, 000f423f => 00000000 (20000000 00000000)
       divwu. 00000000, ffffffff => 00000000 (20000000 00000000)
-      divwu. 000f423f, 00000000 => 00000000 (20000000 00000000)
       divwu. 000f423f, 000f423f => 00000001 (40000000 00000000)
       divwu. 000f423f, ffffffff => 00000000 (20000000 00000000)
-      divwu. ffffffff, 00000000 => 00000000 (20000000 00000000)
       divwu. ffffffff, 000f423f => 000010c6 (40000000 00000000)
       divwu. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-     divwuo. 00000000, 00000000 => 00000000 (30000000 c0000000)
      divwuo. 00000000, 000f423f => 00000000 (20000000 00000000)
      divwuo. 00000000, ffffffff => 00000000 (20000000 00000000)
-     divwuo. 000f423f, 00000000 => 00000000 (30000000 c0000000)
      divwuo. 000f423f, 000f423f => 00000001 (40000000 00000000)
      divwuo. 000f423f, ffffffff => 00000000 (20000000 00000000)
-     divwuo. ffffffff, 00000000 => 00000000 (30000000 c0000000)
      divwuo. ffffffff, 000f423f => 000010c6 (40000000 00000000)
      divwuo. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
index b6a1d8a90c67c0a4aedfe10c2034a2b3ddd2426f..805abcdd107853f87d2c7a4b98764d807acc71a9 100644 (file)
@@ -39,43 +39,31 @@ PPC integer arith insns with two args:
        addco ffffffff, 000f423f => 000f423e (00000000 20000000)
        addco ffffffff, ffffffff => fffffffe (00000000 20000000)
 
-        divw 00000000, 00000000 => 00000000 (00000000 00000000)
         divw 00000000, 000f423f => 00000000 (00000000 00000000)
         divw 00000000, ffffffff => 00000000 (00000000 00000000)
-        divw 000f423f, 00000000 => 00000000 (00000000 00000000)
         divw 000f423f, 000f423f => 00000001 (00000000 00000000)
         divw 000f423f, ffffffff => fff0bdc1 (00000000 00000000)
-        divw ffffffff, 00000000 => 00000000 (00000000 00000000)
         divw ffffffff, 000f423f => 00000000 (00000000 00000000)
         divw ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-       divwo 00000000, 00000000 => 00000000 (00000000 c0000000)
        divwo 00000000, 000f423f => 00000000 (00000000 00000000)
        divwo 00000000, ffffffff => 00000000 (00000000 00000000)
-       divwo 000f423f, 00000000 => 00000000 (00000000 c0000000)
        divwo 000f423f, 000f423f => 00000001 (00000000 00000000)
        divwo 000f423f, ffffffff => fff0bdc1 (00000000 00000000)
-       divwo ffffffff, 00000000 => 00000000 (00000000 c0000000)
        divwo ffffffff, 000f423f => 00000000 (00000000 00000000)
        divwo ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-       divwu 00000000, 00000000 => 00000000 (00000000 00000000)
        divwu 00000000, 000f423f => 00000000 (00000000 00000000)
        divwu 00000000, ffffffff => 00000000 (00000000 00000000)
-       divwu 000f423f, 00000000 => 00000000 (00000000 00000000)
        divwu 000f423f, 000f423f => 00000001 (00000000 00000000)
        divwu 000f423f, ffffffff => 00000000 (00000000 00000000)
-       divwu ffffffff, 00000000 => 00000000 (00000000 00000000)
        divwu ffffffff, 000f423f => 000010c6 (00000000 00000000)
        divwu ffffffff, ffffffff => 00000001 (00000000 00000000)
 
-      divwuo 00000000, 00000000 => 00000000 (00000000 c0000000)
       divwuo 00000000, 000f423f => 00000000 (00000000 00000000)
       divwuo 00000000, ffffffff => 00000000 (00000000 00000000)
-      divwuo 000f423f, 00000000 => 00000000 (00000000 c0000000)
       divwuo 000f423f, 000f423f => 00000001 (00000000 00000000)
       divwuo 000f423f, ffffffff => 00000000 (00000000 00000000)
-      divwuo ffffffff, 00000000 => 00000000 (00000000 c0000000)
       divwuo ffffffff, 000f423f => 000010c6 (00000000 00000000)
       divwuo ffffffff, ffffffff => 00000001 (00000000 00000000)
 
@@ -200,43 +188,31 @@ PPC integer arith insns with two args with flags update:
       addco. ffffffff, 000f423f => 000f423e (40000000 20000000)
       addco. ffffffff, ffffffff => fffffffe (80000000 20000000)
 
-       divw. 00000000, 00000000 => 00000000 (20000000 00000000)
        divw. 00000000, 000f423f => 00000000 (20000000 00000000)
        divw. 00000000, ffffffff => 00000000 (20000000 00000000)
-       divw. 000f423f, 00000000 => 00000000 (20000000 00000000)
        divw. 000f423f, 000f423f => 00000001 (40000000 00000000)
        divw. 000f423f, ffffffff => fff0bdc1 (80000000 00000000)
-       divw. ffffffff, 00000000 => 00000000 (20000000 00000000)
        divw. ffffffff, 000f423f => 00000000 (20000000 00000000)
        divw. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-      divwo. 00000000, 00000000 => 00000000 (30000000 c0000000)
       divwo. 00000000, 000f423f => 00000000 (20000000 00000000)
       divwo. 00000000, ffffffff => 00000000 (20000000 00000000)
-      divwo. 000f423f, 00000000 => 00000000 (30000000 c0000000)
       divwo. 000f423f, 000f423f => 00000001 (40000000 00000000)
       divwo. 000f423f, ffffffff => fff0bdc1 (80000000 00000000)
-      divwo. ffffffff, 00000000 => 00000000 (30000000 c0000000)
       divwo. ffffffff, 000f423f => 00000000 (20000000 00000000)
       divwo. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-      divwu. 00000000, 00000000 => 00000000 (20000000 00000000)
       divwu. 00000000, 000f423f => 00000000 (20000000 00000000)
       divwu. 00000000, ffffffff => 00000000 (20000000 00000000)
-      divwu. 000f423f, 00000000 => 00000000 (20000000 00000000)
       divwu. 000f423f, 000f423f => 00000001 (40000000 00000000)
       divwu. 000f423f, ffffffff => 00000000 (20000000 00000000)
-      divwu. ffffffff, 00000000 => 00000000 (20000000 00000000)
       divwu. ffffffff, 000f423f => 000010c6 (40000000 00000000)
       divwu. ffffffff, ffffffff => 00000001 (40000000 00000000)
 
-     divwuo. 00000000, 00000000 => 00000000 (30000000 c0000000)
      divwuo. 00000000, 000f423f => 00000000 (20000000 00000000)
      divwuo. 00000000, ffffffff => 00000000 (20000000 00000000)
-     divwuo. 000f423f, 00000000 => 00000000 (30000000 c0000000)
      divwuo. 000f423f, 000f423f => 00000001 (40000000 00000000)
      divwuo. 000f423f, ffffffff => 00000000 (20000000 00000000)
-     divwuo. ffffffff, 00000000 => 00000000 (30000000 c0000000)
      divwuo. ffffffff, 000f423f => 000010c6 (40000000 00000000)
      divwuo. ffffffff, ffffffff => 00000001 (40000000 00000000)