Home | History | Annotate | Line # | Download | only in bfin
      1 //  ALU test program.
      2 //  Test instructions
      3 //  r7 = +/+ (r0,r1);
      4 //  r7 = +/+ (r0,r1) s;
      5 //  r7 = +/+ (r0,r1) sx;
      6 # mach: bfin
      7 
      8 .include "testutils.inc"
      9 	start
     10 
     11 
     12 // one result overflows positive
     13 	R0.L = 0x0001;
     14 	R0.H = 0x0010;
     15 	R1.L = 0x7fff;
     16 	R1.H = 0x0010;
     17 	R7 = 0;
     18 	ASTAT = R7;
     19 	R7 = R0 +|+ R1;
     20 	DBGA ( R7.L , 0x8000 );
     21 	DBGA ( R7.H , 0x0020 );
     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 = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     26 
     27 // one result overflows negative
     28 	R0.L = 0xffff;
     29 	R0.H = 0x0010;
     30 	R1.L = 0x8000;
     31 	R1.H = 0x0010;
     32 	R7 = 0;
     33 	ASTAT = R7;
     34 	R7 = R0 +|+ R1;
     35 	DBGA ( R7.L , 0x7fff );
     36 	DBGA ( R7.H , 0x0020 );
     37 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     38 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
     39 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     40 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     41 
     42 // one result zero
     43 	R0.L = 0x0001;
     44 	R0.H = 0xffff;
     45 	R1.L = 0x0001;
     46 	R1.H = 0x0001;
     47 	R7 = 0;
     48 	ASTAT = R7;
     49 	R7 = R0 +|+ R1;
     50 	DBGA ( R7.L , 0x0002 );
     51 	DBGA ( R7.H , 0x0000 );
     52 	CC = AZ;	R5 = CC; DBGA ( R5.L , 0x1 );
     53 	CC = AN;	R5 = CC; DBGA ( R5.L , 0x0 );
     54 	CC =  V;	R5 = CC; DBGA ( R5.L , 0x0 );
     55 	CC = AC0;	R5 = CC; DBGA ( R5.L , 0x0 );
     56 
     57 // one result saturates positive
     58 	R0.L = 0x0001;
     59 	R0.H = 0x0010;
     60 	R1.L = 0x7fff;
     61 	R1.H = 0x0010;
     62 	R7 = 0;
     63 	ASTAT = R7;
     64 	R7 = R0 +|+ R1 (S);
     65 	DBGA ( R7.L , 0x7fff );
     66 	DBGA ( R7.H , 0x0020 );
     67 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     68 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
     69 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     70 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     71 
     72 // one result saturates negative
     73 	R0.L = 0xffff;
     74 	R0.H = 0x0010;
     75 	R1.L = 0x8000;
     76 	R1.H = 0x0010;
     77 	R7 = 0;
     78 	ASTAT = R7;
     79 	R7 = R0 +|+ R1 (S);
     80 	DBGA ( R7.L , 0x8000 );
     81 	DBGA ( R7.H , 0x0020 );
     82 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     83 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     84 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
     85 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
     86 
     87 // two results saturates negative
     88 	R0.L = 0xffff;
     89 	R0.H = 0xfff0;
     90 	R1.L = 0x8000;
     91 	R1.H = 0x8000;
     92 	R7 = 0;
     93 	ASTAT = R7;
     94 	R7 = R0 +|+ R1 (S);
     95 	DBGA ( R7.L , 0x8000 );
     96 	DBGA ( R7.H , 0x8000 );
     97 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     98 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     99 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
    100 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
    101 
    102 // one result overflows positive and cross
    103 	R0.L = 0x0001;
    104 	R0.H = 0x0010;
    105 	R1.L = 0x7fff;
    106 	R1.H = 0x0010;
    107 	R7 = 0;
    108 	ASTAT = R7;
    109 	R7 = R0 +|+ R1 (CO);
    110 	DBGA ( R7.L , 0x0020 );
    111 	DBGA ( R7.H , 0x8000 );
    112 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
    113 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
    114 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
    115 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
    116 
    117 // one result saturates negative and cross
    118 	R0.L = 0xffff;
    119 	R0.H = 0x0010;
    120 	R1.L = 0x8000;
    121 	R1.H = 0x0010;
    122 	R7 = 0;
    123 	ASTAT = R7;
    124 	R7 = R0 +|+ R1 (SCO);
    125 	DBGA ( R7.L , 0x0020 );
    126 	DBGA ( R7.H , 0x8000 );
    127 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
    128 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
    129 	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
    130 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
    131 
    132 	pass
    133