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