fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / op / integer.t
blob7dcc073b687d21589e456a218cd32d58d8cff1bb
1 #!./parrot
2 # Copyright (C) 2001-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/op/integer.t - Integer Registers
9 =head1 SYNOPSIS
11     % prove t/op/integer.t
13 =head1 DESCRIPTION
15 Tests the use of Parrot integer registers.
17 =cut
19 .const int TESTS = 153
21 .sub 'test' :main
22     .include 'test_more.pir'
24     plan(TESTS)
25     test_set_ic()
26     test_set()
27     test_add_i_i_i()
28     test_add_i_i()
29     test_abs()
30     test_sub()
31     test_mul()
32     test_div()
33     test_fdiv()
34     test_mod()
35     mod_negative_zero_rest()
36     test_eq()
37     test_ne()
38     test_lt()
39     test_le()
40     test_gt()
41     test_ge()
42     test_not()
43     test_and()
44     test_or()
45     test_xor()
46     test_inc()
47     test_dec()
48     test_sub_i_i()
49     test_set_n()
50     test_neg()
51     test_negate_max_integer()
52     test_mul_i_i()
53     test_null()
54     test_div_i_i_by_zero()
55     test_div_i_ic_by_zero()
56     test_div_i_i_i_by_zero()
57     test_div_i_ic_i_by_zero()
58     test_div_i_i_ic_by_zero()
59     test_fdiv_i_i_by_zero()
60     test_fdiv_i_ic_by_zero()
61     test_fdiv_i_i_i_by_zero()
62     test_fdiv_i_ic_i_by_zero()
63     test_fdiv_i_i_ic_by_zero()
64     test_mod_i_i_i_by_zero()
65     test_mod_i_ic_i_by_zero()
66     test_mod_i_i_ic_by_zero()
67 .end
69 .sub 'test_set_ic'
70     $I0 = 0
71     $I1 = 1
72     $I2 = 2
73     $I3 = 3
74     $I4 = 4
75     $I5 = 5
76     $I6 = 6
77     $I7 = 7
78     $I8 = 8
79     $I9 = 9
80     $I10 = 10
81     $I11 = 11
82     $I12 = 12
83     $I13 = 13
84     $I14 = 14
85     $I15 = 15
86     $I16 = 16
87     $I17 = 17
88     $I18 = 18
89     $I19 = 19
90     $I20 = 20
91     $I21 = 21
92     $I22 = 22
93     $I23 = 23
94     $I24 = 24
95     $I25 = 25
96     $I26 = 26
97     $I27 = 27
98     $I28 = 28
99     $I29 = 29
100     $I30 = 30
101     $I31 = 31
103     $S0 = $I0
104     is($S0, "0", "set_i_ic with 0")
105     $S0 = $I1
106     is($S0, "1", "set_i_ic with 1")
107     $S0 = $I2
108     is($S0, "2", "set_i_ic with 2")
109     $S0 = $I3
110     is($S0, "3", "set_i_ic with 3")
111     $S0 = $I4
112     is($S0, "4", "set_i_ic with 4")
113     $S0 = $I5
114     is($S0, "5", "set_i_ic with 5")
115     $S0 = $I6
116     is($S0, "6", "set_i_ic with 6")
117     $S0 = $I7
118     is($S0, "7", "set_i_ic with 7")
119     $S0 = $I8
120     is($S0, "8", "set_i_ic with 8")
121     $S0 = $I9
122     is($S0, "9", "set_i_ic with 9")
123     $S0 = $I10
124     is($S0, "10", "set_i_ic with 10")
125     $S0 = $I11
126     is($S0, "11", "set_i_ic with 11")
127     $S0 = $I12
128     is($S0, "12", "set_i_ic with 12")
129     $S0 = $I13
130     is($S0, "13", "set_i_ic with 13")
131     $S0 = $I14
132     is($S0, "14", "set_i_ic with 14")
133     $S0 = $I15
134     is($S0, "15", "set_i_ic with 15")
135     $S0 = $I16
136     is($S0, "16", "set_i_ic with 16")
137     $S0 = $I17
138     is($S0, "17", "set_i_ic with 17")
139     $S0 = $I18
140     is($S0, "18", "set_i_ic with 18")
141     $S0 = $I19
142     is($S0, "19", "set_i_ic with 19")
143     $S0 = $I20
144     is($S0, "20", "set_i_ic with 20")
145     $S0 = $I21
146     is($S0, "21", "set_i_ic with 21")
147     $S0 = $I22
148     is($S0, "22", "set_i_ic with 22")
149     $S0 = $I23
150     is($S0, "23", "set_i_ic with 23")
151     $S0 = $I24
152     is($S0, "24", "set_i_ic with 24")
153     $S0 = $I25
154     is($S0, "25", "set_i_ic with 25")
155     $S0 = $I26
156     is($S0, "26", "set_i_ic with 26")
157     $S0 = $I27
158     is($S0, "27", "set_i_ic with 27")
159     $S0 = $I28
160     is($S0, "28", "set_i_ic with 28")
161     $S0 = $I29
162     is($S0, "29", "set_i_ic with 29")
163     $S0 = $I30
164     is($S0, "30", "set_i_ic with 30")
165     $S0 = $I31
166     is($S0, "31", "set_i_ic with 31")
167 .end
169 .sub 'test_set'
170     $I0 = 42
171     $I1 = $I0
172     $S0 = $I1
173     is($S0, '42', 'set_i')
174 .end
176 .sub 'test_add_i_i_i'
177     $I0 = 0x11223344
178     $I1 = $I0 + $I0
179     is($I1, 574908040, 'add_i_i - first')
181     $I2 = $I0 + $I1
182     is($I2, 862362060, 'add_i_i - second')
184     $I2 = $I2 + $I2
185     is($I2, 1724724120, 'add_i_i - third')
186 .end
188 .sub 'test_add_i_i'
189     $I0 = 0
190     $I1 = 2
191     $I2 = -2
193     add $I0, $I1
194     is($I0, 2, 'add_i_i - zero is neutral')
196     add $I0, $I2
197     is($I0, 0, 'add_i_i - inverse')
199     $I0 = 0
200     add $I0, 5
201     is($I0, 5, 'add_i_ic - zero is neutral')
203     add $I0, -10
204     is($I0, -5, 'add_i_ic')
205 .end
207 .sub 'test_abs'
208     $I0 = abs 1
210     $I1 = 1
211     $I1 = abs $I1
213     $I2 = abs -1
215     $I3 = -1
216     $I3 = abs $I3
218     is($I0, 1, 'abs_i_ic')
219     is($I1, 1, 'abs_i_i')
220     is($I2, 1, 'abs_i_nc')
221     is($I3, 1, 'abs_i_n')
222 .end
224 .sub 'test_sub'
225     $I0 = 0x12345678
226     $I1 = 0x01234567
227     $I2 = $I0 - $I1
228     is($I2, 286331153, 'sub_i_i_i')
230     $I1 = 1234
232     $I0 = $I1 - 1230
233     is($I0, 4, 'sub_i_i_ic')
235     $I0 = 1244 - $I1
236     is($I0, 10, 'sub_i_ic_i')
238     $I0 = 13 - 12
239     is($I0, 1, 'sub_i_ic_ic')
240 .end
242 .sub 'test_mul'
243     $I0 = 7
244     $I1 = 29
246     $I2 = $I0 * $I1
247     is($I2, 203, 'mul_i_i_i')
249     $I2 = $I0 * 29
250     is($I2, 203, 'mul_i_i_ic')
251 .end
253 .sub 'test_div'
254     $I0 = 0x33333333
255     $I1 = 0x11111111
256     $I2 = $I0 / $I1
257     is($I2, 3, 'div_i_i_i - exact')
259     $I0 = 11
260     $I1 = 2
261     $I2 = $I0 / $I1
262     is($I2, 5, 'div_i_i_i - quotient with positive integers')
264     $I0 = 9
265     $I1 = -4
266     $I2 = $I0 / $I1
267     is($I2, -2, 'div_i_i_i - quotient with negative divisor')
269     $I0 = 12
271     $I1 = 144 / $I0
272     is($I1, 12, 'div_i_ic_i')
274     $I1 = $I0 / 3
275     is($I1, 4, 'div_i_i_ic')
277     $I1 = 120 / 12
278     is($I1, 10, 'div_i_ic_ic')
279 .end
281 .sub 'test_fdiv'
282     $I0 = 9
283     $I1 = -4
284     fdiv $I0, $I1
285     is($I0, -3, 'fdiv_i_i with negative divisor')
287     $I0 = 9
288     $I1 = -4
289     $I2 = fdiv $I0, $I1
290     is($I2, -3, 'fdiv_i_i_i with negative divisor')
291 .end
293 .sub 'test_mod'
294     $I0 = 5
295     $I1 = 0
296     $I2 = mod $I0, $I1
297     is($I2, 5, 'mod_i_i_i by 0')
299     $I0 = 0
300     $I1 = 3
301     $I2 = mod $I0, $I1
302     is($I2, 0, 'mod_i_i_i of 0')
304     $I0 = 5
305     $I1 = 3
306     $I2 = mod $I0, $I1
307     is($I2, 2, 'mod_i_i_i - remainder of 5 / 3')
309     $I0 = 5
310     $I1 = -3
311     $I2 = mod $I0, $I1
312     is($I2, -1, 'mod_i_i_i - remainder of 5 / -3')
314     $I0 = -5
315     $I1 = 3
316     $I2 = mod $I0, $I1
317     is($I2, 1, 'mod_i_i_i - remainder of -5 / 3')
319     $I0 = -5
320     $I1 = -3
321     $I2 = mod $I0, $I1
322     is($I2, -2, 'mod_i_i_i - remainder of -5 / -3')
324     $I0 = 12
326     $I1 = mod $I0, 10
327     is($I1, 2, 'mod_i_i_ic')
329     $I1 = mod 14, $I0
330     is($I1, 2, 'mod_i_ic_i')
332     $I1 = mod 13, 11
333     is($I1, 2, 'mod_i_ic_ic')
334 .end
336 .sub 'mod_negative_zero_rest'
337     $I1 = mod 3, 3
338     is($I1, 0, 'mod - negative, zero rest (#36003), 3 mod 3 = 0')
340     $I1 = mod -3, 3
341     is($I1, 0, 'mod - negative, zero rest (#36003), -3 mod 3 = 0')
343     $I1 = mod 3, -3
344     is($I1, 0, 'mod - negative, zero rest (#36003), 3 mod -3 = 0')
346     $I1 = mod -3, -3
347     is($I1, 0, 'mod - negative, zero rest (#36003), -3 mod -3 = 0')
348 .end
350 .sub 'test_eq'
351     $I0 = 0x12345678
352     $I1 = 0x12345678
353     $I2 = 0x76543210
355     $I3 = 1
356     if $I0 == $I1 goto test_eq_1
357     $I3 = 0
358   test_eq_1:
359     ok($I3, 'eq_i_i - equal')
361     $I3 = 1
362     unless $I1 == $I2 goto test_eq_2
363     $I3 = 0
364   test_eq_2:
365     ok($I3, 'eq_i_i - different')
367     $I0 = -42
368     $I3 = 0
369     if $I0 == 42 goto test_eq_3
370     $I3 = 1
371   test_eq_3:
372     ok($I3, 'eq_i_ic - different')
374     $I3 = 0
375     unless $I0 == -42 goto test_eq_4
376     $I3 = 1
377   test_eq_4:
378     ok($I3, 'eq_i_ic - equal')
380     $I0 = 12
381     $I3 = 0
382     unless $I0 == 12 goto test_eq_5
383     $I3 = 1
384   test_eq_5:
385     ok($I3, 'eq_i_ic - 12 == 12')
387     $I3 = 0
388     unless 12 == 12 goto test_eq_6
389     $I3 = 1
390   test_eq_6:
391     ok($I3, 'eq_ic_ic - equal')
393     $I3 = 1
394     unless 12 == 21 goto test_eq_7
395     $I3 = 0
396   test_eq_7:
397     ok($I3, 'eq_ic_ic - different')
398 .end
400 .sub 'test_ne'
401     $I0 = 0xa0b0c0d
402     $I1 = 0xa0b0c0d
403     $I2 = 0
405     $I3 = 0
406     unless $I0 != $I2 goto test_ne_1
407     $I3 = 1
408   test_ne_1:
409     ok($I3, 'ne_i_i - different')
411     $I3 = 0
412     if $I0 != $I1 goto test_ne_2
413     $I3 = 1
414   test_ne_2:
415     ok($I3, 'ne_i_i - equal')
417     $I0 = 427034409
418     $I3 = 0
419     if $I0 != 427034409 goto test_ne_3
420     $I3 = 1
421   test_ne_3:
422     ok($I3, 'ne_i_ic - equal')
424     $I3 = 0
425     unless $I0 != 427034408 goto test_ne_4
426     $I3 = 1
427   test_ne_4:
428     ok($I3, 'ne_i_ic - different')
429 .end
431 .sub 'test_lt'
432     $I0 = 2147483647
433     $I1 = -2147483648
434     $I2 = 0
435     $I3 = 0
437     $I4 = 0
438     unless $I1 < $I0 goto test_lt_1
439     $I4 = 1
440   test_lt_1:
441     ok($I4, 'lt_i_i - true inequality')
443     $I4 = 0
444     if $I0 < $I1 goto test_lt_2
445     $I4 = 1
446   test_lt_2:
447     ok($I4, 'lt_i_i - false inequality')
449     $I4 = 0
450     if $I2 < $I3 goto test_lt_3
451     $I4 = 1
452   test_lt_3:
453     ok($I4, 'lt_i_i - irreflexivity')
455     $I4 = 0
456     if $I0 < -2147483648 goto test_lt_4
457     $I4 = 1
458   test_lt_4:
459     ok($I4, 'lt_i_ic - false inequality')
461     $I4 = 0
462     unless $I1 < 2147483647 goto test_lt_5
463     $I4 = 1
464   test_lt_5:
465     ok($I4, 'lt_i_ic - true inequality')
467     $I4 = 0
468     if $I0 < 0 goto test_lt_6
469     $I4 = 1
470   test_lt_6:
471     ok($I4, 'lt_i_ic - irreflexivity')
472 .end
474 .sub 'test_le'
475     $I0 = 2147483647
476     $I1 = -2147483648
477     $I2 = 0
478     $I3 = 0
480     $I4 = 0
481     unless $I1 <= $I0 goto test_le_1
482     $I4 = 1
483   test_le_1:
484     ok($I4, 'le_i_i - true inequality')
486     $I4 = 0
487     if $I0 <= $I1 goto test_le_2
488     $I4 = 1
489   test_le_2:
490     ok($I4, 'le_i_i - false inequality')
492     $I4 = 0
493     unless $I2 <= $I3 goto test_le_3
494     $I4 = 1
495   test_le_3:
496     ok($I4, 'le_i_i - reflexive')
498     $I4 = 0
499     if $I0 <= -2147483648 goto test_le_4
500     $I4 = 1
501   test_le_4:
502     ok($I4, 'le_i_ic - false inequality')
504     $I4 = 0
505     unless $I1 <= 2147483647 goto test_le_5
506     $I4 = 1
507   test_le_5:
508     ok($I4, 'le_i_ic - true inequality')
510     $I4 = 0
511     unless $I2 <= 0 goto test_le_6
512     $I4 = 1
513   test_le_6:
514     ok($I4, 'le_i_ic - reflexivity')
515 .end
517 .sub 'test_gt'
518     $I0 = -2147483648
519     $I1 = 2147483647
520     $I2 = 0
521     $I3 = 0
523     $I4 = 0
524     unless $I1 > $I0 goto test_gt_1
525     $I4 = 1
526   test_gt_1:
527     ok($I4, 'gt_i_i - true inequality')
529     $I4 = 0
530     if $I0 > $I1 goto test_gt_2
531     $I4 = 1
532   test_gt_2:
533     ok($I4, 'gt_i_i - false inequality')
535     $I4 = 0
536     if $I2 > $I3 goto test_gt_3
537     $I4 = 1
538   test_gt_3:
539     ok($I4, 'gt_i_i - irreflexive')
541     $I4 = 0
542     if $I0 > 2147483647 goto test_gt_4
543     $I4 = 1
544   test_gt_4:
545     ok($I4, 'gt_i_ic - false inequality')
547     $I4 = 0
548     unless $I1 > -2147483648 goto test_gt_5
549     $I4 = 1
550   test_gt_5:
551     ok($I4, 'gt_i_ic - true inequality')
553     $I4 = 0
554     if $I0 > 0 goto test_gt_6
555     $I4 = 1
556   test_gt_6:
557     ok($I4, 'gt_i_ic - another false inequality')
558 .end
560 .sub 'test_ge'
561     $I0 = -2147483648
562     $I1 = 2147483647
563     $I2 = 0
564     $I3 = 0
566     $I4 = 0
567     unless $I1 >= $I0 goto test_ge_1
568     $I4 = 1
569   test_ge_1:
570     ok($I4, 'ge_i_i - true inequality')
572     $I4 = 0
573     if $I0 >= $I1 goto test_ge_2
574     $I4 = 1
575   test_ge_2:
576     ok($I4, 'ge_i_i - false inequality')
578     $I4 = 0
579     unless $I2 >= $I3 goto test_ge_3
580     $I4 = 1
581   test_ge_3:
582     ok($I4, 'ge_i_i - reflexive')
584     $I4 = 0
585     if $I0 >= 2147483647 goto test_ge_4
586     $I4 = 1
587   test_ge_4:
588     ok($I4, 'ge_i_ic - false inequality')
590     $I4 = 0
591     unless $I1 >= -2147483648 goto test_ge_5
592     $I4 = 1
593   test_ge_5:
594     ok($I4, 'ge_i_ic - true inequality')
596     $I4 = 0
597     unless $I2 >= 0 goto test_ge_6
598     $I4 = 1
599   test_ge_6:
600     ok($I4, 'ge_i_ic - reflexivity')
601 .end
603 .sub 'test_not'
604     $I0 = 1
605     $I1 = not $I0
606     is($I1, 0, 'not_i_i - not 1')
608     $I2 = not $I1
609     is($I2, 1, 'not_i_i - not (not 1)')
611     $I3 = 12345
612     $I4 = not $I3
613     is($I4, 0, 'not_i_i of a positive integer')
615     $I5 = -1
616     $I6 = not $I5
617     is($I6, 0, 'not_i_i of a negative integer')
619     $I7 = 1
620     $I7 = not 1
621     is($I7, 0, 'not_i_ic')
622 .end
624 .sub 'test_and'
625     $I0 = 0
626     $I1 = 10
628     $I2 = 1
629     $I2 = and $I1, $I0
630     is($I2, 0, 'and - zero is right absorbing')
632     $I2 = 1
633     $I2 = and $I0, $I1
634     is($I2, 0, 'and - zero is left absorbing')
636     $I2 = 1
637     $I2 = and $I0, $I0
638     is($I2, 0, 'and - diagonal zero')
640     $I2 = 1
641     $I2 = and $I2, $I1
642     is($I2, 10, 'and - true operands')
643 .end
645 .sub 'test_or'
646     $I0 = 0
647     $I1 = 10
649     $I2 = 42
650     $I2 = or $I1, $I0
651     is($I2, 10, 'or_i_i')
653     $I2 = 42
654     $I2 = or $I0, $I1
655     is($I2, 10, 'or_i_i - symmetric case')
657     $I2 = or $I0, $I0
658     is($I2, 0, 'or_i_i - false arguments')
660     $I2 = or $I2, $I1
661     is($I2, 10, 'or_i_i - reflexive')
662 .end
664 .sub 'test_xor'
665     $I0 = 0
666     $I1 = 2
668     $I2 = 42
669     $I2 = xor $I1, $I0
670     is($I2, 2, 'xor - zero is right neutral')
672     $I2 = 42
673     $I2 = xor $I0, $I1
674     is($I2, 2, 'xor - zero is left neutral')
676     $I2 = xor $I0, $I0
677     is($I2, 0, 'xor - nilpotent on zero')
679     $I2 = xor $I1, $I1
680     is($I2, 0, 'xor - nilpotent on 2')
682     $I2 = xor $I2, $I2
683     is($I2, 0, 'xor - nilpotent on other')
684 .end
686 .sub 'test_inc'
687     $I0 = 0
688     inc $I0
689     is($I0, 1, 'inc_i (first)')
690     inc $I0
691     inc $I0
692     inc $I0
693     inc $I0
694     is($I0, 5, 'inc_i (second)')
695 .end
697 .sub 'test_dec'
698     $I0 = 0
699     dec $I0
700     is($I0, -1, 'dec_i (first)')
701     dec $I0
702     dec $I0
703     dec $I0
704     dec $I0
705     is($I0, -5, 'dec_i (second)')
706 .end
708 .sub 'test_sub_i_i'
709     $I0 = 0
710     $I1 = 3
711     $I2 = -3
713     sub $I0, $I1
714     is($I0, -3, 'sub_i_i')
716     sub $I0, $I2
717     is($I0, 0, 'sub_i_i - inverse')
719     $I0 = 0
720     sub $I0, 5
721     is($I0, -5, 'sub_i_ic - first')
723     sub $I0, -10
724     is($I0, 5, 'sub_i_ic - second')
725 .end
727 .sub 'test_set_n'
728     $I0 = 0
729     $N0 = $I0
730     is($N0, 0.0, 'set_n_i -zero')
732     $I1 = 2147483647
733     $N1 = $I1
734     is($N1, 2147483647.0, 'set_n_i - positive integer')
736     $I2 = -2147483648
737     $N2 = $I2
738     is($N2, -2147483648.0, 'set_n_i - negative integer')
739 .end
741 .sub 'test_neg'
742     $I0 = neg 3
743     $I0 = neg $I0
744     neg $I0
746     is($I0, -3, 'neg_i')
747 .end
749 # Test to ensure that the negative of the maximum integer is equal to the
750 # minimum integer + 1. This should be true because we are assuming a
751 # two's-complement machine.
753 .include 'iglobals.pasm'
754 .sub test_negate_max_integer
755     .local int max, min
757     $P0 = getinterp
758     $P1 = $P0[.IGLOBALS_CONFIG_HASH]
759     $I0 = $P1['intvalsize']
761     # XXX can't use sysinfo (from sys_ops) in coretest
762     # build up 2's compliment min and max integers manually
763     max = 0x7F
764     min = 0x80
765     dec $I0
766   loop:
767     unless $I0 goto end_loop
768     min <<= 8
769     max <<= 8
770     max  |= 0xFF
771     dec $I0
772     goto loop
773   end_loop:
775     neg max
776     inc min
777     is(max, min)
778 .end
780 .sub 'test_mul_i_i'
781     $I0 = 3
782     $I1 = 4
783     mul $I0, $I1
785     is($I0, 12, 'mul_i_i')
786 .end
788 .sub 'test_null'
789     $I1 = 1000
790     is($I1, 1000, 'null_i - before null')
791     null $I1
792     is($I1, 0, 'null_i - after null')
793 .end
795 .sub 'test_div_i_i_by_zero'
796     $I0 = 0
797     $I1 = 10
798     push_eh test_div_i_i_by_zero_catch
799     div $I1, $I0
800     pop_eh
801     $I2 = 0
802     goto test_div_i_i_by_zero_end
804   test_div_i_i_by_zero_catch:
805     $I2 = 1
807   test_div_i_i_by_zero_end:
808     ok($I2, 'div_i_i by zero')
809 .end
811 .sub 'test_div_i_ic_by_zero'
812     $I1 = 10
813     push_eh test_div_i_ic_by_zero_catch
814     div $I1, 0
815     pop_eh
816     $I2 = 0
817     goto test_div_i_ic_by_zero_end
819   test_div_i_ic_by_zero_catch:
820     $I2 = 1
822   test_div_i_ic_by_zero_end:
823     ok($I2, 'div_i_ic by zero')
824 .end
826 .sub 'test_div_i_i_i_by_zero'
827     $I0 = 0
828     $I1 = 10
829     push_eh test_div_i_i_i_by_zero_catch
830     $I2 = div $I1, $I0
831     pop_eh
832     $I3 = 0
833     goto test_div_i_i_i_by_zero_end
835   test_div_i_i_i_by_zero_catch:
836     $I3 = 1
838   test_div_i_i_i_by_zero_end:
839     ok($I3, 'div_i_i_i by zero')
840 .end
842 .sub 'test_div_i_ic_i_by_zero'
843     $I0 = 0
844     push_eh test_div_i_ic_i_by_zero_catch
845     $I2 = div 10, $I0
846     pop_eh
847     $I3 = 0
848     goto test_div_i_ic_i_by_zero_end
850   test_div_i_ic_i_by_zero_catch:
851     $I3 = 1
853   test_div_i_ic_i_by_zero_end:
854     ok($I3, 'div_i_ic_i by zero')
855 .end
857 .sub 'test_div_i_i_ic_by_zero'
858     $I1 = 10
859     push_eh test_div_i_i_ic_by_zero_catch
860     $I2 = div $I1, 0
861     pop_eh
862     $I3 = 0
863     goto test_div_i_i_ic_by_zero_end
865   test_div_i_i_ic_by_zero_catch:
866     $I3 = 1
868   test_div_i_i_ic_by_zero_end:
869     ok($I3, 'div_i_i_ic by zero')
870 .end
872 .sub 'test_fdiv_i_i_by_zero'
873     $I0 = 0
874     $I1 = 10
875     push_eh test_fdiv_i_i_by_zero_catch
876     fdiv $I1, $I0
877     pop_eh
878     $I2 = 0
879     goto test_fdiv_i_i_by_zero_end
881   test_fdiv_i_i_by_zero_catch:
882     $I2 = 1
884   test_fdiv_i_i_by_zero_end:
885     ok($I2, 'fdiv_i_i by zero')
886 .end
888 .sub 'test_fdiv_i_ic_by_zero'
889     $I1 = 10
890     push_eh test_fdiv_i_ic_by_zero_catch
891     fdiv $I1, 0
892     pop_eh
893     $I2 = 0
894     goto test_fdiv_i_ic_by_zero_end
896   test_fdiv_i_ic_by_zero_catch:
897     $I2 = 1
899   test_fdiv_i_ic_by_zero_end:
900     ok($I2, 'fdiv_i_ic by zero')
901 .end
903 .sub 'test_fdiv_i_i_i_by_zero'
904     $I0 = 0
905     $I1 = 10
906     push_eh test_fdiv_i_i_i_by_zero_catch
907     $I2 = fdiv $I1, $I0
908     pop_eh
909     $I3 = 0
910     goto test_fdiv_i_i_i_by_zero_end
912   test_fdiv_i_i_i_by_zero_catch:
913     $I3 = 1
915   test_fdiv_i_i_i_by_zero_end:
916     ok($I3, 'fdiv_i_i_i by zero')
917 .end
919 .sub 'test_fdiv_i_ic_i_by_zero'
920     $I0 = 0
921     push_eh test_fdiv_i_ic_i_by_zero_catch
922     $I2 = fdiv 10, $I0
923     pop_eh
924     $I3 = 0
925     goto test_fdiv_i_ic_i_by_zero_end
927   test_fdiv_i_ic_i_by_zero_catch:
928     $I3 = 1
930   test_fdiv_i_ic_i_by_zero_end:
931     ok($I3, 'fdiv_i_ic_i by zero')
932 .end
934 .sub 'test_fdiv_i_i_ic_by_zero'
935     $I1 = 10
936     push_eh test_fdiv_i_i_ic_by_zero_catch
937     $I2 = fdiv $I1, 0
938     pop_eh
939     $I3 = 0
940     goto test_fdiv_i_i_ic_by_zero_end
942   test_fdiv_i_i_ic_by_zero_catch:
943     $I3 = 1
945   test_fdiv_i_i_ic_by_zero_end:
946     ok($I3, 'fdiv_i_i_ic by zero')
947 .end
949 .sub 'test_mod_i_i_i_by_zero'
950     $I0 = 0
951     $I1 = 10
952     $I2 = mod $I1, $I0
953     is($I2, 10, 'mod_i_i_i by zero')
954 .end
956 .sub 'test_mod_i_ic_i_by_zero'
957     $I0 = 0
958     $I2 = mod 10, $I0
959     is($I2, 10, 'mod_i_ic_i by zero')
960 .end
962 .sub 'test_mod_i_i_ic_by_zero'
963     $I1 = 10
964     $I2 = mod $I1, 0
965     is($I2, 10, 'mod_i_i_ic by zero')
966 .end
968 # Local Variables:
969 #   mode: pir
970 #   fill-column: 100
971 # End:
972 # vim: expandtab shiftwidth=4 ft=pir: