Home | History | Annotate | Line # | Download | only in bfin
      1 /*  ALU test program.
      2  *  Test instructions
      3  *  r7 = +/- (r0,r1);
      4  *  r7 = -/+ (r0,r1);
      5  *  r7 = -/- (r0,r1);
      6  */
      7 
      8 # mach: bfin
      9 
     10 .include "testutils.inc"
     11 	start
     12 
     13 // test subtraction
     14 	R0.L = 0x000f;
     15 	R0.H = 0x0010;
     16 	R1.L = 0x000f;
     17 	R1.H = 0x0010;
     18 	R7 = 0;
     19 	ASTAT = R7;
     20 	R7 = R0 +|- R1;
     21 	DBGA ( R7.L , 0x0000 );
     22 	DBGA ( R7.H , 0x0020 );
     23 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
     24 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
     25 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x0 );
     26 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     27 
     28 // test overflow negative on subtraction
     29 	R0.L = 0x8000;
     30 	R0.H = 0x0010;
     31 	R1.L = 0x0001;
     32 	R1.H = 0x0010;
     33 	R7 = 0;
     34 	ASTAT = R7;
     35 	R7 = R0 +|- R1;
     36 	DBGA ( R7.L , 0x7fff );
     37 	DBGA ( R7.H , 0x0020 );
     38 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     39 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
     40 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     41 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     42 
     43 // test saturate negative on subtraction +/-
     44 	R0.L = 0x8000;
     45 	R0.H = 0x0010;
     46 	R1.L = 0x0001;
     47 	R1.H = 0x0010;
     48 	R7 = 0;
     49 	ASTAT = R7;
     50 	R7 = R0 +|- R1 (S);
     51 	DBGA ( R7.L , 0x8000 );
     52 	DBGA ( R7.H , 0x0020 );
     53 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     54 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     55 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     56 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     57 
     58 // test saturate negative on subtraction -/+
     59 	R0.L = 0x8000;
     60 	R0.H = 0x8000;
     61 	R1.L = 0x0001;
     62 	R1.H = 0x0001;
     63 	R7 = 0;
     64 	ASTAT = R7;
     65 	R7 = R0 -|+ R1 (S);
     66 	DBGA ( R7.L , 0x8001 );
     67 	DBGA ( R7.H , 0x8000 );
     68 	CC = AZ;	R5 = CC; DBGA ( R5.L , 0x0 );
     69 	CC = AN;	R5 = CC; DBGA ( R5.L , 0x1 );
     70 	CC =  V;	R5 = CC; DBGA ( R5.L , 0x1 );
     71 	CC = AC0;	R5 = CC; DBGA ( R5.L , 0x0 );
     72 
     73 // test saturate negative on subtraction -/-
     74 	R0.L = 0x8000;
     75 	R0.H = 0x8000;
     76 	R1.L = 0x0001;
     77 	R1.H = 0x0001;
     78 	R7 = 0;
     79 	ASTAT = R7;
     80 	R7 = R0 -|- R1 (S);
     81 	DBGA ( R7.L , 0x8000 );
     82 	DBGA ( R7.H , 0x8000 );
     83 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     84 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     85 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     86 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     87 
     88 // test saturate positive on subtraction -/+
     89 	R0.L = 0x7fff;
     90 	R0.H = 0x7fff;
     91 	R1.L = 0xffff;
     92 	R1.H = 0xffff;
     93 	R7 = 0;
     94 	ASTAT = R7;
     95 	R7 = R0 -|+ R1 (S);
     96 	DBGA ( R7.L , 0x7ffe );
     97 	DBGA ( R7.H , 0x7fff );
     98 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     99 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
    100 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
    101 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
    102 
    103 	pass
    104