or1k: Add the l.muld, l.muldu, l.macu, l.msbu insns
[deliverable/binutils-gdb.git] / sim / testsuite / sim / or1k / mul.S
index 964badd95132d239448ab596b3a7e2391bed1b19..70bbc41e199e82f972233b5b89e153e3a6f38b36 100644 (file)
 # output: report(0x00010000);\n
 # output: report(0x00010000);\n
 # output: report(0x00000000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffffffe);\n
 # output: report(0xfffffffd);\n
 # output: report(0x00000006);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff7fff);\n
 # output: report(0xffff0002);\n
 # output: report(0x7ffffffe);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff7fff);\n
 # output: report(0xffff0000);\n
 # output: report(0x80010000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff0000);\n
 # output: report(0xfffeffff);\n
 # output: report(0x00010000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0x00000002);\n
 # output: report(0xfffffffd);\n
 # output: report(0xfffffffa);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff8000);\n
 # output: report(0x00010000);\n
 # output: report(0x80000000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff7fff);\n
 # output: report(0x00010000);\n
 # output: report(0x7fff0000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0x00000002);\n
 # output: report(0xfffffffd);\n
 # output: report(0xfffffffa);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xffff7fff);\n
 # output: report(0xffff0000);\n
 # output: report(0x80010000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000001);\n
 # output: \n
 # output: report(0x00040000);\n
 # output: report(0x00004000);\n
 # output: report(0x00000000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffffffe);\n
 # output: report(0x0000fffd);\n
 # output: report(0x00000006);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffefffe);\n
 # output: report(0x00008001);\n
 # output: report(0x7ffffffe);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffe0000);\n
 # output: report(0x0000bfff);\n
 # output: report(0x80020000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffdfffe);\n
 # output: report(0x00008000);\n
 # output: report(0x00010000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0x00000002);\n
 # output: report(0x0000fffd);\n
 # output: report(0xfffffffa);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0x00010000);\n
 # output: report(0x00008000);\n
 # output: report(0x80000000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffdfffc);\n
 # output: report(0x00004000);\n
 # output: report(0x7fff0000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffffffe);\n
 # output: report(0x0000fffd);\n
 # output: report(0x00000006);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: report(0x00000000);\n
 # output: \n
 # output: report(0xfffdfffe);\n
 # output: report(0x00008000);\n
 # output: report(0x00010000);\n
-# output: report(0x00000001);\n
+# output: report(0x00000000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000001);\n
 # output: \n
 # output: report(0xfffffffa);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
-# output: report(0x00000000);\n
+# output: report(0x00000001);\n
 # output: \n
 # output: report(0xffff7fff);\n
 # output: report(0xffff0000);\n
 # output: report(0x80010000);\n
 # output: report(0x00000001);\n
 # output: report(0x00000000);\n
-# output: report(0x00000000);\n
+# output: report(0x00000001);\n
 # output: \n
 # output: exit(0)\n
 
@@ -375,21 +375,19 @@ start_tests:
           set the overflow, but not the carry flag .  */
        TEST_INST_I32_I32 l.mul, 0x00008000, 0x00010000
 
-       /* Multiply two large positive numbers.  This should set both the
-          carry and overflow flags (even though the result is not a
-          negative number.  */
+       /* Multiply two large positive numbers.  This should set the
+          overflow flags (even though the result is not a negative
+          number.  */
        TEST_INST_I32_I32 l.mul, 0x00010000, 0x00010000
 
-       /* Multiply two small negative numbers.  This will set the carry
-          flag, but not the overflow flag.  */
+       /* Multiply two small negative numbers.  This will set no flags.  */
        TEST_INST_I32_I32 l.mul, 0xfffffffe, 0xfffffffd
 
-       /* Multiply two quite large negative numbers.  This will set the
-          carry flag, but not the overflow flag.  */
+       /* Multiply two quite large negative numbers.  This will no flags.  */
        TEST_INST_I32_I32 l.mul, 0xffff7fff, 0xffff0002
 
        /* Multiply two slightly too large negative numbers.  This should
-          set both the overflow, and the carry flags  */
+          set the overflow flag.  */
        TEST_INST_I32_I32 l.mul, 0xffff7fff, 0xffff0000
 
        /* Multiply two large negative numbers.  This should set the
@@ -398,18 +396,15 @@ start_tests:
        TEST_INST_I32_I32 l.mul, 0xffff0000, 0xfffeffff
 
        /* Multiply one small negative number and one small positive
-          number.  This will set the carry flag, but not the overflow
-          flag.  */
+          number.  This will set the no flags.  */
        TEST_INST_I32_I32 l.mul, 0x00000002, 0xfffffffd
 
        /* Multiply one quite large negative number and one quite large
-          positive number.  This will set the carry, but not the
-          overflow flag.  */
+          positive number.  This will set no flags.  */
        TEST_INST_I32_I32 l.mul, 0xffff8000, 0x00010000
 
        /* Multiply one slightly too large negative number and one slightly
-          too large positive number.  This should set both the carry and
-          overflow flags.  */
+          too large positive number.  This should set the overflow flag.  */
        TEST_INST_I32_I32 l.mul, 0xffff7fff, 0x00010000
 
        /* Multiply the largest negative number by positive unity.  This
@@ -423,10 +418,11 @@ start_tests:
        /* Check that an overflow alone causes a RANGE Exception.  */
        TEST_INST_I32_I32 l.mul, 0x00008000, 0x00010000
 
