From 7aa5ebed0f25cc90f86a441ada116653c5973017 Mon Sep 17 00:00:00 2001 From: inglorion Date: Sat, 3 Nov 2012 13:57:02 -0700 Subject: [PATCH] Split many-vars into 3 separate test programs --- test/Makefile | 4 +- test/many-args-tail.out | 1 + test/many-args-tail.voo | 75 ++++++++++++++++++ test/many-args.out | 1 + test/many-args.voo | 75 ++++++++++++++++++ test/many-locals.out | 2 + test/many-locals.voo | 69 +++++++++++++++++ test/many-vars.out | 5 -- test/many-vars.voo | 202 ------------------------------------------------ test/test | 6 +- 10 files changed, 230 insertions(+), 210 deletions(-) create mode 100644 test/many-args-tail.out create mode 100644 test/many-args-tail.voo create mode 100644 test/many-args.out create mode 100644 test/many-args.voo create mode 100644 test/many-locals.out create mode 100644 test/many-locals.voo delete mode 100644 test/many-vars.out delete mode 100644 test/many-vars.voo diff --git a/test/Makefile b/test/Makefile index 88d5829..3d6486d 100644 --- a/test/Makefile +++ b/test/Makefile @@ -4,8 +4,8 @@ NASM ?= nasm VOODOOC ?= env RUBYLIB=$(PWD)/../lib:$(RUBYLIB) ../bin/voodooc TARGETS = auto-bytes auto-words at block bitwise bytes call div else-if fact \ - goto hello if many-vars mod mul plusminus raw rotate set-at set-byte \ - set-word shift tail-calls vtable gcd + goto hello if many-args many-args-tail many-locals mod mul plusminus \ + raw rotate set-at set-byte set-word shift tail-calls vtable gcd all : $(TARGETS) diff --git a/test/many-args-tail.out b/test/many-args-tail.out new file mode 100644 index 0000000..3adc7e8 --- /dev/null +++ b/test/many-args-tail.out @@ -0,0 +1 @@ +many_args_tail: 20000210 diff --git a/test/many-args-tail.voo b/test/many-args-tail.voo new file mode 100644 index 0000000..6754328 --- /dev/null +++ b/test/many-args-tail.voo @@ -0,0 +1,75 @@ +#### Test tail calls using many arguments + +section data +align +format: +string "many_args_tail: %d\n\x00" + +section functions +import printf +export main + +align +many_args_tail: +function count a b c d e f g h i j k l m n o p q r s t + + let result 0 + ifle count 0 + set result add result a + set result add result b + set result add result c + set result add result d + set result add result e + set result add result f + set result add result g + set result add result h + set result add result i + set result add result j + set result add result k + set result add result l + set result add result m + set result add result n + set result add result o + set result add result p + set result add result q + set result add result r + set result add result s + set result add result t + return result + end if + + let newcount sub count 1 + let newa add a 1 + let newb add b 1 + let newc add c 1 + let newd add d 1 + let newe add e 1 + let newf add f 1 + let newg add g 1 + let newh add h 1 + let newi add i 1 + let newj add j 1 + let newk add k 1 + let newl add l 1 + let newm add m 1 + let newn add n 1 + let newo add o 1 + let newp add p 1 + let newq add q 1 + let newr add r 1 + let news add s 1 + let newt add t 1 + + tail-call many_args_tail newcount newa newb newc newd newe newf newg newh \ + newi newj newk newl newm newn newo newp newq newr news newt +end function + +align +main: +function argc argv + let x call many_args_tail 1000000 1 2 3 4 5 6 7 8 9 10 11 \ + 12 13 14 15 16 17 18 19 20 + call printf format x + + return 0 +end function diff --git a/test/many-args.out b/test/many-args.out new file mode 100644 index 0000000..199d1ca --- /dev/null +++ b/test/many-args.out @@ -0,0 +1 @@ +many_args: 270 diff --git a/test/many-args.voo b/test/many-args.voo new file mode 100644 index 0000000..a625e91 --- /dev/null +++ b/test/many-args.voo @@ -0,0 +1,75 @@ +#### Test using many arguments + +section data + +align +format: +string "many_args: %d\n\x00" + +section functions +import printf +export main + +align +many_args: +function count a b c d e f g h i j k l m n o p q r s t + + let result 0 + ifle count 0 + set result add result a + set result add result b + set result add result c + set result add result d + set result add result e + set result add result f + set result add result g + set result add result h + set result add result i + set result add result j + set result add result k + set result add result l + set result add result m + set result add result n + set result add result o + set result add result p + set result add result q + set result add result r + set result add result s + set result add result t + return result + end if + + let newcount sub count 1 + let newa add a 1 + let newb add b 1 + let newc add c 1 + let newd add d 1 + let newe add e 1 + let newf add f 1 + let newg add g 1 + let newh add h 1 + let newi add i 1 + let newj add j 1 + let newk add k 1 + let newl add l 1 + let newm add m 1 + let newn add n 1 + let newo add o 1 + let newp add p 1 + let newq add q 1 + let newr add r 1 + let news add s 1 + let newt add t 1 + + return call many_args newcount newa newb newc newd newe newf newg newh \ + newi newj newk newl newm newn newo newp newq newr news newt +end function + +align +main: +function argc argv + let x call many_args 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + call printf format x + + return 0 +end function diff --git a/test/many-locals.out b/test/many-locals.out new file mode 100644 index 0000000..717b269 --- /dev/null +++ b/test/many-locals.out @@ -0,0 +1,2 @@ +many_locals 1: 210 +many_locals -20: -210 diff --git a/test/many-locals.voo b/test/many-locals.voo new file mode 100644 index 0000000..4997bba --- /dev/null +++ b/test/many-locals.voo @@ -0,0 +1,69 @@ +#### Test using many locals + +section data +align +format: +string "many_locals %d: %d\n\x00" + +section functions +import printf +export main + +align +many_locals: +function x + let a x + let b add x 1 + let c add x 2 + let d add x 3 + let e add x 4 + let f add x 5 + let g add x 6 + let h add x 7 + let i add x 8 + let j add x 9 + let k add x 10 + let l add x 11 + let m add x 12 + let n add x 13 + let o add x 14 + let p add x 15 + let q add x 16 + let r add x 17 + let s add x 18 + let t add x 19 + + let sum add a b + set sum add sum c + set sum add sum d + set sum add sum e + set sum add sum f + set sum add sum g + set sum add sum h + set sum add sum i + set sum add sum j + set sum add sum k + set sum add sum l + set sum add sum m + set sum add sum n + set sum add sum o + set sum add sum p + set sum add sum q + set sum add sum r + set sum add sum s + set sum add sum t + + return sum +end function + +align +main: +function argc argv + let x call many_locals 1 + call printf format 1 x + + set x call many_locals -20 + call printf format -20 x + + return 0 +end function diff --git a/test/many-vars.out b/test/many-vars.out deleted file mode 100644 index 8360a21..0000000 --- a/test/many-vars.out +++ /dev/null @@ -1,5 +0,0 @@ -many_locals 1: 210 -many_locals -20: -210 -print_args 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -many_args: 270 -many_args_tail: 20000210 diff --git a/test/many-vars.voo b/test/many-vars.voo deleted file mode 100644 index adfb8f7..0000000 --- a/test/many-vars.voo +++ /dev/null @@ -1,202 +0,0 @@ -#### Test using many variables - -section data -align -format: -string "many_locals %d: %d\n\x00" - -align -format1: -string "many_args: %d\n\x00" - -align -format2: -string "many_args_tail: %d\n\x00" - -align -print_args_fmt: -string "print_args %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n\x00" - -section functions -import printf -export main - -many_locals: -function x - let a x - let b add x 1 - let c add x 2 - let d add x 3 - let e add x 4 - let f add x 5 - let g add x 6 - let h add x 7 - let i add x 8 - let j add x 9 - let k add x 10 - let l add x 11 - let m add x 12 - let n add x 13 - let o add x 14 - let p add x 15 - let q add x 16 - let r add x 17 - let s add x 18 - let t add x 19 - - let sum add a b - set sum add sum c - set sum add sum d - set sum add sum e - set sum add sum f - set sum add sum g - set sum add sum h - set sum add sum i - set sum add sum j - set sum add sum k - set sum add sum l - set sum add sum m - set sum add sum n - set sum add sum o - set sum add sum p - set sum add sum q - set sum add sum r - set sum add sum s - set sum add sum t - - return sum -end function - -many_args: -function count a b c d e f g h i j k l m n o p q r s t - - let result 0 - ifle count 0 - set result add result a - set result add result b - set result add result c - set result add result d - set result add result e - set result add result f - set result add result g - set result add result h - set result add result i - set result add result j - set result add result k - set result add result l - set result add result m - set result add result n - set result add result o - set result add result p - set result add result q - set result add result r - set result add result s - set result add result t - return result - end if - - let newcount sub count 1 - let newa add a 1 - let newb add b 1 - let newc add c 1 - let newd add d 1 - let newe add e 1 - let newf add f 1 - let newg add g 1 - let newh add h 1 - let newi add i 1 - let newj add j 1 - let newk add k 1 - let newl add l 1 - let newm add m 1 - let newn add n 1 - let newo add o 1 - let newp add p 1 - let newq add q 1 - let newr add r 1 - let news add s 1 - let newt add t 1 - - return call many_args newcount newa newb newc newd newe newf newg newh \ - newi newj newk newl newm newn newo newp newq newr news newt -end function - -many_args_tail: -function count a b c d e f g h i j k l m n o p q r s t - - let result 0 - ifle count 0 - set result add result a - set result add result b - set result add result c - set result add result d - set result add result e - set result add result f - set result add result g - set result add result h - set result add result i - set result add result j - set result add result k - set result add result l - set result add result m - set result add result n - set result add result o - set result add result p - set result add result q - set result add result r - set result add result s - set result add result t - return result - end if - - let newcount sub count 1 - let newa add a 1 - let newb add b 1 - let newc add c 1 - let newd add d 1 - let newe add e 1 - let newf add f 1 - let newg add g 1 - let newh add h 1 - let newi add i 1 - let newj add j 1 - let newk add k 1 - let newl add l 1 - let newm add m 1 - let newn add n 1 - let newo add o 1 - let newp add p 1 - let newq add q 1 - let newr add r 1 - let news add s 1 - let newt add t 1 - - tail-call many_args_tail newcount newa newb newc newd newe newf newg newh \ - newi newj newk newl newm newn newo newp newq newr news newt -end function - -print_args: -function a b c d e f g h i j k l m n o p q r s t u - call printf print_args_fmt a b c d e f g h i j k l m n o p q r s t u - return 0 -end function - -main: -function argc argv - let x call many_locals 1 - call printf format 1 x - - set x call many_locals -20 - call printf format -20 x - - call print_args 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 - - set x call many_args 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 - call printf format1 x - - set x call many_args_tail 1000000 1 2 3 4 5 6 7 8 9 10 11 \ - 12 13 14 15 16 17 18 19 20 - call printf format2 x - - return 0 -end function diff --git a/test/test b/test/test index 8caf619..077cdc0 100755 --- a/test/test +++ b/test/test @@ -57,7 +57,11 @@ add_test1 'bitwise' add_test1 'plusminus' -add_test1 'many-vars' +add_test1 'many-args' + +add_test1 'many-args-tail' + +add_test1 'many-locals' add_test1 'mul' -- 2.11.4.GIT