Home | History | Annotate | Line # | Download | only in bfin
cc5.S revision 1.1
      1 //  ALU test program.
      2 //  Test instructions   reg = (A0+=A1)
      3 
      4 #include "test.h"
      5 .include "testutils.inc"
      6 	start
      7 
      8 	R0 = 0;
      9 	ASTAT = R0;
     10 
     11 	loadsym P0, data0;
     12 
     13 	R0 = [ P0 ++ ];
     14 	R1 = [ P0 ++ ];
     15 	R2 = [ P0 ++ ];
     16 	R3 = [ P0 ++ ];
     17 	R4 = [ P0 ++ ];
     18 
     19 // add accums and transfer result
     20 	A1 = A0 = 0;
     21 	A1.w = R0;
     22 	A0.w = R0;
     23 	R6 = ( A0 += A1 );
     24 	CHECKREG R6, 0x22222222;
     25 	R6 = A0.w;
     26 	CHECKREG R6, 0x22222222;
     27 	R7 = A0.x;
     28 	CHECKREG R7, 0;
     29 	R6 = A1.w;
     30 	CHECKREG R6, 0x11111111;
     31 	R7 = A1.x;
     32 	CHECKREG R7, 0;
     33 
     34 // add accums and transfer result (saturate positive)
     35 	R7 = 0;
     36 	ASTAT = R7;
     37 	A1 = A0 = 0;
     38 	A1.w = R1;
     39 	A0.w = R1;
     40 	R6 = ( A0 += A1 );
     41 	CHECKREG R6, 0x7fffffff;
     42 	R6 = A0.w;
     43 	CHECKREG R6, 0xfffffffe;
     44 	R7 = A0.x;
     45 	CHECKREG R7, 0;
     46 	R6 = A1.w;
     47 	CHECKREG R6, 0x7fffffff;
     48 	_DBG ASTAT;
     49 	R7 = A1.x;
     50 	_DBG ASTAT;
     51 	CHECKREG R7, 0;
     52 	R7 = ASTAT;
     53 	CHECKREG R7, (_VS|_V|_V_COPY);
     54 
     55 // add accums and transfer result (saturate negative)
     56 	R7 = 0;
     57 	ASTAT = R7;
     58 	A1 = A0 = 0;
     59 	A1.w = R2;
     60 	A0.w = R2;
     61 	A1.x = R3.L;
     62 	A0.x = R3.L;
     63 	R6 = ( A0 += A1 );
     64 	CHECKREG R6, 0x80000000;
     65 	R6 = A0.w;
     66 	CHECKREG R6, 0x00000000;
     67 	R7 = A0.x;
     68 	CHECKREG R6, 0;
     69 	R6 = A1.w;
     70 	CHECKREG R6, 0x80000000;
     71 	R7 = A1.x;
     72 	CHECKREG R7, 0xffffffff;
     73 	R7 = ASTAT;
     74 	_DBG ASTAT;
     75 	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN);
     76 
     77 	pass
     78 
     79 	.data
     80 data0:
     81 	.dw 0x1111
     82 	.dw 0x1111
     83 	.dw 0xffff
     84 	.dw 0x7fff
     85 	.dw 0x0000
     86 	.dw 0x8000
     87 	.dw 0x00ff
     88 	.dw 0x0000
     89 	.dw 0x0000
     90 	.dw 0x0000
     91