| # mach: bfin |
| #include "test.h" |
| .include "testutils.inc" |
| |
| start |
| |
| dmm32 ASTAT, (0x60608a90 | _VS | _V | _AV1S | _AV0S | _AQ | _V_COPY | _AC0_COPY); |
| dmm32 A1.w, 0xf41fbf3f; |
| dmm32 A1.x, 0x00000000; |
| imm32 R5, 0xd8d95310; |
| imm32 R6, 0xd0457fff; |
| R5.H = (A1 -= R6.L * R6.H) (M, FU); |
| checkreg R5, 0x7fff5310; |
| checkreg A1.w, 0x8bfe0f84; |
| checkreg A1.x, 0x00000000; |
| checkreg ASTAT, (0x60608a90 | _VS | _V | _AV1S | _AV0S | _AQ | _V_COPY | _AC0_COPY); |
| |
| dmm32 ASTAT, (0x54b0ca90 | _VS | _AV1S | _AC1 | _AC0 | _CC | _AC0_COPY | _AN); |
| dmm32 A1.w, 0xf88288c8; |
| dmm32 A1.x, 0xffffffff; |
| imm32 R0, 0xfffe6736; |
| imm32 R2, 0x8000f882; |
| imm32 R3, 0xffff8391; |
| R0.H = (A1 += R3.L * R2.L) (M, FU); |
| checkreg R0, 0x80006736; |
| checkreg A1.w, 0x7fb7d06a; |
| checkreg A1.x, 0xffffffff; |
| checkreg ASTAT, (0x54b0ca90 | _VS | _V | _AV1S | _AC1 | _AC0 | _CC | _V_COPY | _AC0_COPY | _AN); |
| |
| dmm32 ASTAT, (0x1c500480 | _VS | _AV1S | _AV0S | _AC0 | _CC | _AC0_COPY | _AN); |
| dmm32 A1.w, 0x9083dd08; |
| dmm32 A1.x, 0x00000000; |
| imm32 R0, 0x00000000; |
| imm32 R4, 0x00002492; |
| R4.H = (A1 += R4.L * R0.H) (M, FU); |
| checkreg R4, 0x7fff2492; |
| checkreg ASTAT, (0x1c500480 | _VS | _V | _AV1S | _AV0S | _AC0 | _CC | _V_COPY | _AC0_COPY | _AN); |
| |
| dmm32 ASTAT, (0x7c00c810 | _AV1S | _AC1 | _AC0); |
| dmm32 A1.w, 0x69e86d3f; |
| dmm32 A1.x, 0xffffffc2; |
| imm32 R1, 0x64f42c5b; |
| imm32 R3, 0x4128529d; |
| R3 = (A1 -= R3.L * R1.L) (M, FU); |
| checkreg R3, 0x80000000; |
| checkreg A1.w, 0x5b981370; |
| checkreg A1.x, 0xffffffc2; |
| checkreg ASTAT, (0x7c00c810 | _VS | _V | _AV1S | _AC1 | _AC0 | _V_COPY); |
| |
| dmm32 ASTAT, (0x5cc0c480 | _VS | _AQ | _CC); |
| dmm32 A1.w, 0x34bbe964; |
| dmm32 A1.x, 0x00000036; |
| imm32 R1, 0x7fffffff; |
| imm32 R5, 0x7fff427e; |
| A1 -= R5.L * R1.L (M, FU); |
| checkreg A1.w, 0xf23e2be2; |
| checkreg A1.x, 0x00000035; |
| checkreg ASTAT, (0x5cc0c480 | _VS | _AQ | _CC); |
| |
| # here the result is zero, and the _V bit is set |
| dmm32 ASTAT, 0x0; |
| dmm32 A0.w, 0x00008492; |
| dmm32 A0.x, 0x00000000; |
| imm32 R2, 0x7fff0002; |
| imm32 R3, 0xfa6e8492; |
| imm32 R6, 0xffff0002; |
| R6 = (A0 -= R3.L * R2.L) (FU); |
| checkreg R6, 0x00000000; |
| checkreg A0.w, 0x00000000; |
| checkreg A0.x, 0x00000000; |
| checkreg ASTAT, ( _VS | _V | _AV0S | _AV0 | _V_COPY); |
| |
| # here the result is zero, and the _V bit is not set |
| dmm32 ASTAT, (_V | _V_COPY); |
| dmm32 A0.w, 0x1fffc000; |
| dmm32 A0.x, 0x00000000; |
| imm32 R0, 0x80004000; |
| imm32 R4, 0x1fffffff; |
| imm32 R6, 0x80000000; |
| R4.L = (A0 -= R0.L * R6.H) (FU); |
| checkreg R4, 0x1fff0000; |
| checkreg A0.w, 0x00000000; |
| checkreg A0.x, 0x00000000; |
| checkreg ASTAT, (_AV0S | _AV0); |
| |
| dmm32 ASTAT, (0x0c108610 | _VS | _AV0S | _AC1 | _AC0 | _AQ | _AC0_COPY | _AN); |
| dmm32 A0.w, 0x0000eaf0; |
| dmm32 A0.x, 0x00000000; |
| imm32 R1, 0x00010000; |
| imm32 R6, 0xfbf10001; |
| R1.L = (A0 -= R6.H * R1.H) (FU); |
| checkreg R1, 0x00010000; |
| checkreg A0.w, 0x00000000; |
| checkreg A0.x, 0x00000000; |
| checkreg ASTAT, (0x0c108610 | _VS | _AV0S | _AV0 | _AC1 | _AC0 | _AQ | _AC0_COPY | _AN); |
| |
| pass |