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