Home | History | Annotate | Line # | Download | only in bfin
s5.s revision 1.1
      1  1.1  christos //  Test  r4 = ROT    (r2 by r3);
      2  1.1  christos # mach: bfin
      3  1.1  christos 
      4  1.1  christos .include "testutils.inc"
      5  1.1  christos 	start
      6  1.1  christos 
      7  1.1  christos 
      8  1.1  christos 	R0.L = 0x0001;
      9  1.1  christos 	R0.H = 0x8000;
     10  1.1  christos 
     11  1.1  christos // rot
     12  1.1  christos //  left  by 1
     13  1.1  christos // 8000 0001 -> 0000 0002 cc=1
     14  1.1  christos 	R7 = 0;
     15  1.1  christos 	CC = R7;
     16  1.1  christos 	R1 = 1;
     17  1.1  christos 	R6 = ROT R0 BY R1.L;
     18  1.1  christos 	DBGA ( R6.L , 0x0002 );
     19  1.1  christos 	DBGA ( R6.H , 0x0000 );
     20  1.1  christos 	R7 = CC;
     21  1.1  christos 	DBGA ( R7.L , 0x0001 );
     22  1.1  christos 
     23  1.1  christos // rot
     24  1.1  christos //  right by -1
     25  1.1  christos // 8000 0001 -> 4000 0000 cc=1
     26  1.1  christos 	R7 = 0;
     27  1.1  christos 	CC = R7;
     28  1.1  christos 	R1.L = 0xffff;	// check alternate mechanism for immediates
     29  1.1  christos 	R1.H = 0xffff;
     30  1.1  christos 	R6 = ROT R0 BY R1.L;
     31  1.1  christos 	DBGA ( R6.L , 0x0000 );
     32  1.1  christos 	DBGA ( R6.H , 0x4000 );
     33  1.1  christos 	R7 = CC;
     34  1.1  christos 	DBGA ( R7.L , 0x0001 );
     35  1.1  christos 
     36  1.1  christos // rot
     37  1.1  christos //  right by largest positive magnitude of 31
     38  1.1  christos // 8000 0001 -> a000 0000 cc=0
     39  1.1  christos 	R7 = 0;
     40  1.1  christos 	CC = R7;
     41  1.1  christos 	R1 = 31;
     42  1.1  christos 	R6 = ROT R0 BY R1.L;
     43  1.1  christos 	DBGA ( R6.L , 0x0000 );
     44  1.1  christos 	DBGA ( R6.H , 0xa000 );
     45  1.1  christos 	R7 = CC;
     46  1.1  christos 	DBGA ( R7.L , 0x0000 );
     47  1.1  christos 
     48  1.1  christos // rot
     49  1.1  christos //  right by largest positive magnitude of 31 with cc=1
     50  1.1  christos // 8000 0001 cc=1 -> a000 0000 cc=0
     51  1.1  christos 	R7 = 1;
     52  1.1  christos 	CC = R7;
     53  1.1  christos 	R1 = 31;
     54  1.1  christos 	R6 = ROT R0 BY R1.L;
     55  1.1  christos 	DBGA ( R6.L , 0x0000 );
     56  1.1  christos 	DBGA ( R6.H , 0xe000 );
     57  1.1  christos 	R7 = CC;
     58  1.1  christos 	DBGA ( R7.L , 0x0000 );
     59  1.1  christos 
     60  1.1  christos // rot
     61  1.1  christos //  right by largest negative magnitude of -31
     62  1.1  christos // 8000 0001 -> 0000 0005 cc=0
     63  1.1  christos 	R7 = 0;
     64  1.1  christos 	CC = R7;
     65  1.1  christos 	R1 = -31;
     66  1.1  christos 	R6 = ROT R0 BY R1.L;
     67  1.1  christos 	DBGA ( R6.L , 0x0005 );
     68  1.1  christos 	DBGA ( R6.H , 0x0000 );
     69  1.1  christos 	R7 = CC;
     70  1.1  christos 	DBGA ( R7.L , 0x0000 );
     71  1.1  christos 
     72  1.1  christos // rot
     73  1.1  christos //  right by largest negative magnitude of -31 with cc=1
     74  1.1  christos // 8000 0001 cc=1 -> 0000 0007 cc=0
     75  1.1  christos 	R7 = 1;
     76  1.1  christos 	CC = R7;
     77  1.1  christos 	R1 = -31;
     78  1.1  christos 	R6 = ROT R0 BY R1.L;
     79  1.1  christos 	DBGA ( R6.L , 0x0007 );
     80  1.1  christos 	DBGA ( R6.H , 0x0000 );
     81  1.1  christos 	R7 = CC;
     82  1.1  christos 	DBGA ( R7.L , 0x0000 );
     83  1.1  christos 
     84  1.1  christos // rot
     85  1.1  christos //  left by 7
     86  1.1  christos // 8000 0001 cc=1 -> 0000 00e0 cc=0
     87  1.1  christos 	R7 = 1;
     88  1.1  christos 	CC = R7;
     89  1.1  christos 	R1 = 7;
     90  1.1  christos 	R6 = ROT R0 BY R1.L;
     91  1.1  christos 	DBGA ( R6.L , 0x00e0 );
     92  1.1  christos 	DBGA ( R6.H , 0x0000 );
     93  1.1  christos 	R7 = CC;
     94  1.1  christos 	DBGA ( R7.L , 0x0000 );
     95  1.1  christos 
     96  1.1  christos // rot by zero
     97  1.1  christos // 8000 0001 -> 8000 0000
     98  1.1  christos 	R7 = 1;
     99  1.1  christos 	CC = R7;
    100  1.1  christos 	R1 = 0;
    101  1.1  christos 	R6 = ROT R0 BY R1.L;
    102  1.1  christos 	DBGA ( R6.L , 0x0001 );
    103  1.1  christos 	DBGA ( R6.H , 0x8000 );
    104  1.1  christos 	R7 = CC;
    105  1.1  christos 	DBGA ( R7.L , 0x0001 );
    106  1.1  christos 
    107  1.1  christos // rot by 0b1100 0001 is the same as by 1 (mask 6 bits)
    108  1.1  christos // 8000 0001 -> 0000 0002 cc=1
    109  1.1  christos 	R7 = 0;
    110  1.1  christos 	CC = R7;
    111  1.1  christos 	R1 = 0xc1 (X);
    112  1.1  christos 	R6 = ROT R0 BY R1.L;
    113  1.1  christos 	DBGA ( R6.L , 0x0002 );
    114  1.1  christos 	DBGA ( R6.H , 0x0000 );
    115  1.1  christos 	R7 = CC;
    116  1.1  christos 	DBGA ( R7.L , 0x0001 );
    117  1.1  christos 
    118  1.1  christos 	pass
    119