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