blob: 9dd2d1a46f6f0a5e1632f57c0553fa9d4d23f1c2 [file] [log] [blame]
# 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