s18.s revision 1.1.1.1 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