-       /* Check that a carry alone does not cause a RANGE Exception.  */
+       /* Check multiply of a negative and positive does not cause a RANGE
+          Exception.  */
        TEST_INST_I32_I32 l.mul, 0x00000002, 0xfffffffd
 
-       /* Check that carry and overflow together cause an exception.  */
+       /* Check that negative overflow causes a RANGE exception.  */
        TEST_INST_I32_I32 l.mul, 0xffff7fff, 0xffff0000
 
        CLEAR_SPR_SR_FLAGS SPR_SR_OVE, r2, r3
@@ -445,41 +441,35 @@ start_tests:
           set the overflow, but not the carry flag.  */
        TEST_INST_I32_I16 l.muli, 0x00020000, 0x4000
 
-       /* Multiply two large positive numbers.  This should set both the
-          carry and overflow flags (even though the result is not a
-          negative number.  */
+       /* Multiply two large positive numbers.  This should set the
+          overflow flag, even though the result is not a negative number.  */
        TEST_INST_I32_I16 l.muli, 0x00040000, 0x4000
 
-       /* Multiply two small negative numbers.  This should set the
-          carry flag, but not the overflow flag.  */
+       /* Multiply two small negative numbers.  This should set no flags.  */
        TEST_INST_I32_I16 l.muli, 0xfffffffe, 0xfffd
 
-       /* Multiply two quite large negative numbers.  This will set the
-          carry, but not the overflow flag.  */
+       /* Multiply two quite large negative numbers.  This will set no
+          flags.  */
        TEST_INST_I32_I16 l.muli, 0xfffefffe, 0x8001
 
        /* Multiply two slightly too large negative numbers.  This should
-          set both the overflow, and the carry flags  */
+          set the overflow flag.  */
        TEST_INST_I32_I16 l.muli, 0xfffe0000, 0xbfff
 
-       /* Multiply two large negative numbers.  This should set the both
-          the carry and overflow flags (even though the result is a
-          positive number.  */
+       /* Multiply two large negative numbers.  This should set the
+          overflow flag, even though the result is a positive number.  */
        TEST_INST_I32_I16 l.muli, 0xfffdfffe, 0x8000
 
        /* Multiply one small negative number and one small positive
-          number.  This will set the carry flag, but not the overflow
-          flag.  */
+          number.  This will set no flags.  */
        TEST_INST_I32_I16 l.muli, 0x00000002, 0xfffd
 
        /* Multiply one quite large negative number and one quite large
-          positive number.  This will set the carry flag, but not the
-          overflow flag.  */
+          positive number.  This will set no flags.  */
        TEST_INST_I32_I16 l.muli, 0x00010000, 0x8000
 
        /* Multiply one slightly too large negative number and one slightly
-          too large positive number.  This should set both the carry and
-          overflow flags.  */
+          too large positive number.  This will set the overflow flag.  */
        TEST_INST_I32_I16 l.muli, 0xfffdfffc, 0x4000
 
        /* Multiply the largest negative number by positive unity.  Should
@@ -493,10 +483,11 @@ start_tests:
        /* Check that an overflow alone causes a RANGE Exception.  */
        TEST_INST_I32_I16 l.muli, 0x00020000, 0x4000
 
-       /* Check that a carry alone does not cause a RANGE Exception.  */
+       /* Check that two negatives will not cause a RANGE Exception.  */
        TEST_INST_I32_I16 l.muli, 0xfffffffe, 0xfffd
 
-       /* Check that carry and overflow together cause an exception.  */
+       /* Check that multiply of larget negative and positive numbers causes
+          a RANGE exception and overflow.  */
        TEST_INST_I32_I16 l.muli, 0xfffdfffe, 0x8000
 
        CLEAR_SPR_SR_FLAGS SPR_SR_OVE, r2, r3
@@ -561,11 +552,11 @@ start_tests:
           does not cause a RANGE Exception.  */
        TEST_INST_I32_I32 l.mulu, 0x00008000, 0x00010000
 
-       /* Check that a carry alone does not cause a RANGE Exception.  */
+       /* Check that a carry causes a RANGE Exception.  */
        TEST_INST_I32_I32 l.mulu, 0x00000002, 0xfffffffd
 
        /* Check that what would cause an overflow and carry in 2's
-          complement does not cause a RANGE Exception.  */
+          complement causes a RANGE Exception.  */
        TEST_INST_I32_I32 l.mulu, 0xffff7fff, 0xffff0000
 
        CLEAR_SPR_SR_FLAGS SPR_SR_OVE, r2, r3
This page took 0.031111 seconds and 4 git commands to generate.