addx.s revision 1.1 1 1.1 christos # Hitachi H8 testcase 'addx'
2 1.1 christos # mach(): all
3 1.1 christos # as(h8300): --defsym sim_cpu=0
4 1.1 christos # as(h8300h): --defsym sim_cpu=1
5 1.1 christos # as(h8300s): --defsym sim_cpu=2
6 1.1 christos # as(h8sx): --defsym sim_cpu=3
7 1.1 christos # ld(h8300h): -m h8300helf
8 1.1 christos # ld(h8300s): -m h8300self
9 1.1 christos # ld(h8sx): -m h8300sxelf
10 1.1 christos
11 1.1 christos .include "testutils.inc"
12 1.1 christos
13 1.1 christos # Instructions tested:
14 1.1 christos # addx.b #xx:8, rd8 ; 9 rd8 xxxxxxxx
15 1.1 christos # addx.b #xx:8, @erd ; 7 d erd ???? 9 ???? xxxxxxxx
16 1.1 christos # addx.b #xx:8, @erd- ; 0 1 7 6 6 c erd 1??? 9 ???? xxxxxxxx
17 1.1 christos # addx.b rs8, rd8 ; 0 e rs8 rd8
18 1.1 christos # addx.b rs8, @erd ; 7 d erd ???? 0 e rs8 ????
19 1.1 christos # addx.b rs8, @erd- ; 0 1 7 6 6 c erd 1??? 0 e rs8 ????
20 1.1 christos # addx.b @ers, rd8 ; 7 c ers ???? 0 e ???? rd8
21 1.1 christos # addx.b @ers-, rd8 ; 0 1 7 6 6 c ers 00?? 0 e ???? rd8
22 1.1 christos # addx.b @ers, @erd ; 0 1 7 4 6 8 ers d 0 erd 1 ????
23 1.1 christos # addx.b @ers-, @erd- ; 0 1 7 6 6 c ers d a erd 1 ????
24 1.1 christos #
25 1.1 christos # word ops
26 1.1 christos # long ops
27 1.1 christos
28 1.1 christos .data
29 1.1 christos byte_src: .byte 0x5
30 1.1 christos byte_dest: .byte 0
31 1.1 christos
32 1.1 christos .align 2
33 1.1 christos word_src: .word 0x505
34 1.1 christos word_dest: .word 0
35 1.1 christos
36 1.1 christos .align 4
37 1.1 christos long_src: .long 0x50505
38 1.1 christos long_dest: .long 0
39 1.1 christos
40 1.1 christos
41 1.1 christos start
42 1.1 christos
43 1.1 christos addx_b_imm8_0:
44 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
45 1.1 christos set_ccr_zero
46 1.1 christos
47 1.1 christos ;; addx.b #xx:8,Rd ; Addx with carry initially zero.
48 1.1 christos addx.b #5, r0l ; Immediate 8-bit operand
49 1.1 christos
50 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
51 1.1 christos test_ovf_clear
52 1.1 christos test_zero_clear
53 1.1 christos test_neg_set
54 1.1 christos
55 1.1 christos test_h_gr16 0xa5aa r0 ; add result: a5 + 5
56 1.1 christos .if (sim_cpu) ; non-zero means h8300h, s, or sx
57 1.1 christos test_h_gr32 0xa5a5a5aa er0 ; add result: a5 + 5
58 1.1 christos .endif
59 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
60 1.1 christos test_gr_a5a5 2
61 1.1 christos test_gr_a5a5 3
62 1.1 christos test_gr_a5a5 4
63 1.1 christos test_gr_a5a5 5
64 1.1 christos test_gr_a5a5 6
65 1.1 christos test_gr_a5a5 7
66 1.1 christos
67 1.1 christos addx_b_imm8_1:
68 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
69 1.1 christos set_ccr_zero
70 1.1 christos
71 1.1 christos ;; addx.b #xx:8,Rd ; Addx with carry initially one.
72 1.1 christos set_carry_flag
73 1.1 christos addx.b #5, r0l ; Immediate 8-bit operand
74 1.1 christos
75 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
76 1.1 christos test_ovf_clear
77 1.1 christos test_zero_clear
78 1.1 christos test_neg_set
79 1.1 christos
80 1.1 christos test_h_gr16 0xa5ab r0 ; add result: a5 + 5 + 1
81 1.1 christos .if (sim_cpu) ; non-zero means h8300h, s, or sx
82 1.1 christos test_h_gr32 0xa5a5a5ab er0 ; add result: a5 + 5 + 1
83 1.1 christos .endif
84 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
85 1.1 christos test_gr_a5a5 2
86 1.1 christos test_gr_a5a5 3
87 1.1 christos test_gr_a5a5 4
88 1.1 christos test_gr_a5a5 5
89 1.1 christos test_gr_a5a5 6
90 1.1 christos test_gr_a5a5 7
91 1.1 christos
92 1.1 christos .if (sim_cpu == h8sx)
93 1.1 christos addx_b_imm8_rdind:
94 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
95 1.1 christos set_ccr_zero
96 1.1 christos
97 1.1 christos ;; addx.b #xx:8,@eRd ; Addx to register indirect
98 1.1 christos mov #byte_dest, er0
99 1.1 christos addx.b #5, @er0
100 1.1 christos
101 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
102 1.1 christos test_ovf_clear
103 1.1 christos test_zero_clear
104 1.1 christos test_neg_clear
105 1.1 christos
106 1.1 christos test_h_gr32 byte_dest er0 ; er0 still contains address
107 1.1 christos
108 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
109 1.1 christos test_gr_a5a5 2
110 1.1 christos test_gr_a5a5 3
111 1.1 christos test_gr_a5a5 4
112 1.1 christos test_gr_a5a5 5
113 1.1 christos test_gr_a5a5 6
114 1.1 christos test_gr_a5a5 7
115 1.1 christos
116 1.1 christos ;; Now check the result of the add to memory.
117 1.1 christos cmp.b #5, @byte_dest
118 1.1 christos beq .Lb1
119 1.1 christos fail
120 1.1 christos .Lb1:
121 1.1 christos
122 1.1 christos addx_b_imm8_rdpostdec:
123 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
124 1.1 christos set_ccr_zero
125 1.1 christos
126 1.1 christos ;; addx.b #xx:8,@eRd- ; Addx to register post-decrement
127 1.1 christos mov #byte_dest, er0
128 1.1 christos addx.b #5, @er0-
129 1.1 christos
130 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
131 1.1 christos test_ovf_clear
132 1.1 christos test_zero_clear
133 1.1 christos test_neg_clear
134 1.1 christos
135 1.1 christos test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
136 1.1 christos
137 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
138 1.1 christos test_gr_a5a5 2
139 1.1 christos test_gr_a5a5 3
140 1.1 christos test_gr_a5a5 4
141 1.1 christos test_gr_a5a5 5
142 1.1 christos test_gr_a5a5 6
143 1.1 christos test_gr_a5a5 7
144 1.1 christos
145 1.1 christos ;; Now check the result of the add to memory.
146 1.1 christos cmp.b #10, @byte_dest
147 1.1 christos beq .Lb2
148 1.1 christos fail
149 1.1 christos .Lb2:
150 1.1 christos .endif
151 1.1 christos
152 1.1 christos addx_b_reg8_0:
153 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
154 1.1 christos set_ccr_zero
155 1.1 christos
156 1.1 christos ;; addx.b Rs,Rd ; addx with carry initially zero
157 1.1 christos mov.b #5, r0h
158 1.1 christos addx.b r0h, r0l ; Register operand
159 1.1 christos
160 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
161 1.1 christos test_ovf_clear
162 1.1 christos test_zero_clear
163 1.1 christos test_neg_set
164 1.1 christos
165 1.1 christos test_h_gr16 0x05aa r0 ; add result: a5 + 5
166 1.1 christos .if (sim_cpu) ; non-zero means h8300h, s, or sx
167 1.1 christos test_h_gr32 0xa5a505aa er0 ; add result: a5 + 5
168 1.1 christos .endif
169 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
170 1.1 christos test_gr_a5a5 2
171 1.1 christos test_gr_a5a5 3
172 1.1 christos test_gr_a5a5 4
173 1.1 christos test_gr_a5a5 5
174 1.1 christos test_gr_a5a5 6
175 1.1 christos test_gr_a5a5 7
176 1.1 christos
177 1.1 christos addx_b_reg8_1:
178 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
179 1.1 christos set_ccr_zero
180 1.1 christos
181 1.1 christos ;; addx.b Rs,Rd ; addx with carry initially one
182 1.1 christos mov.b #5, r0h
183 1.1 christos set_carry_flag
184 1.1 christos addx.b r0h, r0l ; Register operand
185 1.1 christos
186 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
187 1.1 christos test_ovf_clear
188 1.1 christos test_zero_clear
189 1.1 christos test_neg_set
190 1.1 christos
191 1.1 christos test_h_gr16 0x05ab r0 ; add result: a5 + 5 + 1
192 1.1 christos .if (sim_cpu) ; non-zero means h8300h, s, or sx
193 1.1 christos test_h_gr32 0xa5a505ab er0 ; add result: a5 + 5 + 1
194 1.1 christos .endif
195 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
196 1.1 christos test_gr_a5a5 2
197 1.1 christos test_gr_a5a5 3
198 1.1 christos test_gr_a5a5 4
199 1.1 christos test_gr_a5a5 5
200 1.1 christos test_gr_a5a5 6
201 1.1 christos test_gr_a5a5 7
202 1.1 christos
203 1.1 christos .if (sim_cpu == h8sx)
204 1.1 christos addx_b_reg8_rdind:
205 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
206 1.1 christos set_ccr_zero
207 1.1 christos
208 1.1 christos ;; addx.b rs8,@eRd ; Addx to register indirect
209 1.1 christos mov #byte_dest, er0
210 1.1 christos mov.b #5, r1l
211 1.1 christos addx.b r1l, @er0
212 1.1 christos
213 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
214 1.1 christos test_ovf_clear
215 1.1 christos test_zero_clear
216 1.1 christos test_neg_clear
217 1.1 christos
218 1.1 christos test_h_gr32 byte_dest er0 ; er0 still contains address
219 1.1 christos test_h_gr32 0xa5a5a505 er1 ; er1 has the test load
220 1.1 christos
221 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
222 1.1 christos test_gr_a5a5 3
223 1.1 christos test_gr_a5a5 4
224 1.1 christos test_gr_a5a5 5
225 1.1 christos test_gr_a5a5 6
226 1.1 christos test_gr_a5a5 7
227 1.1 christos
228 1.1 christos ;; Now check the result of the add to memory.
229 1.1 christos cmp.b #15, @byte_dest
230 1.1 christos beq .Lb3
231 1.1 christos fail
232 1.1 christos .Lb3:
233 1.1 christos
234 1.1 christos addx_b_reg8_rdpostdec:
235 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
236 1.1 christos set_ccr_zero
237 1.1 christos
238 1.1 christos ;; addx.b rs8,@eRd- ; Addx to register post-decrement
239 1.1 christos mov #byte_dest, er0
240 1.1 christos mov.b #5, r1l
241 1.1 christos addx.b r1l, @er0-
242 1.1 christos
243 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
244 1.1 christos test_ovf_clear
245 1.1 christos test_zero_clear
246 1.1 christos test_neg_clear
247 1.1 christos
248 1.1 christos test_h_gr32 byte_dest-1 er0 ; er0 contains address minus one
249 1.1 christos test_h_gr32 0xa5a5a505 er1 ; er1 contains the test load
250 1.1 christos
251 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
252 1.1 christos test_gr_a5a5 3
253 1.1 christos test_gr_a5a5 4
254 1.1 christos test_gr_a5a5 5
255 1.1 christos test_gr_a5a5 6
256 1.1 christos test_gr_a5a5 7
257 1.1 christos
258 1.1 christos ;; Now check the result of the add to memory.
259 1.1 christos cmp.b #20, @byte_dest
260 1.1 christos beq .Lb4
261 1.1 christos fail
262 1.1 christos .Lb4:
263 1.1 christos
264 1.1 christos addx_b_rsind_reg8:
265 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
266 1.1 christos set_ccr_zero
267 1.1 christos
268 1.1 christos ;; addx.b @eRs,rd8 ; Addx from reg indirect to reg
269 1.1 christos mov #byte_src, er0
270 1.1 christos addx.b @er0, r1l
271 1.1 christos
272 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
273 1.1 christos test_ovf_clear
274 1.1 christos test_zero_clear
275 1.1 christos test_neg_set
276 1.1 christos
277 1.1 christos test_h_gr32 byte_src er0 ; er0 still contains address
278 1.1 christos test_h_gr32 0xa5a5a5aa er1 ; er1 contains the sum
279 1.1 christos
280 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
281 1.1 christos test_gr_a5a5 3
282 1.1 christos test_gr_a5a5 4
283 1.1 christos test_gr_a5a5 5
284 1.1 christos test_gr_a5a5 6
285 1.1 christos test_gr_a5a5 7
286 1.1 christos
287 1.1 christos addx_b_rspostdec_reg8:
288 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
289 1.1 christos set_ccr_zero
290 1.1 christos
291 1.1 christos ;; addx.b @eRs-,rd8 ; Addx to register post-decrement
292 1.1 christos mov #byte_src, er0
293 1.1 christos addx.b @er0-, r1l
294 1.1 christos
295 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
296 1.1 christos test_ovf_clear
297 1.1 christos test_zero_clear
298 1.1 christos test_neg_set
299 1.1 christos
300 1.1 christos test_h_gr32 byte_src-1 er0 ; er0 contains address minus one
301 1.1 christos test_h_gr32 0xa5a5a5aa er1 ; er1 contains the sum
302 1.1 christos
303 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
304 1.1 christos test_gr_a5a5 3
305 1.1 christos test_gr_a5a5 4
306 1.1 christos test_gr_a5a5 5
307 1.1 christos test_gr_a5a5 6
308 1.1 christos test_gr_a5a5 7
309 1.1 christos
310 1.1 christos addx_b_rsind_rsind:
311 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
312 1.1 christos set_ccr_zero
313 1.1 christos
314 1.1 christos ;; addx.b @eRs,rd8 ; Addx from reg indirect to reg
315 1.1 christos mov #byte_src, er0
316 1.1 christos mov #byte_dest, er1
317 1.1 christos addx.b @er0, @er1
318 1.1 christos
319 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
320 1.1 christos test_ovf_clear
321 1.1 christos test_zero_clear
322 1.1 christos test_neg_clear
323 1.1 christos
324 1.1 christos test_h_gr32 byte_src er0 ; er0 still contains src address
325 1.1 christos test_h_gr32 byte_dest er1 ; er1 still contains dst address
326 1.1 christos
327 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
328 1.1 christos test_gr_a5a5 3
329 1.1 christos test_gr_a5a5 4
330 1.1 christos test_gr_a5a5 5
331 1.1 christos test_gr_a5a5 6
332 1.1 christos test_gr_a5a5 7
333 1.1 christos ;; Now check the result of the add to memory.
334 1.1 christos cmp.b #25, @byte_dest
335 1.1 christos beq .Lb5
336 1.1 christos fail
337 1.1 christos .Lb5:
338 1.1 christos
339 1.1 christos addx_b_rspostdec_rspostdec:
340 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
341 1.1 christos set_ccr_zero
342 1.1 christos
343 1.1 christos ;; addx.b @eRs-,rd8 ; Addx to register post-decrement
344 1.1 christos mov #byte_src, er0
345 1.1 christos mov #byte_dest, er1
346 1.1 christos addx.b @er0-, @er1-
347 1.1 christos
348 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
349 1.1 christos test_ovf_clear
350 1.1 christos test_zero_clear
351 1.1 christos test_neg_clear
352 1.1 christos
353 1.1 christos test_h_gr32 byte_src-1 er0 ; er0 contains src address minus one
354 1.1 christos test_h_gr32 byte_dest-1 er1 ; er1 contains dst address minus one
355 1.1 christos
356 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
357 1.1 christos test_gr_a5a5 3
358 1.1 christos test_gr_a5a5 4
359 1.1 christos test_gr_a5a5 5
360 1.1 christos test_gr_a5a5 6
361 1.1 christos test_gr_a5a5 7
362 1.1 christos ;; Now check the result of the add to memory.
363 1.1 christos cmp.b #30, @byte_dest
364 1.1 christos beq .Lb6
365 1.1 christos fail
366 1.1 christos .Lb6:
367 1.1 christos
368 1.1 christos addx_w_imm16_0:
369 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
370 1.1 christos set_ccr_zero
371 1.1 christos
372 1.1 christos ;; addx.w #xx:16,Rd ; Addx with carry initially zero.
373 1.1 christos addx.w #0x505, r0 ; Immediate 16-bit operand
374 1.1 christos
375 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
376 1.1 christos test_ovf_clear
377 1.1 christos test_zero_clear
378 1.1 christos test_neg_set
379 1.1 christos
380 1.1 christos test_h_gr16 0xaaaa r0 ; add result: 0xa5a5 + 0x505
381 1.1 christos test_h_gr32 0xa5a5aaaa er0 ; add result: 0xa5a5 + 0x505
382 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
383 1.1 christos test_gr_a5a5 2
384 1.1 christos test_gr_a5a5 3
385 1.1 christos test_gr_a5a5 4
386 1.1 christos test_gr_a5a5 5
387 1.1 christos test_gr_a5a5 6
388 1.1 christos test_gr_a5a5 7
389 1.1 christos
390 1.1 christos addx_w_imm16_1:
391 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
392 1.1 christos set_ccr_zero
393 1.1 christos
394 1.1 christos ;; addx.w #xx:16,Rd ; Addx with carry initially one.
395 1.1 christos set_carry_flag
396 1.1 christos addx.w #0x505, r0 ; Immediate 16-bit operand
397 1.1 christos
398 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
399 1.1 christos test_ovf_clear
400 1.1 christos test_zero_clear
401 1.1 christos test_neg_set
402 1.1 christos
403 1.1 christos test_h_gr16 0xaaab r0 ; add result: 0xa5a5 + 0x505 + 1
404 1.1 christos test_h_gr32 0xa5a5aaab er0 ; add result: 0xa5a5 + 0x505 + 1
405 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
406 1.1 christos test_gr_a5a5 2
407 1.1 christos test_gr_a5a5 3
408 1.1 christos test_gr_a5a5 4
409 1.1 christos test_gr_a5a5 5
410 1.1 christos test_gr_a5a5 6
411 1.1 christos test_gr_a5a5 7
412 1.1 christos
413 1.1 christos addx_w_imm16_rdind:
414 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
415 1.1 christos set_ccr_zero
416 1.1 christos
417 1.1 christos ;; addx.w #xx:16,@eRd ; Addx to register indirect
418 1.1 christos mov #word_dest, er0
419 1.1 christos addx.w #0x505, @er0
420 1.1 christos
421 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
422 1.1 christos test_ovf_clear
423 1.1 christos test_zero_clear
424 1.1 christos test_neg_clear
425 1.1 christos
426 1.1 christos test_h_gr32 word_dest er0 ; er0 still contains address
427 1.1 christos
428 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
429 1.1 christos test_gr_a5a5 2
430 1.1 christos test_gr_a5a5 3
431 1.1 christos test_gr_a5a5 4
432 1.1 christos test_gr_a5a5 5
433 1.1 christos test_gr_a5a5 6
434 1.1 christos test_gr_a5a5 7
435 1.1 christos
436 1.1 christos ;; Now check the result of the add to memory.
437 1.1 christos cmp.w #0x505, @word_dest
438 1.1 christos beq .Lw1
439 1.1 christos fail
440 1.1 christos .Lw1:
441 1.1 christos
442 1.1 christos addx_w_imm16_rdpostdec:
443 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
444 1.1 christos set_ccr_zero
445 1.1 christos
446 1.1 christos ;; addx.w #xx:16,@eRd- ; Addx to register post-decrement
447 1.1 christos mov #word_dest, er0
448 1.1 christos addx.w #0x505, @er0-
449 1.1 christos
450 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
451 1.1 christos test_ovf_clear
452 1.1 christos test_zero_clear
453 1.1 christos test_neg_clear
454 1.1 christos
455 1.1 christos test_h_gr32 word_dest-2 er0 ; er0 contains address minus one
456 1.1 christos
457 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
458 1.1 christos test_gr_a5a5 2
459 1.1 christos test_gr_a5a5 3
460 1.1 christos test_gr_a5a5 4
461 1.1 christos test_gr_a5a5 5
462 1.1 christos test_gr_a5a5 6
463 1.1 christos test_gr_a5a5 7
464 1.1 christos
465 1.1 christos ;; Now check the result of the add to memory.
466 1.1 christos cmp.w #0xa0a, @word_dest
467 1.1 christos beq .Lw2
468 1.1 christos fail
469 1.1 christos .Lw2:
470 1.1 christos
471 1.1 christos addx_w_reg16_0:
472 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
473 1.1 christos set_ccr_zero
474 1.1 christos
475 1.1 christos ;; addx.w Rs,Rd ; addx with carry initially zero
476 1.1 christos mov.w #0x505, e0
477 1.1 christos addx.w e0, r0 ; Register operand
478 1.1 christos
479 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
480 1.1 christos test_ovf_clear
481 1.1 christos test_zero_clear
482 1.1 christos test_neg_set
483 1.1 christos
484 1.1 christos test_h_gr32 0x0505aaaa er0 ; add result:
485 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
486 1.1 christos test_gr_a5a5 2
487 1.1 christos test_gr_a5a5 3
488 1.1 christos test_gr_a5a5 4
489 1.1 christos test_gr_a5a5 5
490 1.1 christos test_gr_a5a5 6
491 1.1 christos test_gr_a5a5 7
492 1.1 christos
493 1.1 christos addx_w_reg16_1:
494 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
495 1.1 christos set_ccr_zero
496 1.1 christos
497 1.1 christos ;; addx.w Rs,Rd ; addx with carry initially one
498 1.1 christos mov.w #0x505, e0
499 1.1 christos set_carry_flag
500 1.1 christos addx.w e0, r0 ; Register operand
501 1.1 christos
502 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
503 1.1 christos test_ovf_clear
504 1.1 christos test_zero_clear
505 1.1 christos test_neg_set
506 1.1 christos
507 1.1 christos test_h_gr32 0x0505aaab er0 ; add result:
508 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
509 1.1 christos test_gr_a5a5 2
510 1.1 christos test_gr_a5a5 3
511 1.1 christos test_gr_a5a5 4
512 1.1 christos test_gr_a5a5 5
513 1.1 christos test_gr_a5a5 6
514 1.1 christos test_gr_a5a5 7
515 1.1 christos
516 1.1 christos addx_w_reg16_rdind:
517 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
518 1.1 christos set_ccr_zero
519 1.1 christos
520 1.1 christos ;; addx.w rs8,@eRd ; Addx to register indirect
521 1.1 christos mov #word_dest, er0
522 1.1 christos mov.w #0x505, r1
523 1.1 christos addx.w r1, @er0
524 1.1 christos
525 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
526 1.1 christos test_ovf_clear
527 1.1 christos test_zero_clear
528 1.1 christos test_neg_clear
529 1.1 christos
530 1.1 christos test_h_gr32 word_dest er0 ; er0 still contains address
531 1.1 christos test_h_gr32 0xa5a50505 er1 ; er1 has the test load
532 1.1 christos
533 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
534 1.1 christos test_gr_a5a5 3
535 1.1 christos test_gr_a5a5 4
536 1.1 christos test_gr_a5a5 5
537 1.1 christos test_gr_a5a5 6
538 1.1 christos test_gr_a5a5 7
539 1.1 christos
540 1.1 christos ;; Now check the result of the add to memory.
541 1.1 christos cmp.w #0xf0f, @word_dest
542 1.1 christos beq .Lw3
543 1.1 christos fail
544 1.1 christos .Lw3:
545 1.1 christos
546 1.1 christos addx_w_reg16_rdpostdec:
547 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
548 1.1 christos set_ccr_zero
549 1.1 christos
550 1.1 christos ;; addx.w rs8,@eRd- ; Addx to register post-decrement
551 1.1 christos mov #word_dest, er0
552 1.1 christos mov.w #0x505, r1
553 1.1 christos addx.w r1, @er0-
554 1.1 christos
555 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
556 1.1 christos test_ovf_clear
557 1.1 christos test_zero_clear
558 1.1 christos test_neg_clear
559 1.1 christos
560 1.1 christos test_h_gr32 word_dest-2 er0 ; er0 contains address minus one
561 1.1 christos test_h_gr32 0xa5a50505 er1 ; er1 contains the test load
562 1.1 christos
563 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
564 1.1 christos test_gr_a5a5 3
565 1.1 christos test_gr_a5a5 4
566 1.1 christos test_gr_a5a5 5
567 1.1 christos test_gr_a5a5 6
568 1.1 christos test_gr_a5a5 7
569 1.1 christos
570 1.1 christos ;; Now check the result of the add to memory.
571 1.1 christos cmp.w #0x1414, @word_dest
572 1.1 christos beq .Lw4
573 1.1 christos fail
574 1.1 christos .Lw4:
575 1.1 christos
576 1.1 christos addx_w_rsind_reg16:
577 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
578 1.1 christos set_ccr_zero
579 1.1 christos
580 1.1 christos ;; addx.w @eRs,rd8 ; Addx from reg indirect to reg
581 1.1 christos mov #word_src, er0
582 1.1 christos addx.w @er0, r1
583 1.1 christos
584 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
585 1.1 christos test_ovf_clear
586 1.1 christos test_zero_clear
587 1.1 christos test_neg_set
588 1.1 christos
589 1.1 christos test_h_gr32 word_src er0 ; er0 still contains address
590 1.1 christos test_h_gr32 0xa5a5aaaa er1 ; er1 contains the sum
591 1.1 christos
592 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
593 1.1 christos test_gr_a5a5 3
594 1.1 christos test_gr_a5a5 4
595 1.1 christos test_gr_a5a5 5
596 1.1 christos test_gr_a5a5 6
597 1.1 christos test_gr_a5a5 7
598 1.1 christos
599 1.1 christos addx_w_rspostdec_reg16:
600 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
601 1.1 christos set_ccr_zero
602 1.1 christos
603 1.1 christos ;; addx.w @eRs-,rd8 ; Addx to register post-decrement
604 1.1 christos mov #word_src, er0
605 1.1 christos addx.w @er0-, r1
606 1.1 christos
607 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
608 1.1 christos test_ovf_clear
609 1.1 christos test_zero_clear
610 1.1 christos test_neg_set
611 1.1 christos
612 1.1 christos test_h_gr32 word_src-2 er0 ; er0 contains address minus one
613 1.1 christos test_h_gr32 0xa5a5aaaa er1 ; er1 contains the sum
614 1.1 christos
615 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
616 1.1 christos test_gr_a5a5 3
617 1.1 christos test_gr_a5a5 4
618 1.1 christos test_gr_a5a5 5
619 1.1 christos test_gr_a5a5 6
620 1.1 christos test_gr_a5a5 7
621 1.1 christos
622 1.1 christos addx_w_rsind_rdind:
623 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
624 1.1 christos set_ccr_zero
625 1.1 christos
626 1.1 christos ;; addx.w @eRs,rd8 ; Addx from reg indirect to reg
627 1.1 christos mov #word_src, er0
628 1.1 christos mov #word_dest, er1
629 1.1 christos addx.w @er0, @er1
630 1.1 christos
631 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
632 1.1 christos test_ovf_clear
633 1.1 christos test_zero_clear
634 1.1 christos test_neg_clear
635 1.1 christos
636 1.1 christos test_h_gr32 word_src er0 ; er0 still contains src address
637 1.1 christos test_h_gr32 word_dest er1 ; er1 still contains dst address
638 1.1 christos
639 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
640 1.1 christos test_gr_a5a5 3
641 1.1 christos test_gr_a5a5 4
642 1.1 christos test_gr_a5a5 5
643 1.1 christos test_gr_a5a5 6
644 1.1 christos test_gr_a5a5 7
645 1.1 christos ;; Now check the result of the add to memory.
646 1.1 christos cmp.w #0x1919, @word_dest
647 1.1 christos beq .Lw5
648 1.1 christos fail
649 1.1 christos .Lw5:
650 1.1 christos
651 1.1 christos addx_w_rspostdec_rdpostdec:
652 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
653 1.1 christos set_ccr_zero
654 1.1 christos
655 1.1 christos ;; addx.w @eRs-,rd8 ; Addx to register post-decrement
656 1.1 christos mov #word_src, er0
657 1.1 christos mov #word_dest, er1
658 1.1 christos addx.w @er0-, @er1-
659 1.1 christos
660 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
661 1.1 christos test_ovf_clear
662 1.1 christos test_zero_clear
663 1.1 christos test_neg_clear
664 1.1 christos
665 1.1 christos test_h_gr32 word_src-2 er0 ; er0 contains src address minus one
666 1.1 christos test_h_gr32 word_dest-2 er1 ; er1 contains dst address minus one
667 1.1 christos
668 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
669 1.1 christos test_gr_a5a5 3
670 1.1 christos test_gr_a5a5 4
671 1.1 christos test_gr_a5a5 5
672 1.1 christos test_gr_a5a5 6
673 1.1 christos test_gr_a5a5 7
674 1.1 christos ;; Now check the result of the add to memory.
675 1.1 christos cmp.w #0x1e1e, @word_dest
676 1.1 christos beq .Lw6
677 1.1 christos fail
678 1.1 christos .Lw6:
679 1.1 christos
680 1.1 christos addx_l_imm32_0:
681 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
682 1.1 christos set_ccr_zero
683 1.1 christos
684 1.1 christos ;; addx.l #xx:32,Rd ; Addx with carry initially zero.
685 1.1 christos addx.l #0x50505, er0 ; Immediate 32-bit operand
686 1.1 christos
687 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
688 1.1 christos test_ovf_clear
689 1.1 christos test_zero_clear
690 1.1 christos test_neg_set
691 1.1 christos
692 1.1 christos test_h_gr32 0xa5aaaaaa er0 ; add result:
693 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
694 1.1 christos test_gr_a5a5 2
695 1.1 christos test_gr_a5a5 3
696 1.1 christos test_gr_a5a5 4
697 1.1 christos test_gr_a5a5 5
698 1.1 christos test_gr_a5a5 6
699 1.1 christos test_gr_a5a5 7
700 1.1 christos
701 1.1 christos addx_l_imm32_1:
702 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
703 1.1 christos set_ccr_zero
704 1.1 christos
705 1.1 christos ;; addx.l #xx:32,Rd ; Addx with carry initially one.
706 1.1 christos set_carry_flag
707 1.1 christos addx.l #0x50505, er0 ; Immediate 32-bit operand
708 1.1 christos
709 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
710 1.1 christos test_ovf_clear
711 1.1 christos test_zero_clear
712 1.1 christos test_neg_set
713 1.1 christos
714 1.1 christos test_h_gr32 0xa5aaaaab er0 ; add result:
715 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
716 1.1 christos test_gr_a5a5 2
717 1.1 christos test_gr_a5a5 3
718 1.1 christos test_gr_a5a5 4
719 1.1 christos test_gr_a5a5 5
720 1.1 christos test_gr_a5a5 6
721 1.1 christos test_gr_a5a5 7
722 1.1 christos
723 1.1 christos addx_l_imm32_rdind:
724 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
725 1.1 christos set_ccr_zero
726 1.1 christos
727 1.1 christos ;; addx.l #xx:32,@eRd ; Addx to register indirect
728 1.1 christos mov #long_dest, er0
729 1.1 christos addx.l #0x50505, @er0
730 1.1 christos
731 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
732 1.1 christos test_ovf_clear
733 1.1 christos test_zero_clear
734 1.1 christos test_neg_clear
735 1.1 christos
736 1.1 christos test_h_gr32 long_dest er0 ; er0 still contains address
737 1.1 christos
738 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
739 1.1 christos test_gr_a5a5 2
740 1.1 christos test_gr_a5a5 3
741 1.1 christos test_gr_a5a5 4
742 1.1 christos test_gr_a5a5 5
743 1.1 christos test_gr_a5a5 6
744 1.1 christos test_gr_a5a5 7
745 1.1 christos
746 1.1 christos ;; Now check the result of the add to memory.
747 1.1 christos cmp.l #0x50505, @long_dest
748 1.1 christos beq .Ll1
749 1.1 christos fail
750 1.1 christos .Ll1:
751 1.1 christos
752 1.1 christos addx_l_imm32_rdpostdec:
753 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
754 1.1 christos set_ccr_zero
755 1.1 christos
756 1.1 christos ;; addx.l #xx:32,@eRd- ; Addx to register post-decrement
757 1.1 christos mov #long_dest, er0
758 1.1 christos addx.l #0x50505, @er0-
759 1.1 christos
760 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
761 1.1 christos test_ovf_clear
762 1.1 christos test_zero_clear
763 1.1 christos test_neg_clear
764 1.1 christos
765 1.1 christos test_h_gr32 long_dest-4 er0 ; er0 contains address minus one
766 1.1 christos
767 1.1 christos test_gr_a5a5 1 ; Make sure other general regs not disturbed
768 1.1 christos test_gr_a5a5 2
769 1.1 christos test_gr_a5a5 3
770 1.1 christos test_gr_a5a5 4
771 1.1 christos test_gr_a5a5 5
772 1.1 christos test_gr_a5a5 6
773 1.1 christos test_gr_a5a5 7
774 1.1 christos
775 1.1 christos ;; Now check the result of the add to memory.
776 1.1 christos cmp.l #0xa0a0a, @long_dest
777 1.1 christos beq .Ll2
778 1.1 christos fail
779 1.1 christos .Ll2:
780 1.1 christos
781 1.1 christos addx_l_reg32_0:
782 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
783 1.1 christos set_ccr_zero
784 1.1 christos
785 1.1 christos ;; addx.l Rs,Rd ; addx with carry initially zero
786 1.1 christos mov.l #0x50505, er0
787 1.1 christos addx.l er0, er1 ; Register operand
788 1.1 christos
789 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
790 1.1 christos test_ovf_clear
791 1.1 christos test_zero_clear
792 1.1 christos test_neg_set
793 1.1 christos
794 1.1 christos test_h_gr32 0x50505 er0 ; add load
795 1.1 christos test_h_gr32 0xa5aaaaaa er1 ; add result:
796 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
797 1.1 christos test_gr_a5a5 3
798 1.1 christos test_gr_a5a5 4
799 1.1 christos test_gr_a5a5 5
800 1.1 christos test_gr_a5a5 6
801 1.1 christos test_gr_a5a5 7
802 1.1 christos
803 1.1 christos addx_l_reg32_1:
804 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
805 1.1 christos set_ccr_zero
806 1.1 christos
807 1.1 christos ;; addx.l Rs,Rd ; addx with carry initially one
808 1.1 christos mov.l #0x50505, er0
809 1.1 christos set_carry_flag
810 1.1 christos addx.l er0, er1 ; Register operand
811 1.1 christos
812 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
813 1.1 christos test_ovf_clear
814 1.1 christos test_zero_clear
815 1.1 christos test_neg_set
816 1.1 christos
817 1.1 christos test_h_gr32 0x50505 er0 ; add result:
818 1.1 christos test_h_gr32 0xa5aaaaab er1 ; add result:
819 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
820 1.1 christos test_gr_a5a5 3
821 1.1 christos test_gr_a5a5 4
822 1.1 christos test_gr_a5a5 5
823 1.1 christos test_gr_a5a5 6
824 1.1 christos test_gr_a5a5 7
825 1.1 christos
826 1.1 christos addx_l_reg32_rdind:
827 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
828 1.1 christos set_ccr_zero
829 1.1 christos
830 1.1 christos ;; addx.l rs8,@eRd ; Addx to register indirect
831 1.1 christos mov #long_dest, er0
832 1.1 christos mov.l #0x50505, er1
833 1.1 christos addx.l er1, @er0
834 1.1 christos
835 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
836 1.1 christos test_ovf_clear
837 1.1 christos test_zero_clear
838 1.1 christos test_neg_clear
839 1.1 christos
840 1.1 christos test_h_gr32 long_dest er0 ; er0 still contains address
841 1.1 christos test_h_gr32 0x50505 er1 ; er1 has the test load
842 1.1 christos
843 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
844 1.1 christos test_gr_a5a5 3
845 1.1 christos test_gr_a5a5 4
846 1.1 christos test_gr_a5a5 5
847 1.1 christos test_gr_a5a5 6
848 1.1 christos test_gr_a5a5 7
849 1.1 christos
850 1.1 christos ;; Now check the result of the add to memory.
851 1.1 christos cmp.l #0xf0f0f, @long_dest
852 1.1 christos beq .Ll3
853 1.1 christos fail
854 1.1 christos .Ll3:
855 1.1 christos
856 1.1 christos addx_l_reg32_rdpostdec:
857 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
858 1.1 christos set_ccr_zero
859 1.1 christos
860 1.1 christos ;; addx.l rs8,@eRd- ; Addx to register post-decrement
861 1.1 christos mov #long_dest, er0
862 1.1 christos mov.l #0x50505, er1
863 1.1 christos addx.l er1, @er0-
864 1.1 christos
865 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
866 1.1 christos test_ovf_clear
867 1.1 christos test_zero_clear
868 1.1 christos test_neg_clear
869 1.1 christos
870 1.1 christos test_h_gr32 long_dest-4 er0 ; er0 contains address minus one
871 1.1 christos test_h_gr32 0x50505 er1 ; er1 contains the test load
872 1.1 christos
873 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
874 1.1 christos test_gr_a5a5 3
875 1.1 christos test_gr_a5a5 4
876 1.1 christos test_gr_a5a5 5
877 1.1 christos test_gr_a5a5 6
878 1.1 christos test_gr_a5a5 7
879 1.1 christos
880 1.1 christos ;; Now check the result of the add to memory.
881 1.1 christos cmp.l #0x141414, @long_dest
882 1.1 christos beq .Ll4
883 1.1 christos fail
884 1.1 christos .Ll4:
885 1.1 christos
886 1.1 christos addx_l_rsind_reg32:
887 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
888 1.1 christos set_ccr_zero
889 1.1 christos
890 1.1 christos ;; addx.l @eRs,rd8 ; Addx from reg indirect to reg
891 1.1 christos mov #long_src, er0
892 1.1 christos addx.l @er0, er1
893 1.1 christos
894 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
895 1.1 christos test_ovf_clear
896 1.1 christos test_zero_clear
897 1.1 christos test_neg_set
898 1.1 christos
899 1.1 christos test_h_gr32 long_src er0 ; er0 still contains address
900 1.1 christos test_h_gr32 0xa5aaaaaa er1 ; er1 contains the sum
901 1.1 christos
902 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
903 1.1 christos test_gr_a5a5 3
904 1.1 christos test_gr_a5a5 4
905 1.1 christos test_gr_a5a5 5
906 1.1 christos test_gr_a5a5 6
907 1.1 christos test_gr_a5a5 7
908 1.1 christos
909 1.1 christos addx_l_rspostdec_reg32:
910 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
911 1.1 christos set_ccr_zero
912 1.1 christos
913 1.1 christos ;; addx.l @eRs-,rd8 ; Addx to register post-decrement
914 1.1 christos mov #long_src, er0
915 1.1 christos addx.l @er0-, er1
916 1.1 christos
917 1.1 christos test_carry_clear ; H=0 N=1 Z=0 V=0 C=0
918 1.1 christos test_ovf_clear
919 1.1 christos test_zero_clear
920 1.1 christos test_neg_set
921 1.1 christos
922 1.1 christos test_h_gr32 long_src-4 er0 ; er0 contains address minus one
923 1.1 christos test_h_gr32 0xa5aaaaaa er1 ; er1 contains the sum
924 1.1 christos
925 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
926 1.1 christos test_gr_a5a5 3
927 1.1 christos test_gr_a5a5 4
928 1.1 christos test_gr_a5a5 5
929 1.1 christos test_gr_a5a5 6
930 1.1 christos test_gr_a5a5 7
931 1.1 christos
932 1.1 christos addx_l_rsind_rdind:
933 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
934 1.1 christos set_ccr_zero
935 1.1 christos
936 1.1 christos ;; addx.l @eRs,rd8 ; Addx from reg indirect to reg
937 1.1 christos mov #long_src, er0
938 1.1 christos mov #long_dest, er1
939 1.1 christos addx.l @er0, @er1
940 1.1 christos
941 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
942 1.1 christos test_ovf_clear
943 1.1 christos test_zero_clear
944 1.1 christos test_neg_clear
945 1.1 christos
946 1.1 christos test_h_gr32 long_src er0 ; er0 still contains src address
947 1.1 christos test_h_gr32 long_dest er1 ; er1 still contains dst address
948 1.1 christos
949 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
950 1.1 christos test_gr_a5a5 3
951 1.1 christos test_gr_a5a5 4
952 1.1 christos test_gr_a5a5 5
953 1.1 christos test_gr_a5a5 6
954 1.1 christos test_gr_a5a5 7
955 1.1 christos ;; Now check the result of the add to memory.
956 1.1 christos cmp.l #0x191919, @long_dest
957 1.1 christos beq .Ll5
958 1.1 christos fail
959 1.1 christos .Ll5:
960 1.1 christos
961 1.1 christos addx_l_rspostdec_rdpostdec:
962 1.1 christos set_grs_a5a5 ; Fill all general regs with a fixed pattern
963 1.1 christos set_ccr_zero
964 1.1 christos
965 1.1 christos ;; addx.l @eRs-,rd8 ; Addx to register post-decrement
966 1.1 christos mov #long_src, er0
967 1.1 christos mov #long_dest, er1
968 1.1 christos addx.l @er0-, @er1-
969 1.1 christos
970 1.1 christos test_carry_clear ; H=0 N=0 Z=0 V=0 C=0
971 1.1 christos test_ovf_clear
972 1.1 christos test_zero_clear
973 1.1 christos test_neg_clear
974 1.1 christos
975 1.1 christos test_h_gr32 long_src-4 er0 ; er0 contains src address minus one
976 1.1 christos test_h_gr32 long_dest-4 er1 ; er1 contains dst address minus one
977 1.1 christos
978 1.1 christos test_gr_a5a5 2 ; Make sure other general regs not disturbed
979 1.1 christos test_gr_a5a5 3
980 1.1 christos test_gr_a5a5 4
981 1.1 christos test_gr_a5a5 5
982 1.1 christos test_gr_a5a5 6
983 1.1 christos test_gr_a5a5 7
984 1.1 christos ;; Now check the result of the add to memory.
985 1.1 christos cmp.l #0x1e1e1e, @long_dest
986 1.1 christos beq .Ll6
987 1.1 christos fail
988 1.1 christos .Ll6:
989 1.1 christos .endif
990 1.1 christos pass
991 1.1 christos
992 1.1 christos exit 0
993