filename | test/sh4/addc.s |
changeset | 231:a9e61a96a885 |
prev | 226:0eeeb25447d3 |
author | nkeynes |
date | Wed Oct 31 09:05:44 2007 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Add convenience MMIO_ADDR macro |
view | annotate | diff | log | raw |
1 .section .text
2 .include "sh4/inc.s"
4 .global _test_addc
5 _test_addc:
6 start_test
8 test_addc_1: ! test adding 0+0 = 0
9 clc
10 add #1, r12
11 xor r0,r0
12 xor r1,r1
13 xor r2,r2
14 addc r0,r1
15 stc sr, r4
16 cmp/eq r1, r2
17 bt test_addc_1_b
18 fail test_addc_str_k
19 bra test_addc_2
20 nop
21 test_addc_1_b:
22 ldc r4, sr
23 assert_t_clear test_addc_str_k
25 test_addc_2: ! test 0+ constant 1 = 1
26 add #1, r12
27 clc
28 xor r0, r0
29 xor r1, r1
30 add #1, r0
31 addc r0, r1
32 stc sr, r4
33 mov.l test_addc_2_result, r2
34 cmp/eq r1, r2
35 bt test_addc_2_b
36 fail test_addc_str_k
37 bra test_addc_3
38 nop
39 test_addc_2_b:
40 ldc r4, sr
41 assert_t_clear test_addc_str_k
42 bra test_addc_3
43 nop
45 .align 4
46 test_addc_2_result:
47 .long 0x00000001
49 test_addc_3: ! test 0 + constant -1 = -1
50 add #1, r12
51 clc
52 xor r0, r0
53 xor r1, r1
54 add #-1, r0
55 addc r0, r1
56 mov.l test_addc_3_result, r2
57 stc sr, r3
58 cmp/eq r1, r2
59 bt test_addc_3_b
60 fail test_addc_str_k
61 bra test_addc_4
62 nop
63 test_addc_3_b:
64 ldc r3, sr
65 assert_t_clear test_addc_str_k
66 bra test_addc_4
67 nop
69 .align 4
70 test_addc_3_result:
71 .long 0xFFFFFFFF
73 test_addc_4: ! test a+b = c w/ carry set
74 add #1, r12
75 clc
76 mov.l test_addc_4_op1, r4
77 mov.l test_addc_4_op2, r5
78 mov.l test_addc_4_result, r0
79 addc r4, r5
80 stc sr, r1
81 cmp/eq r5, r0
82 bt test_addc_4_b
83 fail test_addc_str_k
84 bra test_addc_5
85 nop
86 test_addc_4_b:
87 ldc r1, sr
88 assert_t_set test_addc_str_k
89 bra test_addc_5
90 nop
92 .align 4
93 test_addc_4_op1:
94 .long 0x98765432
95 test_addc_4_op2:
96 .long 0xA1234567
97 test_addc_4_result:
98 .long 0x39999999
100 test_addc_5: ! test carry used and cleared
101 add #1, r12
102 mov.l test_addc_5_op1, r4
103 mov.l test_addc_5_op2, r5
104 stc sr, r6
105 xor r0,r0
106 add #1, r0
107 or r0,r6
108 ldc r6, sr
109 addc r5,r4
110 stc sr, r1
111 mov.l test_addc_5_result, r7
112 cmp/eq r7, r4
113 bt test_addc_5_b
114 fail test_addc_str_k
115 bra test_addc_6
116 nop
117 test_addc_5_b:
118 ldc r1, sr
119 assert_t_clear test_addc_str_k
120 bra test_addc_6
121 nop
123 test_addc_5_op1:
124 .long 0x11111111
125 test_addc_5_op2:
126 .long 0x1000FFFF
127 test_addc_5_result:
128 .long 0x21121111
130 test_addc_6: ! test carry set on full rollover (ie n + 0xFFFFFFFF + carry )
131 add #1, r12
132 setc
133 mov.l test_addc_6_op1, r5
134 mov.l test_addc_6_op2, r6
135 addc r5, r6
136 stc sr, r1
137 cmp/eq r5, r6
138 bt test_addc_6_b
139 fail test_addc_str_k
140 bra test_addc_7
141 nop
142 test_addc_6_b:
143 ldc r1, sr
144 assert_t_set test_addc_str_k
145 bra test_addc_7
146 nop
148 test_addc_6_op1:
149 .long 0x12346789
150 test_addc_6_op2:
151 .long 0xFFFFFFFF
154 test_addc_7:
155 add #1, r12
156 clc
157 mov.l test_addc_7_op1, r5
158 mov.l test_addc_7_op2, r6
159 addc r5, r6
160 stc sr, r1
161 mov.l test_addc_7_result, r2
162 cmp/eq r2, r6
163 bt test_addc_7_b
164 fail test_addc_str_k
165 bra test_addc_8
166 nop
167 test_addc_7_b:
168 ldc r1, sr
169 assert_t_set test_addc_str_k
170 bra test_addc_8
171 nop
173 test_addc_7_op1:
174 .long 0x98765432
175 test_addc_7_op2:
176 .long 0xFFFFFFFF
177 test_addc_7_result:
178 .long 0x98765431
180 test_addc_8:
181 add #1, r12
182 setc
183 xor r0,r0
184 addc r0, r0
185 stc sr, r3
186 mov.l test_addc_8_result, r1
187 cmp/eq r0, r1
188 bt test_addc_8_b
189 fail test_addc_str_k
190 bra test_addc_9
191 nop
192 test_addc_8_b:
193 ldc r3, sr
194 assert_t_clear test_addc_str_k
195 bra test_addc_9
196 nop
198 test_addc_8_result:
199 .long 0x00000001
201 test_addc_9:
202 test_addc_end:
203 end_test test_addc_str_k
205 test_addc_str:
206 .string "ADDC"
208 .align 4
209 test_addc_str_k:
210 .long test_addc_str
.