58 lines
876 B
ArmAsm
58 lines
876 B
ArmAsm
// MAC test program.
|
|
// Test for positive and negative saturation using
|
|
// SIGNED FRACTIONAL mode.
|
|
# mach: bfin
|
|
|
|
#include "test.h"
|
|
.include "testutils.inc"
|
|
start
|
|
|
|
init_r_regs 0;
|
|
ASTAT = R0;
|
|
|
|
// load r0=0x00007fff
|
|
// load r1=0x00007fff
|
|
loadsym p0, data0
|
|
R0 = [ P0 ++ ];
|
|
R1 = [ P0 ++ ];
|
|
|
|
R5 = 0;
|
|
R4 = 0;
|
|
BITSET( R4 , 9 );
|
|
A1 = A0 = 0;
|
|
|
|
LOOP1:
|
|
A1 -= R0.L * R1.L, A0 += R0.L * R1.L;
|
|
//_DBG a1;
|
|
//_DBG a0;
|
|
R4 += -1;
|
|
CC = R4 == R5;
|
|
IF !CC JUMP LOOP1;
|
|
R3 = ASTAT;
|
|
CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
|
|
|
|
_DBG A1;
|
|
_DBG A0;
|
|
|
|
R6 = A1.w;
|
|
_DBG ASTAT;
|
|
R7.L = A1.x;
|
|
R3 = ASTAT;
|
|
_DBG r3;
|
|
CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
|
|
|
|
CHECKREG R6, 0;
|
|
CHECKREG R7, 0x0000FF80;
|
|
R6 = A0.w;
|
|
R7.L = A0.x;
|
|
CHECKREG R6, 0xffffffff;
|
|
CHECKREG R7, 0x7f;
|
|
|
|
pass
|
|
|
|
.data 0x1000;
|
|
data0:
|
|
.dw 0x7fff
|
|
.dw 0x0000
|
|
.dw 0x7fff
|
|
.dw 0x0000
|