Home | History | Annotate | Line # | Download | only in bfin
      1  1.1  christos //  Immediate dual 16b SHIFT test program.
      2  1.1  christos //  Test  r4 = ASHIFT/ASHIFT (r2 by 10);
      3  1.1  christos //  Test  r4 = ASHIFT/ASHIFT (r2 by 10) S;
      4  1.1  christos //  Test  r4 = LSHIFT/LSHIFT (r2 by 10);
      5  1.1  christos # mach: bfin
      6  1.1  christos 
      7  1.1  christos .include "testutils.inc"
      8  1.1  christos 	start
      9  1.1  christos 
     10  1.1  christos 
     11  1.1  christos // arithmetic
     12  1.1  christos //  left by largest positive magnitude of 15 (0xf)
     13  1.1  christos // 8001 -> 8000
     14  1.1  christos 	R7 = 0;
     15  1.1  christos 	ASTAT = R7;
     16  1.1  christos 	R0.L = 0x8001;
     17  1.1  christos 	R0.H = 0x0100;
     18  1.1  christos 	R6 = R0 << 15 (V);
     19  1.1  christos 	DBGA ( R6.L , 0x8000 );
     20  1.1  christos 	DBGA ( R6.H , 0x0000 );
     21  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
     22  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     23  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     24  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
     25  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
     26  1.1  christos 
     27  1.1  christos // arithmetic
     28  1.1  christos //  left by largest positive magnitude of 15 (0xf) with saturation
     29  1.1  christos 	R7 = 0;
     30  1.1  christos 	ASTAT = R7;
     31  1.1  christos 	R0.L = 0x8001;
     32  1.1  christos 	R0.H = 0x0100;
     33  1.1  christos 	R6 = R0 << 15 (V , S);
     34  1.1  christos 	DBGA ( R6.L , 0x8000 );
     35  1.1  christos 	DBGA ( R6.H , 0x7fff );
     36  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     37  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     38  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     39  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
     40  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
     41  1.1  christos 
     42  1.1  christos // arithmetic
     43  1.1  christos //  left by 1
     44  1.1  christos 	R7 = 0;
     45  1.1  christos 	ASTAT = R7;
     46  1.1  christos 	R0.L = 0x8001;
     47  1.1  christos 	R0.H = 0x0100;
     48  1.1  christos 	R6 = R0 << 1 (V);
     49  1.1  christos 	DBGA ( R6.L , 0x0002 );
     50  1.1  christos 	DBGA ( R6.H , 0x0200 );
     51  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     52  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
     53  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     54  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
     55  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
     56  1.1  christos 
     57  1.1  christos // arithmetic
     58  1.1  christos //  left by 1 saturating
     59  1.1  christos 	R7 = 0;
     60  1.1  christos 	ASTAT = R7;
     61  1.1  christos 	R0.L = 0x8001;
     62  1.1  christos 	R0.H = 0x0100;
     63  1.1  christos 	R6 = R0 << 1 (V , S);
     64  1.1  christos 	DBGA ( R6.L , 0x8000 );
     65  1.1  christos 	DBGA ( R6.H , 0x0200 );
     66  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
     67  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     68  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     69  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
     70  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
     71  1.1  christos 
     72  1.1  christos // arithmetic
     73  1.1  christos //  left by 15 saturating
     74  1.1  christos 	R7 = 0;
     75  1.1  christos 	ASTAT = R7;
     76  1.1  christos 	R0.L = 0xfff0;
     77  1.1  christos 	R0.H = 0x0000;
     78  1.1  christos 	R6 = R0 << 15 (V , S);
     79  1.1  christos 	DBGA ( R6.L , 0x8000 );
     80  1.1  christos 	DBGA ( R6.H , 0x0000 );
     81  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
     82  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     83  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     84  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
     85  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
     86  1.1  christos 
     87  1.1  christos // arithmetic
     88  1.1  christos //  right by 15
     89  1.1  christos 	R7 = 0;
     90  1.1  christos 	ASTAT = R7;
     91  1.1  christos 	R0.L = 0x8000;
     92  1.1  christos 	R0.H = 0x0100;
     93  1.1  christos 	R6 = R0 >>> 15 (V);
     94  1.1  christos 	DBGA ( R6.L , 0xffff );
     95  1.1  christos 	DBGA ( R6.H , 0x0000 );
     96  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
     97  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
     98  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
     99  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
    100  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
    101  1.1  christos 
    102  1.1  christos // arithmetic
    103  1.1  christos //  right by 15 (sat has no effect)
    104  1.1  christos 	R7 = 0;
    105  1.1  christos 	ASTAT = R7;
    106  1.1  christos 	R0.L = 0x8000;
    107  1.1  christos 	R0.H = 0x0100;
    108  1.1  christos 	R6 = R0 >>> 15 (V);
    109  1.1  christos 	DBGA ( R6.L , 0xffff );
    110  1.1  christos 	DBGA ( R6.H , 0x0000 );
    111  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
    112  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
    113  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
    114  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
    115  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
    116  1.1  christos 
    117  1.1  christos // logic
    118  1.1  christos //  right by 15
    119  1.1  christos 	R7 = 0;
    120  1.1  christos 	ASTAT = R7;
    121  1.1  christos 	R0.L = 0x8000;
    122  1.1  christos 	R0.H = 0x0100;
    123  1.1  christos 	R6 = R0 >> 15 (V);
    124  1.1  christos 	DBGA ( R6.L , 0x0001 );
    125  1.1  christos 	DBGA ( R6.H , 0x0000 );
    126  1.1  christos 	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
    127  1.1  christos 	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
    128  1.1  christos 	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
    129  1.1  christos 	CC = AV0;	R7 = CC; DBGA ( R7.L , 0x0 );
    130  1.1  christos 	CC = AV1;	R7 = CC; DBGA ( R7.L , 0x0 );
    131  1.1  christos 
    132  1.1  christos 	pass
    133