diff options
Diffstat (limited to 'sim/testsuite/bfin/random_0003.S')
-rw-r--r-- | sim/testsuite/bfin/random_0003.S | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/random_0003.S b/sim/testsuite/bfin/random_0003.S new file mode 100644 index 00000000000..d9852f20731 --- /dev/null +++ b/sim/testsuite/bfin/random_0003.S @@ -0,0 +1,48 @@ +# Test for ASTAT AN setting when overflows occur +# mach: bfin + +#include "test.h" +.include "testutils.inc" + + start + + dmm32 ASTAT, (0x18204a80 | _AV1S | _AV0 | _AQ | _CC | _AC0_COPY | _AN | _AZ); + dmm32 A1.w, 0x1098e30b; + dmm32 A1.x, 0x0000001f; + imm32 R0, 0x440ed6ae; + imm32 R5, 0x3272c296; + R0.H = (A1 += R0.L * R5.H); + checkreg R0, 0x7fffd6ae; + checkreg A1.w, 0x00500e03; + checkreg A1.x, 0x0000001f; + checkreg ASTAT, (0x18204a80 | _VS | _V | _AV1S | _AV0 | _AQ | _CC | _V_COPY | _AC0_COPY | _AN | _AZ); + + dmm32 ASTAT, (0x28c08e90 | _VS | _AV1S | _AV0S | _AC0 | _AC0_COPY | _AN); + dmm32 A0.w, 0xb9da9f02; + dmm32 A0.x, 0x00000010; + imm32 R0, 0xc104b252; + R0.L = A0 (IS); + checkreg R0, 0xc1047fff; + checkreg ASTAT, (0x28c08e90 | _VS | _V | _AV1S | _AV0S | _AC0 | _V_COPY | _AC0_COPY); + + dmm32 ASTAT, (0x3cc04000 | _AV0S | _AV0 | _CC | _AC0_COPY | _AZ); + dmm32 A0.w, 0x2cc20f30; + dmm32 A0.x, 0xffffffd0; + imm32 R2, 0x367adfeb; + imm32 R5, 0x53eeff3c; + A0 += R5.H * R2.H (IS); + checkreg A0.w, 0x3e9e429c; + checkreg A0.x, 0xffffffd0; + checkreg ASTAT, (0x3cc04000 | _AV0S | _CC | _AC0_COPY | _AZ); + + dmm32 ASTAT, (0x18c0ca90 | _V | _AV1S | _AV1 | _AV0 | _AC1 | _AC0 | _V_COPY | _AC0_COPY | _AN | _AZ); + dmm32 A1.w, 0x0614ca96; + dmm32 A1.x, 0x00000053; + imm32 R3, 0x6c490457; + R3 = (A1 -= R3.L * R3.L) (M, S2RND); + checkreg R3, 0x7fffffff; + checkreg A1.w, 0x0601f505; + checkreg A1.x, 0x00000053; + checkreg ASTAT, (0x18c0ca90 | _VS | _V | _AV1S | _AV0 | _AC1 | _AC0 | _V_COPY | _AC0_COPY | _AN | _AZ); + + pass |