98 lines
2.9 KiB
ArmAsm
98 lines
2.9 KiB
ArmAsm
|
# 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
|