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