source: trunk/Softwares/Basic_test/src/asm/asm_004_sfeq.s

Last change on this file was 81, checked in by rosiere, 17 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 4.3 KB
Line 
1/********************************************
2 * files               : asm_004_sfeq.s
3 * authors             : Rosiere Mathieu
4 * date                : 2006/06/22
5 ********************************************
6 * input               : -
7 * output              : 1 test OK
8 *                       0 test KO
9 ********************************************
10 * test                : test l.sfeq
11 * warning             : instruction ok
12 *                         l.addi
13 *                         l.and
14 *                         l.bf
15 *                         l.bnf
16 *                         l.movhi
17 *                         l.jal
18 *                         l.jr
19 *                         l.lwz
20 *                         l.ori
21 *                         l.sw
22 ********************************************
23 */
24        .file   "asm_004_sfeq.s"
25        .section .text
26        .align  4
27
28        .global _asm_004_sfeq
29_asm_004_sfeq : 
30        /* save context */
31        l.addi  r1,r1,-8
32        l.sw    0 (r1),r21
33        l.sw    4 (r1),r22
34        /* Return is KO (default)*/
35        l.and   r11,r0,r0
36
37        /* Listing of test
38                        |       R       I       I
39        Op1     Op2     |       F1      F2      F3
40        ----------------+-------------------------------
41        +       +=      |       1       0       1
42        +       +>      |       0       0       0
43        +       +<      |       0       0       0
44        +       -       |       0       0       0
45        -       -=      |       1       1       0
46        -       ->      |       0       0       0
47        -       -<      |       0       0       0
48
49        Op1 with :
50        Value on 32 bits                (result F1)
51        Value on 16 bits - extend 1     (result F2)
52                         - extend 0     (result F3)
53         */
54
55        /*************************/
56        /* F1 : VALUE ON 32 BITS */
57        /*************************/
58       
59        /* Op1 : + */
60        l.movhi r21,0x7ead
61        l.ori   r21,r21,0xbeaf
62
63        /* Op2 : += */
64        l.movhi r22,0x7ead
65        l.ori   r22,r22,0xbeaf
66       
67        l.sfeq  r21,r22
68        l.bnf   _asm_004_sfeq_ko        /* if not set : error */
69        l.nop   1
70
71        /* Op2 : +> */
72        l.movhi r22,0x7ead
73        l.ori   r22,r22,0xbfaf
74
75        l.sfeq  r21,r22
76        l.bf    _asm_004_sfeq_ko        /* if     set : error */
77        l.nop   2
78       
79        /* Op2 : +< */
80        l.movhi r22,0x7ead
81        l.ori   r22,r22,0xbdaf
82
83        l.sfeq  r21,r22
84        l.bf    _asm_004_sfeq_ko        /* if     set : error */
85        l.nop   3
86
87        /* Op2 : - */
88        l.movhi r22,0xdead
89        l.ori   r22,r22,0xbeaf
90
91        l.sfeq  r21,r22
92        l.bf    _asm_004_sfeq_ko        /* if     set : error */
93        l.nop   4
94       
95        /* Op1 : - */
96        l.movhi r21,0xdead
97        l.ori   r21,r21,0xbeaf
98
99        /* Op2 : -= */
100               
101        l.sfeq  r21,r22
102        l.bnf   _asm_004_sfeq_ko        /* if not set : error */
103        l.nop   5
104
105        /* Op2 : -> */
106        l.movhi r22,0xdead
107        l.ori   r22,r22,0xbfaf
108
109        l.sfeq  r21,r22
110        l.bf    _asm_004_sfeq_ko        /* if     set : error */
111        l.nop   6
112       
113        /* Op2 : -< */
114        l.movhi r22,0xdead
115        l.ori   r22,r22,0xbdaf
116
117        l.sfeq  r21,r22
118        l.bf    _asm_004_sfeq_ko        /* if     set : error */
119        l.nop   7
120
121        /************************************/
122        /* F2 : VALUE ON 16 BITS - extend 1 */
123        /************************************/
124        /* Op1 : + */
125        l.movhi r21,0xFFFF
126        l.ori   r21,r21,0x7ead
127
128        /* Op2 : += */
129        l.sfeqi r21,0x7ead
130        l.bf    _asm_004_sfeq_ko        /* if     set : error */
131        l.nop   1
132
133        /* Op2 : +> */
134        l.sfeqi r21,0x7ebd
135        l.bf    _asm_004_sfeq_ko        /* if     set : error */
136        l.nop   2
137       
138        /* Op2 : +< */
139        l.sfeqi r21,0x7e9d
140        l.bf    _asm_004_sfeq_ko        /* if     set : error */
141        l.nop   3
142
143        /* Op2 : - */
144        l.sfeqi r21,0xdead
145        l.bf    _asm_004_sfeq_ko        /* if     set : error */
146        l.nop   4
147       
148        /* Op1 : - */
149        l.movhi r21,0xFFFF
150        l.ori   r21,r21,0xdead
151
152        /* Op2 : -= */
153        l.sfeqi r21,0xdead
154        l.bnf   _asm_004_sfeq_ko        /* if not set : error */
155        l.nop   5
156
157        /* Op2 : -> */
158        l.sfeqi r21,0xdebd
159        l.bf    _asm_004_sfeq_ko        /* if     set : error */
160        l.nop   6
161       
162        /* Op2 : -< */
163        l.sfeqi r21,0xde9d
164        l.bf    _asm_004_sfeq_ko        /* if     set : error */
165        l.nop   7
166       
167        /************************************/
168        /* F3 : VALUE ON 16 BITS - extend 0 */
169        /************************************/
170        /* Op1 : + */
171        l.movhi r21,0x0000
172        l.ori   r21,r21,0x7ead
173
174        /* Op2 : += */
175        l.sfeqi r21,0x7ead
176        l.bnf   _asm_004_sfeq_ko        /* if not set : error */
177        l.nop   1
178
179        /* Op2 : +> */
180        l.sfeqi r21,0x7ebd
181        l.bf    _asm_004_sfeq_ko        /* if     set : error */
182        l.nop   2
183       
184        /* Op2 : +< */
185        l.sfeqi r21,0x7e9d
186        l.bf    _asm_004_sfeq_ko        /* if     set : error */
187        l.nop   3
188
189        /* Op2 : - */
190        l.sfeqi r21,0xdead
191        l.bf    _asm_004_sfeq_ko        /* if     set : error */
192        l.nop   4
193       
194        /* Op1 : - */
195        l.movhi r21,0x0000
196        l.ori   r21,r21,0xdead
197
198        /* Op2 : -= */
199        l.sfeqi r21,0xdead
200        l.bf    _asm_004_sfeq_ko        /* if     set : error */
201        l.nop   5
202
203        /* Op2 : -> */
204        l.sfeqi r21,0xdebd
205        l.bf    _asm_004_sfeq_ko        /* if     set : error */
206        l.nop   6
207       
208        /* Op2 : -< */
209        l.sfeqi r21,0xde9d
210        l.bf    _asm_004_sfeq_ko        /* if     set : error */
211        l.nop   7
212       
213                                       
214_asm_004_sfeq_ok :     
215        l.addi  r11,r0,1
216_asm_004_sfeq_ko :     
217        /* load context */
218        l.lwz   r22,4 (r1)
219        l.lwz   r21,0 (r1)
220        l.jr    r9
221        l.addi  r1,r1,8
Note: See TracBrowser for help on using the repository browser.