1// MAC test program. 2// Test for positive and negative saturation using 3// SIGNED FRACTIONAL mode. 4# mach: bfin 5 6#include "test.h" 7.include "testutils.inc" 8 start 9 10 init_r_regs 0; 11 ASTAT = R0; 12 13// load r0=0x00007fff 14// load r1=0x00007fff 15 loadsym p0, data0 16 R0 = [ P0 ++ ]; 17 R1 = [ P0 ++ ]; 18 19 R5 = 0; 20 R4 = 0; 21 BITSET( R4 , 9 ); 22 A1 = A0 = 0; 23 24LOOP1: 25 A1 -= R0.L * R1.L, A0 += R0.L * R1.L; 26//_DBG a1; 27//_DBG a0; 28 R4 += -1; 29 CC = R4 == R5; 30 IF !CC JUMP LOOP1; 31R3 = ASTAT; 32CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ); 33 34 _DBG A1; 35 _DBG A0; 36 37 R6 = A1.w; 38 _DBG ASTAT; 39 R7.L = A1.x; 40 R3 = ASTAT; 41 _DBG r3; 42 CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ); 43 44 CHECKREG R6, 0; 45 CHECKREG R7, 0x0000FF80; 46 R6 = A0.w; 47 R7.L = A0.x; 48 CHECKREG R6, 0xffffffff; 49 CHECKREG R7, 0x7f; 50 51 pass 52 53 .data 0x1000; 54data0: 55 .dw 0x7fff 56 .dw 0x0000 57 .dw 0x7fff 58 .dw 0x0000 59