s16.s revision 1.1 1 1.1 christos // reg-based SHIFT test program.
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 // Test FDEP with no sign extension
9 1.1 christos
10 1.1 christos R0.L = 0xdead;
11 1.1 christos R0.H = 0x1234;
12 1.1 christos R1.L = 0x0c08; // pos=12 len=8
13 1.1 christos R1.H = 0x00ff;
14 1.1 christos R7 = DEPOSIT( R0, R1 );
15 1.1 christos DBGA ( R7.L , 0xfead );
16 1.1 christos DBGA ( R7.H , 0x123f );
17 1.1 christos
18 1.1 christos R0.L = 0xdead;
19 1.1 christos R0.H = 0x1234;
20 1.1 christos R1.L = 0x0c04; // pos=12 len=4
21 1.1 christos R1.H = 0x00ff;
22 1.1 christos R7 = DEPOSIT( R0, R1 );
23 1.1 christos DBGA ( R7.L , 0xfead );
24 1.1 christos DBGA ( R7.H , 0x1234 );
25 1.1 christos
26 1.1 christos R0.L = 0xdead;
27 1.1 christos R0.H = 0x1234;
28 1.1 christos R1.L = 0x0c05; // pos=12 len=5
29 1.1 christos R1.H = 0x00ff;
30 1.1 christos R7 = DEPOSIT( R0, R1 );
31 1.1 christos DBGA ( R7.L , 0xfead );
32 1.1 christos DBGA ( R7.H , 0x1235 );
33 1.1 christos
34 1.1 christos R0.L = 0xdead;
35 1.1 christos R0.H = 0x1234;
36 1.1 christos R1.L = 0x0010; // pos=0 len=16
37 1.1 christos R1.H = 0xffff;
38 1.1 christos R7 = DEPOSIT( R0, R1 );
39 1.1 christos DBGA ( R7.L , 0xffff );
40 1.1 christos DBGA ( R7.H , 0x1234 );
41 1.1 christos
42 1.1 christos R0.L = 0xdead;
43 1.1 christos R0.H = 0x1234;
44 1.1 christos R1.L = 0x0011; // pos=0 len=17
45 1.1 christos R1.H = 0xffff;
46 1.1 christos R7 = DEPOSIT( R0, R1 );
47 1.1 christos DBGA ( R7.L , 0xffff );
48 1.1 christos DBGA ( R7.H , 0x1234 );
49 1.1 christos
50 1.1 christos R0.L = 0xdead;
51 1.1 christos R0.H = 0x1234;
52 1.1 christos R1.L = 0x0114; // pos=1 len=20
53 1.1 christos R1.H = 0xffff;
54 1.1 christos R7 = DEPOSIT( R0, R1 );
55 1.1 christos DBGA ( R7.L , 0xffff );
56 1.1 christos DBGA ( R7.H , 0x1235 );
57 1.1 christos
58 1.1 christos R0.L = 0xdead;
59 1.1 christos R0.H = 0x1234;
60 1.1 christos R1.L = 0x001f; // pos=0 len=31
61 1.1 christos R1.H = 0xffff;
62 1.1 christos R7 = DEPOSIT( R0, R1 );
63 1.1 christos DBGA ( R7.L , 0xffff );
64 1.1 christos DBGA ( R7.H , 0x1234 );
65 1.1 christos
66 1.1 christos R0.L = 0xdead;
67 1.1 christos R0.H = 0x1234;
68 1.1 christos R1.L = 0x1c04; // pos=28 len=4
69 1.1 christos R1.H = 0xffff;
70 1.1 christos R7 = DEPOSIT( R0, R1 );
71 1.1 christos DBGA ( R7.L , 0xdead );
72 1.1 christos DBGA ( R7.H , 0xf234 );
73 1.1 christos
74 1.1 christos R0.L = 0xdead;
75 1.1 christos R0.H = 0x0234;
76 1.1 christos R1.L = 0x1d04; // pos=29 len=4
77 1.1 christos R1.H = 0xffff;
78 1.1 christos R7 = DEPOSIT( R0, R1 );
79 1.1 christos DBGA ( R7.L , 0xdead );
80 1.1 christos DBGA ( R7.H , 0xe234 );
81 1.1 christos
82 1.1 christos R0.L = 0xdead;
83 1.1 christos R0.H = 0x0234;
84 1.1 christos R1.L = 0x1f04; // pos=31 len=4
85 1.1 christos R1.H = 0xffff;
86 1.1 christos R7 = DEPOSIT( R0, R1 );
87 1.1 christos DBGA ( R7.L , 0xdead );
88 1.1 christos DBGA ( R7.H , 0x8234 );
89 1.1 christos
90 1.1 christos R0.L = 0xdead;
91 1.1 christos R0.H = 0x0234;
92 1.1 christos R1.L = 0x2004; // pos=32 len=4, same as pos=0 len=4
93 1.1 christos R1.H = 0xffff;
94 1.1 christos R7 = DEPOSIT( R0, R1 );
95 1.1 christos DBGA ( R7.L , 0xdeaf );
96 1.1 christos DBGA ( R7.H , 0x0234 );
97 1.1 christos
98 1.1 christos // Test FDEP with sign extension
99 1.1 christos
100 1.1 christos R0.L = 0xdead;
101 1.1 christos R0.H = 0x1234;
102 1.1 christos R1.L = 0x0c08; // pos=12 len=8
103 1.1 christos R1.H = 0x00ff;
104 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
105 1.1 christos DBGA ( R7.L , 0xfead );
106 1.1 christos DBGA ( R7.H , 0xffff );
107 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
108 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
109 1.1 christos
110 1.1 christos R0.L = 0xdead;
111 1.1 christos R0.H = 0x1234;
112 1.1 christos R1.L = 0x0c08; // pos=12 len=8
113 1.1 christos R1.H = 0x007f;
114 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
115 1.1 christos DBGA ( R7.L , 0xfead );
116 1.1 christos DBGA ( R7.H , 0x0007 );
117 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
118 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
119 1.1 christos
120 1.1 christos R0.L = 0xdea0;
121 1.1 christos R0.H = 0x1234;
122 1.1 christos R1.L = 0x0110; // pos=1 len=16
123 1.1 christos R1.H = 0xffff;
124 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
125 1.1 christos DBGA ( R7.L , 0xfffe );
126 1.1 christos DBGA ( R7.H , 0xffff );
127 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
128 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
129 1.1 christos
130 1.1 christos R0.L = 0xdea0;
131 1.1 christos R0.H = 0x1234;
132 1.1 christos R1.L = 0x0101; // pos=1 len=1
133 1.1 christos R1.H = 0xffff;
134 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
135 1.1 christos DBGA ( R7.L , 0xfffe );
136 1.1 christos DBGA ( R7.H , 0xffff );
137 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
138 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
139 1.1 christos
140 1.1 christos R0.L = 0xdea0;
141 1.1 christos R0.H = 0x1234;
142 1.1 christos R1.L = 0x0102; // pos=1 len=2
143 1.1 christos R1.H = 0x0001;
144 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
145 1.1 christos DBGA ( R7.L , 0x0002 );
146 1.1 christos DBGA ( R7.H , 0x0000 );
147 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
148 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
149 1.1 christos
150 1.1 christos R0.L = 0xdea0;
151 1.1 christos R0.H = 0x1234;
152 1.1 christos R1.L = 0x0002; // pos=0 len=2
153 1.1 christos R1.H = 0x0001;
154 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
155 1.1 christos DBGA ( R7.L , 0x0001 );
156 1.1 christos DBGA ( R7.H , 0x0000 );
157 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
158 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
159 1.1 christos
160 1.1 christos R0.L = 0xdea0;
161 1.1 christos R0.H = 0x1234;
162 1.1 christos R1.L = 0x0000; // pos=0 len=0
163 1.1 christos R1.H = 0x000f;
164 1.1 christos R7 = DEPOSIT( R0, R1 ) (X);
165 1.1 christos DBGA ( R7.L , 0x0000 );
166 1.1 christos DBGA ( R7.H , 0x0000 );
167 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
168 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
169 1.1 christos
170 1.1 christos pass
171