source: trunk/Softwares/Basic_test.or32/src/asm/asm_017_mul.s @ 2

Last change on this file since 2 was 2, checked in by kane, 17 years ago

Import Morpheo

File size: 4.5 KB
Line 
1/********************************************
2 * files               : asm_017_mul.s
3 * authors             : Rosiere Mathieu
4 * date                : 2006/06/20
5 ********************************************
6 * input               : -
7 * output              : 1 test OK
8 *                       0 test KO
9 ********************************************
10 * test                :
11 * warning             : instruction ok
12 *                         l.addi
13 *                         l.and
14 *                         l.jal
15 *                         l.jr
16 ********************************************
17 */
18        .file   "asm_017_mul.s"
19        .section .text
20        .align  4
21
22        .global _asm_017_mul
23_asm_017_mul : 
24        /* save context */
25        l.addi  r1,r1,-16
26        l.sw    0 (r1),r20
27        l.sw    4 (r1),r21     
28        l.sw    8 (r1),r22
29        l.sw    12(r1),r23
30       
31        /* Return is KO (default)*/
32        l.and   r11,r0,r0
33
34        /*
35         r20 :  result
36         r21 :  operand 1
37         r22 :  operand 2
38         r23 :  result waited
39        */
40       
41        /* Operand 1 : positive */
42        l.movhi r21,0x1234
43        l.ori   r21,r21,0x5678
44
45        /* Test 1.1 */
46        l.and   r22,r0,r0
47        l.and   r23,r0,r0
48       
49        l.mul   r20,r21,r22
50               
51        l.sfeq  r20,r23
52        l.bnf   _asm_017_mul_ko
53        l.nop   1
54
55        l.muli  r20,r21,0
56               
57        l.sfeq  r20,r23
58        l.bnf   _asm_017_mul_ko
59        l.nop   1
60
61        l.mulu  r20,r21,r22
62               
63        l.sfeq  r20,r23
64        l.bnf   _asm_017_mul_ko
65        l.nop   1
66
67        /* Test 1.2 */
68               
69        l.ori   r22,r0,1
70        l.or    r23,r0,r21
71       
72        l.mul   r20,r21,r22
73               
74        l.sfeq  r20,r23
75        l.bnf   _asm_017_mul_ko
76        l.nop   1
77
78        l.muli  r20,r21,1
79               
80        l.sfeq  r20,r23
81        l.bnf   _asm_017_mul_ko
82        l.nop   1
83
84        l.mulu  r20,r21,r22
85               
86        l.sfeq  r20,r23
87        l.bnf   _asm_017_mul_ko
88        l.nop   1
89
90        /* Test 1.3 */
91               
92        l.ori   r22,r0,2
93        l.slli  r23,r21, 1
94       
95        l.mul   r20,r21,r22
96               
97        l.sfeq  r20,r23
98        l.bnf   _asm_017_mul_ko
99        l.nop   1
100
101        l.muli  r20,r21,2
102               
103        l.sfeq  r20,r23
104        l.bnf   _asm_017_mul_ko
105        l.nop   1
106
107        l.mulu  r20,r21,r22
108               
109        l.sfeq  r20,r23
110        l.bnf   _asm_017_mul_ko
111        l.nop   1
112
113        /* Test 1.4 */
114               
115        l.ori   r22,r0,0x11
116        l.movhi r23,0x3579
117        l.ori   r23,r23,0xbdf8
118       
119        l.mul   r20,r21,r22
120               
121        l.sfeq  r20,r23
122        l.bnf   _asm_017_mul_ko
123        l.nop   1
124
125        l.muli  r20,r21,0x11
126               
127        l.sfeq  r20,r23
128        l.bnf   _asm_017_mul_ko
129        l.nop   1
130
131        l.mulu  r20,r21,r22
132               
133        l.sfeq  r20,r23
134        l.bnf   _asm_017_mul_ko
135        l.nop   1
136
137        /* Test 1.4 */
138
139        l.addi  r22,r0,-1
140        l.movhi r23,0xedcb
141        l.ori   r23,r23,0xa988
142
143        l.mul   r20,r21,r22
144               
145        l.sfeq  r20,r23
146        l.bnf   _asm_017_mul_ko
147        l.nop   1
148/*
149        l.muli  r20,r21,-1
150               
151        l.sfeq  r20,r23
152        l.bnf   _asm_017_mul_ko
153        l.nop   1
154*/
155        l.mulu  r20,r21,r22
156               
157        l.sfeq  r20,r23
158        l.bnf   _asm_017_mul_ko
159        l.nop   1
160
161        /* Test 1.5 */
162
163        l.addi  r22,r0,-2
164       
165        l.movhi r23,0xdb97
166        l.ori   r23,r23,0x5310
167
168        l.mul   r20,r21,r22
169               
170        l.sfeq  r20,r23
171        l.bnf   _asm_017_mul_ko
172        l.nop   1
173/*
174        l.muli  r20,r21,-2
175                       
176        l.sfeq  r20,r23
177        l.bnf   _asm_017_mul_ko
178        l.nop   1
179*/
180        l.mulu  r20,r21,r22
181               
182        l.sfeq  r20,r23
183        l.bnf   _asm_017_mul_ko
184        l.nop   1
185
186        /* Operand 2 : negative */
187        l.movhi r21,0xdead
188        l.ori   r21,r21,0xbeaf
189
190        /* Test 2.1 */
191        l.and   r22,r0,r0
192        l.and   r23,r0,r0
193       
194        l.mul   r20,r21,r22
195               
196        l.sfeq  r20,r23
197        l.bnf   _asm_017_mul_ko
198        l.nop   1
199
200        l.muli  r20,r21,0
201               
202        l.sfeq  r20,r23
203        l.bnf   _asm_017_mul_ko
204        l.nop   1
205
206        l.mulu  r20,r21,r22
207               
208        l.sfeq  r20,r23
209        l.bnf   _asm_017_mul_ko
210        l.nop   1
211
212        /* Test 2.2 */
213               
214        l.ori   r22,r0,1
215        l.or    r23,r0,r21
216       
217        l.mul   r20,r21,r22
218               
219        l.sfeq  r20,r23
220        l.bnf   _asm_017_mul_ko
221        l.nop   1
222
223        l.muli  r20,r21,1
224               
225        l.sfeq  r20,r23
226        l.bnf   _asm_017_mul_ko
227        l.nop   1
228
229        l.mulu  r20,r21,r22
230               
231        l.sfeq  r20,r23
232        l.bnf   _asm_017_mul_ko
233        l.nop   1
234
235        /* Test 2.3 */
236               
237        l.ori   r22,r0,2
238        l.slli  r23,r21, 1
239       
240        l.mul   r20,r21,r22
241               
242        l.sfeq  r20,r23
243        l.bnf   _asm_017_mul_ko
244        l.nop   1
245
246        l.muli  r20,r21,2
247               
248        l.sfeq  r20,r23
249        l.bnf   _asm_017_mul_ko
250        l.nop   1
251
252        l.mulu  r20,r21,r22
253               
254        l.sfeq  r20,r23
255        l.bnf   _asm_017_mul_ko
256        l.nop   1
257
258        /* Test 2.4 */
259               
260        l.ori   r22,r0,0x11
261        l.movhi r23,0xc989
262        l.ori   r23,r23,0xa99f
263       
264        l.mul   r20,r21,r22
265               
266        l.sfeq  r20,r23
267        l.bnf   _asm_017_mul_ko
268        l.nop   1
269
270        l.muli  r20,r21,0x11
271               
272        l.sfeq  r20,r23
273        l.bnf   _asm_017_mul_ko
274        l.nop   1
275
276        l.mulu  r20,r21,r22
277               
278        l.sfeq  r20,r23
279        l.bnf   _asm_017_mul_ko
280        l.nop   1
281
282        /* Test 2.4 */
283
284        l.addi  r22,r0,-1
285        l.movhi r23,0x2152
286        l.ori   r23,r23,0x4151
287
288        l.mul   r20,r21,r22
289               
290        l.sfeq  r20,r23
291        l.bnf   _asm_017_mul_ko
292        l.nop   1
293/*
294        l.muli  r20,r21,-1
295               
296        l.sfeq  r20,r23
297        l.bnf   _asm_017_mul_ko
298        l.nop   1
299*/
300        l.mulu  r20,r21,r22
301               
302        l.sfeq  r20,r23
303        l.bnf   _asm_017_mul_ko
304        l.nop   1
305
306        /* Test 2.5 */
307
308        l.addi  r22,r0,-2
309
310        l.movhi r23,0x42a4
311        l.ori   r23,r23,0x82a2
312
313        l.mul   r20,r21,r22
314               
315        l.sfeq  r20,r23
316        l.bnf   _asm_017_mul_ko
317        l.nop   1
318/*
319        l.muli  r20,r21,-2
320                       
321        l.sfeq  r20,r23
322        l.bnf   _asm_017_mul_ko
323        l.nop   1
324*/
325        l.mulu  r20,r21,r22
326               
327        l.sfeq  r20,r23
328        l.bnf   _asm_017_mul_ko
329        l.nop   1
330       
331_asm_017_mul_ok :       
332        l.addi  r11,r0,1
333_asm_017_mul_ko :
334       
335        /* load context */
336        l.lwz   r20,0 (r1)
337        l.lwz   r21,4 (r1)     
338        l.lwz   r22,8 (r1)
339        l.lwz   r23,12(r1)
340        l.jr    r9
341        l.addi  r1,r1,16
Note: See TracBrowser for help on using the repository browser.