blob: 5ddc5d38dc7b89521466bc252b881bab1f39b19a [file] [log] [blame]
// 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