updated copyright notice to include 2014
[voodoo-lang.git] / test / sub.voo
blob7ab8b86b4feb1fea4d82ba4fcadd2f60ef19edd0
1 section data
2 align
3 gx:
4 word 0
6 align
7 gy:
8 word 0
10 align
11 gz:
12 word 0
14 format:
15 string "%d\n"
17 section functions
18 export main
19 import printf
21 align
22 main:
23 function argc argv
24     let x sub 0 0
25     # EXPECTED: 0
26     call printf format x
27     set x sub 0 1
28     # EXPECTED: -1
29     call printf format x
30     set x sub 1 0
31     # EXPECTED: 1
32     call printf format x
33     set x sub 0 -1
34     # EXPECTED: 1
35     call printf format x
36     set x sub -1 0
37     # EXPECTED: -1
38     call printf format x
39     set x sub 0 43
40     # EXPECTED: -43
41     call printf format x
42     set x sub 43 0
43     # EXPECTED: 43
44     call printf format x
45     set x sub 0 -99
46     # EXPECTED: 99
47     call printf format x
48     set x sub -99 0
49     # EXPECTED: -99
50     call printf format x
51     set x sub 1 1
52     # EXPECTED: 0
53     call printf format x
54     set x sub 1 -1
55     # EXPECTED: 2
56     call printf format x
57     set x sub -1 1
58     # EXPECTED: -2
59     call printf format x
60     set x sub 1 43
61     # EXPECTED: -42
62     call printf format x
63     set x sub 43 1
64     # EXPECTED: 42
65     call printf format x
66     set x sub 1 -99
67     # EXPECTED: 100
68     call printf format x
69     set x sub -99 1
70     # EXPECTED: -100
71     call printf format x
72     set x sub -1 -1
73     # EXPECTED: 0
74     call printf format x
75     set x sub -1 43
76     # EXPECTED: -44
77     call printf format x
78     set x sub 43 -1
79     # EXPECTED: 44
80     call printf format x
81     set x sub -1 -99
82     # EXPECTED: 98
83     call printf format x
84     set x sub -99 -1
85     # EXPECTED: -98
86     call printf format x
87     set x sub 48 43
88     # EXPECTED: 5
89     call printf format x
90     set x sub 43 48
91     # EXPECTED: -5
92     call printf format x
93     set x sub 48 -99
94     # EXPECTED: 147
95     call printf format x
96     set x sub -99 48
97     # EXPECTED: -147
98     call printf format x
99     set x sub -58 -99
100     # EXPECTED: 41
101     call printf format x
102     set x sub -99 -58
103     # EXPECTED: -41
104     call printf format x
106     let y 0
107     set x sub y 0
108     # EXPECTED: 0
109     call printf format x
110     set x sub 0 y
111     # EXPECTED: 0
112     call printf format x
113     set x sub y 1
114     # EXPECTED: -1
115     call printf format x
116     set x sub 1 y
117     # EXPECTED: 1
118     call printf format x
119     set x sub y -1
120     # EXPECTED: 1
121     call printf format x
122     set x sub -1 y
123     # EXPECTED: -1
124     call printf format x
125     set x sub y 60
126     # EXPECTED: -60
127     call printf format x
128     set x sub 60 y
129     # EXPECTED: 60
130     call printf format x
131     set x sub y -28
132     # EXPECTED: 28
133     call printf format x
134     set x sub -28 y
135     # EXPECTED: -28
136     call printf format x
137     set y 1
138     set x sub y 1
139     # EXPECTED: 0
140     call printf format x
141     set x sub 1 y
142     # EXPECTED: 0
143     call printf format x
144     set x sub y -1
145     # EXPECTED: 2
146     call printf format x
147     set x sub -1 y
148     # EXPECTED: -2
149     call printf format x
150     set x sub y 60
151     # EXPECTED: -59
152     call printf format x
153     set x sub 60 y
154     # EXPECTED: 59
155     call printf format x
156     set x sub y -28
157     # EXPECTED: 29
158     call printf format x
159     set x sub -28 y
160     # EXPECTED: -29
161     call printf format x
162     set y -1
163     set x sub y -1
164     # EXPECTED: 0
165     call printf format x
166     set x sub -1 y
167     # EXPECTED: 0
168     call printf format x
169     set x sub y 60
170     # EXPECTED: -61
171     call printf format x
172     set x sub 60 y
173     # EXPECTED: 61
174     call printf format x
175     set x sub y -28
176     # EXPECTED: 27
177     call printf format x
178     set x sub -28 y
179     # EXPECTED: -27
180     call printf format x
181     set y 100
182     set x sub y 60
183     # EXPECTED: 40
184     call printf format x
185     set x sub 60 y
186     # EXPECTED: -40
187     call printf format x
188     set x sub y -28
189     # EXPECTED: 128
190     call printf format x
191     set x sub -28 y
192     # EXPECTED: -128
193     call printf format x
194     set y -82
195     set x sub y -28
196     # EXPECTED: -54
197     call printf format x
198     set x sub -28 y
199     # EXPECTED: 54
200     call printf format x
202     set y 0
203     let z 0
204     set x sub y z
205     # EXPECTED: 0
206     call printf format x
207     set x sub z y
208     # EXPECTED: 0
209     call printf format x
210     set z 1
211     set x sub y z
212     # EXPECTED: -1
213     call printf format x
214     set x sub z y
215     # EXPECTED: 1
216     call printf format x
217     set z -1
218     set x sub y z
219     # EXPECTED: 1
220     call printf format x
221     set x sub z y
222     # EXPECTED: -1
223     call printf format x
224     set z 72
225     set x sub y z
226     # EXPECTED: -72
227     call printf format x
228     set x sub z y
229     # EXPECTED: 72
230     call printf format x
231     set z -116
232     set x sub y z
233     # EXPECTED: 116
234     call printf format x
235     set x sub z y
236     # EXPECTED: -116
237     call printf format x
238     set y 1
239     set z 1
240     set x sub y z
241     # EXPECTED: 0
242     call printf format x
243     set x sub z y
244     # EXPECTED: 0
245     call printf format x
246     set z -1
247     set x sub y z
248     # EXPECTED: 2
249     call printf format x
250     set x sub z y
251     # EXPECTED: -2
252     call printf format x
253     set z 72
254     set x sub y z
255     # EXPECTED: -71
256     call printf format x
257     set x sub z y
258     # EXPECTED: 71
259     call printf format x
260     set z -116
261     set x sub y z
262     # EXPECTED: 117
263     call printf format x
264     set x sub z y
265     # EXPECTED: -117
266     call printf format x
267     set y -1
268     set z -1
269     set x sub y z
270     # EXPECTED: 0
271     call printf format x
272     set x sub z y
273     # EXPECTED: 0
274     call printf format x
275     set z 72
276     set x sub y z
277     # EXPECTED: -73
278     call printf format x
279     set x sub z y
280     # EXPECTED: 73
281     call printf format x
282     set z -116
283     set x sub y z
284     # EXPECTED: 115
285     call printf format x
286     set x sub z y
287     # EXPECTED: -115
288     call printf format x
289     set y 88
290     set z 72
291     set x sub y z
292     # EXPECTED: 16
293     call printf format x
294     set x sub z y
295     # EXPECTED: -16
296     call printf format x
297     set z -116
298     set x sub y z
299     # EXPECTED: 204
300     call printf format x
301     set x sub z y
302     # EXPECTED: -204
303     call printf format x
304     set y -122
305     set z -116
306     set x sub y z
307     # EXPECTED: -6
308     call printf format x
309     set x sub z y
310     # EXPECTED: 6
311     call printf format x
313     set x 0
314     set x sub x 0
315     # EXPECTED: 0
316     call printf format x
317     set x 0
318     set x sub 0 x
319     # EXPECTED: 0
320     call printf format x
321     set x 0
322     set x sub x 1
323     # EXPECTED: -1
324     call printf format x
325     set x 0
326     set x sub 1 x
327     # EXPECTED: 1
328     call printf format x
329     set x 0
330     set x sub x -1
331     # EXPECTED: 1
332     call printf format x
333     set x 0
334     set x sub -1 x
335     # EXPECTED: -1
336     call printf format x
337     set x 0
338     set x sub x 27
339     # EXPECTED: -27
340     call printf format x
341     set x 0
342     set x sub 27 x
343     # EXPECTED: 27
344     call printf format x
345     set x 0
346     set x sub x -127
347     # EXPECTED: 127
348     call printf format x
349     set x 0
350     set x sub -127 x
351     # EXPECTED: -127
352     call printf format x
353     set x 1
354     set x sub x 1
355     # EXPECTED: 0
356     call printf format x
357     set x 1
358     set x sub 1 x
359     # EXPECTED: 0
360     call printf format x
361     set x 1
362     set x sub x -1
363     # EXPECTED: 2
364     call printf format x
365     set x 1
366     set x sub -1 x
367     # EXPECTED: -2
368     call printf format x
369     set x 1
370     set x sub x 27
371     # EXPECTED: -26
372     call printf format x
373     set x 1
374     set x sub 27 x
375     # EXPECTED: 26
376     call printf format x
377     set x 1
378     set x sub x -127
379     # EXPECTED: 128
380     call printf format x
381     set x 1
382     set x sub -127 x
383     # EXPECTED: -128
384     call printf format x
385     set x -1
386     set x sub x -1
387     # EXPECTED: 0
388     call printf format x
389     set x -1
390     set x sub -1 x
391     # EXPECTED: 0
392     call printf format x
393     set x -1
394     set x sub x 27
395     # EXPECTED: -28
396     call printf format x
397     set x -1
398     set x sub 27 x
399     # EXPECTED: 28
400     call printf format x
401     set x -1
402     set x sub x -127
403     # EXPECTED: 126
404     call printf format x
405     set x -1
406     set x sub -127 x
407     # EXPECTED: -126
408     call printf format x
409     set x 16
410     set x sub x 27
411     # EXPECTED: -11
412     call printf format x
413     set x 16
414     set x sub 27 x
415     # EXPECTED: 11
416     call printf format x
417     set x 16
418     set x sub x -127
419     # EXPECTED: 143
420     call printf format x
421     set x 16
422     set x sub -127 x
423     # EXPECTED: -143
424     call printf format x
425     set x -8
426     set x sub x -127
427     # EXPECTED: 119
428     call printf format x
429     set x -8
430     set x sub -127 x
431     # EXPECTED: -119
432     call printf format x
434     set x 0
435     set y 0
436     set x sub x y
437     # EXPECTED: 0
438     call printf format x
439     set x 0
440     set x sub y x
441     # EXPECTED: 0
442     call printf format x
443     set x 0
444     set y 1
445     set x sub x y
446     # EXPECTED: -1
447     call printf format x
448     set x 0
449     set x sub y x
450     # EXPECTED: 1
451     call printf format x
452     set x 0
453     set y -1
454     set x sub x y
455     # EXPECTED: 1
456     call printf format x
457     set x 0
458     set x sub y x
459     # EXPECTED: -1
460     call printf format x
461     set x 0
462     set y 94
463     set x sub x y
464     # EXPECTED: -94
465     call printf format x
466     set x 0
467     set x sub y x
468     # EXPECTED: 94
469     call printf format x
470     set x 0
471     set y -91
472     set x sub x y
473     # EXPECTED: 91
474     call printf format x
475     set x 0
476     set x sub y x
477     # EXPECTED: -91
478     call printf format x
479     set x 1
480     set y 1
481     set x sub x y
482     # EXPECTED: 0
483     call printf format x
484     set x 1
485     set x sub y x
486     # EXPECTED: 0
487     call printf format x
488     set x 1
489     set y -1
490     set x sub x y
491     # EXPECTED: 2
492     call printf format x
493     set x 1
494     set x sub y x
495     # EXPECTED: -2
496     call printf format x
497     set x 1
498     set y 94
499     set x sub x y
500     # EXPECTED: -93
501     call printf format x
502     set x 1
503     set x sub y x
504     # EXPECTED: 93
505     call printf format x
506     set x 1
507     set y -91
508     set x sub x y
509     # EXPECTED: 92
510     call printf format x
511     set x 1
512     set x sub y x
513     # EXPECTED: -92
514     call printf format x
515     set x -1
516     set y -1
517     set x sub x y
518     # EXPECTED: 0
519     call printf format x
520     set x -1
521     set x sub y x
522     # EXPECTED: 0
523     call printf format x
524     set x -1
525     set y 94
526     set x sub x y
527     # EXPECTED: -95
528     call printf format x
529     set x -1
530     set x sub y x
531     # EXPECTED: 95
532     call printf format x
533     set x -1
534     set y -91
535     set x sub x y
536     # EXPECTED: 90
537     call printf format x
538     set x -1
539     set x sub y x
540     # EXPECTED: -90
541     call printf format x
542     set x 34
543     set y 94
544     set x sub x y
545     # EXPECTED: -60
546     call printf format x
547     set x 34
548     set x sub y x
549     # EXPECTED: 60
550     call printf format x
551     set x 34
552     set y -91
553     set x sub x y
554     # EXPECTED: 125
555     call printf format x
556     set x 34
557     set x sub y x
558     # EXPECTED: -125
559     call printf format x
560     set x -51
561     set y -91
562     set x sub x y
563     # EXPECTED: 40
564     call printf format x
565     set x -51
566     set x sub y x
567     # EXPECTED: -40
568     call printf format x
570     set @gx 0
571     set x sub @gx 0
572     # EXPECTED: 0
573     call printf format x
574     set x sub 0 @gx
575     # EXPECTED: 0
576     call printf format x
577     set x sub @gx 1
578     # EXPECTED: -1
579     call printf format x
580     set x sub 1 @gx
581     # EXPECTED: 1
582     call printf format x
583     set x sub @gx -1
584     # EXPECTED: 1
585     call printf format x
586     set x sub -1 @gx
587     # EXPECTED: -1
588     call printf format x
589     set x sub @gx 19
590     # EXPECTED: -19
591     call printf format x
592     set x sub 19 @gx
593     # EXPECTED: 19
594     call printf format x
595     set x sub @gx -57
596     # EXPECTED: 57
597     call printf format x
598     set x sub -57 @gx
599     # EXPECTED: -57
600     call printf format x
601     set @gx 1
602     set x sub @gx 1
603     # EXPECTED: 0
604     call printf format x
605     set x sub 1 @gx
606     # EXPECTED: 0
607     call printf format x
608     set x sub @gx -1
609     # EXPECTED: 2
610     call printf format x
611     set x sub -1 @gx
612     # EXPECTED: -2
613     call printf format x
614     set x sub @gx 19
615     # EXPECTED: -18
616     call printf format x
617     set x sub 19 @gx
618     # EXPECTED: 18
619     call printf format x
620     set x sub @gx -57
621     # EXPECTED: 58
622     call printf format x
623     set x sub -57 @gx
624     # EXPECTED: -58
625     call printf format x
626     set @gx -1
627     set x sub @gx -1
628     # EXPECTED: 0
629     call printf format x
630     set x sub -1 @gx
631     # EXPECTED: 0
632     call printf format x
633     set x sub @gx 19
634     # EXPECTED: -20
635     call printf format x
636     set x sub 19 @gx
637     # EXPECTED: 20
638     call printf format x
639     set x sub @gx -57
640     # EXPECTED: 56
641     call printf format x
642     set x sub -57 @gx
643     # EXPECTED: -56
644     call printf format x
645     set @gx 125
646     set x sub @gx 19
647     # EXPECTED: 106
648     call printf format x
649     set x sub 19 @gx
650     # EXPECTED: -106
651     call printf format x
652     set x sub @gx -57
653     # EXPECTED: 182
654     call printf format x
655     set x sub -57 @gx
656     # EXPECTED: -182
657     call printf format x
658     set @gx -37
659     set x sub @gx -57
660     # EXPECTED: 20
661     call printf format x
662     set x sub -57 @gx
663     # EXPECTED: -20
664     call printf format x
666     set @gx 0
667     set y 0
668     set x sub @gx y
669     # EXPECTED: 0
670     call printf format x
671     set x sub y @gx
672     # EXPECTED: 0
673     call printf format x
674     set y 1
675     set x sub @gx y
676     # EXPECTED: -1
677     call printf format x
678     set x sub y @gx
679     # EXPECTED: 1
680     call printf format x
681     set y -1
682     set x sub @gx y
683     # EXPECTED: 1
684     call printf format x
685     set x sub y @gx
686     # EXPECTED: -1
687     call printf format x
688     set y 86
689     set x sub @gx y
690     # EXPECTED: -86
691     call printf format x
692     set x sub y @gx
693     # EXPECTED: 86
694     call printf format x
695     set y -5
696     set x sub @gx y
697     # EXPECTED: 5
698     call printf format x
699     set x sub y @gx
700     # EXPECTED: -5
701     call printf format x
702     set @gx 1
703     set y 1
704     set x sub @gx y
705     # EXPECTED: 0
706     call printf format x
707     set x sub y @gx
708     # EXPECTED: 0
709     call printf format x
710     set y -1
711     set x sub @gx y
712     # EXPECTED: 2
713     call printf format x
714     set x sub y @gx
715     # EXPECTED: -2
716     call printf format x
717     set y 86
718     set x sub @gx y
719     # EXPECTED: -85
720     call printf format x
721     set x sub y @gx
722     # EXPECTED: 85
723     call printf format x
724     set y -5
725     set x sub @gx y
726     # EXPECTED: 6
727     call printf format x
728     set x sub y @gx
729     # EXPECTED: -6
730     call printf format x
731     set @gx -1
732     set y -1
733     set x sub @gx y
734     # EXPECTED: 0
735     call printf format x
736     set x sub y @gx
737     # EXPECTED: 0
738     call printf format x
739     set y 86
740     set x sub @gx y
741     # EXPECTED: -87
742     call printf format x
743     set x sub y @gx
744     # EXPECTED: 87
745     call printf format x
746     set y -5
747     set x sub @gx y
748     # EXPECTED: 4
749     call printf format x
750     set x sub y @gx
751     # EXPECTED: -4
752     call printf format x
753     set @gx 67
754     set y 86
755     set x sub @gx y
756     # EXPECTED: -19
757     call printf format x
758     set x sub y @gx
759     # EXPECTED: 19
760     call printf format x
761     set y -5
762     set x sub @gx y
763     # EXPECTED: 72
764     call printf format x
765     set x sub y @gx
766     # EXPECTED: -72
767     call printf format x
768     set @gx -116
769     set y -5
770     set x sub @gx y
771     # EXPECTED: -111
772     call printf format x
773     set x sub y @gx
774     # EXPECTED: 111
775     call printf format x
777     set @gx 0
778     set @gy 0
779     set x sub @gx @gy
780     # EXPECTED: 0
781     call printf format x
782     set x sub @gy @gx
783     # EXPECTED: 0
784     call printf format x
785     set @gy 1
786     set x sub @gx @gy
787     # EXPECTED: -1
788     call printf format x
789     set x sub @gy @gx
790     # EXPECTED: 1
791     call printf format x
792     set @gy -1
793     set x sub @gx @gy
794     # EXPECTED: 1
795     call printf format x
796     set x sub @gy @gx
797     # EXPECTED: -1
798     call printf format x
799     set @gy 125
800     set x sub @gx @gy
801     # EXPECTED: -125
802     call printf format x
803     set x sub @gy @gx
804     # EXPECTED: 125
805     call printf format x
806     set @gy -76
807     set x sub @gx @gy
808     # EXPECTED: 76
809     call printf format x
810     set x sub @gy @gx
811     # EXPECTED: -76
812     call printf format x
813     set @gx 1
814     set @gy 1
815     set x sub @gx @gy
816     # EXPECTED: 0
817     call printf format x
818     set x sub @gy @gx
819     # EXPECTED: 0
820     call printf format x
821     set @gy -1
822     set x sub @gx @gy
823     # EXPECTED: 2
824     call printf format x
825     set x sub @gy @gx
826     # EXPECTED: -2
827     call printf format x
828     set @gy 125
829     set x sub @gx @gy
830     # EXPECTED: -124
831     call printf format x
832     set x sub @gy @gx
833     # EXPECTED: 124
834     call printf format x
835     set @gy -76
836     set x sub @gx @gy
837     # EXPECTED: 77
838     call printf format x
839     set x sub @gy @gx
840     # EXPECTED: -77
841     call printf format x
842     set @gx -1
843     set @gy -1
844     set x sub @gx @gy
845     # EXPECTED: 0
846     call printf format x
847     set x sub @gy @gx
848     # EXPECTED: 0
849     call printf format x
850     set @gy 125
851     set x sub @gx @gy
852     # EXPECTED: -126
853     call printf format x
854     set x sub @gy @gx
855     # EXPECTED: 126
856     call printf format x
857     set @gy -76
858     set x sub @gx @gy
859     # EXPECTED: 75
860     call printf format x
861     set x sub @gy @gx
862     # EXPECTED: -75
863     call printf format x
864     set @gx 71
865     set @gy 125
866     set x sub @gx @gy
867     # EXPECTED: -54
868     call printf format x
869     set x sub @gy @gx
870     # EXPECTED: 54
871     call printf format x
872     set @gy -76
873     set x sub @gx @gy
874     # EXPECTED: 147
875     call printf format x
876     set x sub @gy @gx
877     # EXPECTED: -147
878     call printf format x
879     set @gx -113
880     set @gy -76
881     set x sub @gx @gy
882     # EXPECTED: -37
883     call printf format x
884     set x sub @gy @gx
885     # EXPECTED: 37
886     call printf format x
888     set @gx 0
889     set y 0
890     set @gx sub @gx y
891     # EXPECTED: 0
892     call printf format @gx
893     set @gx 0
894     set @gx sub y @gx
895     # EXPECTED: 0
896     call printf format @gx
897     set @gx 0
898     set y 1
899     set @gx sub @gx y
900     # EXPECTED: -1
901     call printf format @gx
902     set @gx 0
903     set @gx sub y @gx
904     # EXPECTED: 1
905     call printf format @gx
906     set @gx 0
907     set y -1
908     set @gx sub @gx y
909     # EXPECTED: 1
910     call printf format @gx
911     set @gx 0
912     set @gx sub y @gx
913     # EXPECTED: -1
914     call printf format @gx
915     set @gx 0
916     set y 36
917     set @gx sub @gx y
918     # EXPECTED: -36
919     call printf format @gx
920     set @gx 0
921     set @gx sub y @gx
922     # EXPECTED: 36
923     call printf format @gx
924     set @gx 0
925     set y -13
926     set @gx sub @gx y
927     # EXPECTED: 13
928     call printf format @gx
929     set @gx 0
930     set @gx sub y @gx
931     # EXPECTED: -13
932     call printf format @gx
933     set @gx 1
934     set y 1
935     set @gx sub @gx y
936     # EXPECTED: 0
937     call printf format @gx
938     set @gx 1
939     set @gx sub y @gx
940     # EXPECTED: 0
941     call printf format @gx
942     set @gx 1
943     set y -1
944     set @gx sub @gx y
945     # EXPECTED: 2
946     call printf format @gx
947     set @gx 1
948     set @gx sub y @gx
949     # EXPECTED: -2
950     call printf format @gx
951     set @gx 1
952     set y 36
953     set @gx sub @gx y
954     # EXPECTED: -35
955     call printf format @gx
956     set @gx 1
957     set @gx sub y @gx
958     # EXPECTED: 35
959     call printf format @gx
960     set @gx 1
961     set y -13
962     set @gx sub @gx y
963     # EXPECTED: 14
964     call printf format @gx
965     set @gx 1
966     set @gx sub y @gx
967     # EXPECTED: -14
968     call printf format @gx
969     set @gx -1
970     set y -1
971     set @gx sub @gx y
972     # EXPECTED: 0
973     call printf format @gx
974     set @gx -1
975     set @gx sub y @gx
976     # EXPECTED: 0
977     call printf format @gx
978     set @gx -1
979     set y 36
980     set @gx sub @gx y
981     # EXPECTED: -37
982     call printf format @gx
983     set @gx -1
984     set @gx sub y @gx
985     # EXPECTED: 37
986     call printf format @gx
987     set @gx -1
988     set y -13
989     set @gx sub @gx y
990     # EXPECTED: 12
991     call printf format @gx
992     set @gx -1
993     set @gx sub y @gx
994     # EXPECTED: -12
995     call printf format @gx
996     set @gx 17
997     set y 36
998     set @gx sub @gx y
999     # EXPECTED: -19
1000     call printf format @gx
1001     set @gx 17
1002     set @gx sub y @gx
1003     # EXPECTED: 19
1004     call printf format @gx
1005     set @gx 17
1006     set y -13
1007     set @gx sub @gx y
1008     # EXPECTED: 30
1009     call printf format @gx
1010     set @gx 17
1011     set @gx sub y @gx
1012     # EXPECTED: -30
1013     call printf format @gx
1014     set @gx -28
1015     set y -13
1016     set @gx sub @gx y
1017     # EXPECTED: -15
1018     call printf format @gx
1019     set @gx -28
1020     set @gx sub y @gx
1021     # EXPECTED: 15
1022     call printf format @gx
1024     set @gy 0
1025     set @gz 0
1026     set @gx sub @gy @gz
1027     # EXPECTED: 0
1028     call printf format @gx
1029     set @gx sub @gz @gy
1030     # EXPECTED: 0
1031     call printf format @gx
1032     set @gz 1
1033     set @gx sub @gy @gz
1034     # EXPECTED: -1
1035     call printf format @gx
1036     set @gx sub @gz @gy
1037     # EXPECTED: 1
1038     call printf format @gx
1039     set @gz -1
1040     set @gx sub @gy @gz
1041     # EXPECTED: 1
1042     call printf format @gx
1043     set @gx sub @gz @gy
1044     # EXPECTED: -1
1045     call printf format @gx
1046     set @gz 90
1047     set @gx sub @gy @gz
1048     # EXPECTED: -90
1049     call printf format @gx
1050     set @gx sub @gz @gy
1051     # EXPECTED: 90
1052     call printf format @gx
1053     set @gz -18
1054     set @gx sub @gy @gz
1055     # EXPECTED: 18
1056     call printf format @gx
1057     set @gx sub @gz @gy
1058     # EXPECTED: -18
1059     call printf format @gx
1060     set @gy 1
1061     set @gz 1
1062     set @gx sub @gy @gz
1063     # EXPECTED: 0
1064     call printf format @gx
1065     set @gx sub @gz @gy
1066     # EXPECTED: 0
1067     call printf format @gx
1068     set @gz -1
1069     set @gx sub @gy @gz
1070     # EXPECTED: 2
1071     call printf format @gx
1072     set @gx sub @gz @gy
1073     # EXPECTED: -2
1074     call printf format @gx
1075     set @gz 90
1076     set @gx sub @gy @gz
1077     # EXPECTED: -89
1078     call printf format @gx
1079     set @gx sub @gz @gy
1080     # EXPECTED: 89
1081     call printf format @gx
1082     set @gz -18
1083     set @gx sub @gy @gz
1084     # EXPECTED: 19
1085     call printf format @gx
1086     set @gx sub @gz @gy
1087     # EXPECTED: -19
1088     call printf format @gx
1089     set @gy -1
1090     set @gz -1
1091     set @gx sub @gy @gz
1092     # EXPECTED: 0
1093     call printf format @gx
1094     set @gx sub @gz @gy
1095     # EXPECTED: 0
1096     call printf format @gx
1097     set @gz 90
1098     set @gx sub @gy @gz
1099     # EXPECTED: -91
1100     call printf format @gx
1101     set @gx sub @gz @gy
1102     # EXPECTED: 91
1103     call printf format @gx
1104     set @gz -18
1105     set @gx sub @gy @gz
1106     # EXPECTED: 17
1107     call printf format @gx
1108     set @gx sub @gz @gy
1109     # EXPECTED: -17
1110     call printf format @gx
1111     set @gy 92
1112     set @gz 90
1113     set @gx sub @gy @gz
1114     # EXPECTED: 2
1115     call printf format @gx
1116     set @gx sub @gz @gy
1117     # EXPECTED: -2
1118     call printf format @gx
1119     set @gz -18
1120     set @gx sub @gy @gz
1121     # EXPECTED: 110
1122     call printf format @gx
1123     set @gx sub @gz @gy
1124     # EXPECTED: -110
1125     call printf format @gx
1126     set @gy -110
1127     set @gz -18
1128     set @gx sub @gy @gz
1129     # EXPECTED: -92
1130     call printf format @gx
1131     set @gx sub @gz @gy
1132     # EXPECTED: 92
1133     call printf format @gx
1135     set @gx 0
1136     set @gy 0
1137     set @gx sub @gx @gy
1138     # EXPECTED: 0
1139     call printf format @gx
1140     set @gx 0
1141     set @gx sub @gy @gx
1142     # EXPECTED: 0
1143     call printf format @gx
1144     set @gx 0
1145     set @gy 1
1146     set @gx sub @gx @gy
1147     # EXPECTED: -1
1148     call printf format @gx
1149     set @gx 0
1150     set @gx sub @gy @gx
1151     # EXPECTED: 1
1152     call printf format @gx
1153     set @gx 0
1154     set @gy -1
1155     set @gx sub @gx @gy
1156     # EXPECTED: 1
1157     call printf format @gx
1158     set @gx 0
1159     set @gx sub @gy @gx
1160     # EXPECTED: -1
1161     call printf format @gx
1162     set @gx 0
1163     set @gy 37
1164     set @gx sub @gx @gy
1165     # EXPECTED: -37
1166     call printf format @gx
1167     set @gx 0
1168     set @gx sub @gy @gx
1169     # EXPECTED: 37
1170     call printf format @gx
1171     set @gx 0
1172     set @gy -58
1173     set @gx sub @gx @gy
1174     # EXPECTED: 58
1175     call printf format @gx
1176     set @gx 0
1177     set @gx sub @gy @gx
1178     # EXPECTED: -58
1179     call printf format @gx
1180     set @gx 1
1181     set @gy 1
1182     set @gx sub @gx @gy
1183     # EXPECTED: 0
1184     call printf format @gx
1185     set @gx 1
1186     set @gx sub @gy @gx
1187     # EXPECTED: 0
1188     call printf format @gx
1189     set @gx 1
1190     set @gy -1
1191     set @gx sub @gx @gy
1192     # EXPECTED: 2
1193     call printf format @gx
1194     set @gx 1
1195     set @gx sub @gy @gx
1196     # EXPECTED: -2
1197     call printf format @gx
1198     set @gx 1
1199     set @gy 37
1200     set @gx sub @gx @gy
1201     # EXPECTED: -36
1202     call printf format @gx
1203     set @gx 1
1204     set @gx sub @gy @gx
1205     # EXPECTED: 36
1206     call printf format @gx
1207     set @gx 1
1208     set @gy -58
1209     set @gx sub @gx @gy
1210     # EXPECTED: 59
1211     call printf format @gx
1212     set @gx 1
1213     set @gx sub @gy @gx
1214     # EXPECTED: -59
1215     call printf format @gx
1216     set @gx -1
1217     set @gy -1
1218     set @gx sub @gx @gy
1219     # EXPECTED: 0
1220     call printf format @gx
1221     set @gx -1
1222     set @gx sub @gy @gx
1223     # EXPECTED: 0
1224     call printf format @gx
1225     set @gx -1
1226     set @gy 37
1227     set @gx sub @gx @gy
1228     # EXPECTED: -38
1229     call printf format @gx
1230     set @gx -1
1231     set @gx sub @gy @gx
1232     # EXPECTED: 38
1233     call printf format @gx
1234     set @gx -1
1235     set @gy -58
1236     set @gx sub @gx @gy
1237     # EXPECTED: 57
1238     call printf format @gx
1239     set @gx -1
1240     set @gx sub @gy @gx
1241     # EXPECTED: -57
1242     call printf format @gx
1243     set @gx 20
1244     set @gy 37
1245     set @gx sub @gx @gy
1246     # EXPECTED: -17
1247     call printf format @gx
1248     set @gx 20
1249     set @gx sub @gy @gx
1250     # EXPECTED: 17
1251     call printf format @gx
1252     set @gx 20
1253     set @gy -58
1254     set @gx sub @gx @gy
1255     # EXPECTED: 78
1256     call printf format @gx
1257     set @gx 20
1258     set @gx sub @gy @gx
1259     # EXPECTED: -78
1260     call printf format @gx
1261     set @gx -49
1262     set @gy -58
1263     set @gx sub @gx @gy
1264     # EXPECTED: 9
1265     call printf format @gx
1266     set @gx -49
1267     set @gx sub @gy @gx
1268     # EXPECTED: -9
1269     call printf format @gx
1271     return 0
1272 end function