diff options
| author | Xavier Leroy <xavier.leroy@inria.fr> | 2000-06-25 19:54:50 +0000 |
|---|---|---|
| committer | Xavier Leroy <xavier.leroy@inria.fr> | 2000-06-25 19:54:50 +0000 |
| commit | 07039ae56d575f80af2ef8cbe14010e16f8af51a (patch) | |
| tree | d39831bde94031f0bcff3e096f24fccaad6a160b /testasmcomp | |
| parent | b6c2d415c77c5caefdcc44068e44652ac776128b (diff) | |
| download | ocaml-07039ae56d575f80af2ef8cbe14010e16f8af51a.tar.gz | |
MAJ suite aux modifs recentes sur C--
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@3211 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'testasmcomp')
| -rw-r--r-- | testasmcomp/.depend | 4 | ||||
| -rw-r--r-- | testasmcomp/Makefile | 8 | ||||
| -rw-r--r-- | testasmcomp/lexcmm.mll | 3 | ||||
| -rw-r--r-- | testasmcomp/main.ml | 2 | ||||
| -rw-r--r-- | testasmcomp/parsecmm.mly | 41 | ||||
| -rw-r--r-- | testasmcomp/quicksort.cmm | 4 | ||||
| -rw-r--r-- | testasmcomp/quicksort2.cmm | 8 | ||||
| -rw-r--r-- | testasmcomp/tak.cmm | 8 |
8 files changed, 44 insertions, 34 deletions
diff --git a/testasmcomp/.depend b/testasmcomp/.depend index 988c08f410..282114bc24 100644 --- a/testasmcomp/.depend +++ b/testasmcomp/.depend @@ -10,8 +10,8 @@ main.cmx: ../asmcomp/asmgen.cmx ../utils/clflags.cmx ../asmcomp/compilenv.cmx \ ../asmcomp/emit.cmx lexcmm.cmx parsecmm.cmx parsecmmaux.cmx \ ../asmcomp/printmach.cmx parsecmm.cmo: ../asmcomp/arch.cmo ../asmcomp/cmm.cmi ../utils/misc.cmi \ - ../utils/nativeint.cmi parsecmmaux.cmi parsecmm.cmi + parsecmmaux.cmi parsecmm.cmi parsecmm.cmx: ../asmcomp/arch.cmx ../asmcomp/cmm.cmx ../utils/misc.cmx \ - ../utils/nativeint.cmx parsecmmaux.cmx parsecmm.cmi + parsecmmaux.cmx parsecmm.cmi parsecmmaux.cmo: ../typing/ident.cmi parsecmmaux.cmi parsecmmaux.cmx: ../typing/ident.cmx parsecmmaux.cmi diff --git a/testasmcomp/Makefile b/testasmcomp/Makefile index ef6f42676b..31600b0af9 100644 --- a/testasmcomp/Makefile +++ b/testasmcomp/Makefile @@ -15,8 +15,8 @@ include ../config/Makefile CAMLC=../boot/ocamlrun ../boot/ocamlc -I ../boot -COMPFLAGS=$(INCLUDES) -LINKFLAGS= +COMPFLAGS=$(INCLUDES) -g +LINKFLAGS=-g CAMLYACC=../boot/ocamlyacc YACCFLAGS= CAMLLEX=../boot/ocamlrun ../boot/ocamllex @@ -36,7 +36,7 @@ all: codegen $(PROGS) INCLUDES=-I ../utils -I ../typing -I ../asmcomp OTHEROBJS=../utils/misc.cmo ../utils/config.cmo ../utils/tbl.cmo \ - ../utils/nativeint.cmo ../utils/clflags.cmo ../utils/ccomp.cmo \ + ../utils/clflags.cmo ../utils/ccomp.cmo \ ../utils/config.cmo ../utils/clflags.cmo ../utils/warnings.cmo \ ../parsing/linenum.cmo ../parsing/location.cmo \ ../typing/ident.cmo ../typing/path.cmo ../typing/types.cmo \ @@ -48,7 +48,7 @@ OTHEROBJS=../utils/misc.cmo ../utils/config.cmo ../utils/tbl.cmo \ ../asmcomp/reg.cmo ../asmcomp/mach.cmo ../asmcomp/proc.cmo \ ../asmcomp/closure.cmo ../asmcomp/cmmgen.cmo \ ../asmcomp/printmach.cmo \ - ../asmcomp/selectgen.cmo ../asmcomp/selection.cmo \ + ../asmcomp/selectgen.cmo ../asmcomp/selection.cmo ../asmcomp/comballoc.cmo \ ../asmcomp/liveness.cmo ../asmcomp/spill.cmo ../asmcomp/split.cmo \ ../asmcomp/interf.cmo ../asmcomp/coloring.cmo \ ../asmcomp/reloadgen.cmo ../asmcomp/reload.cmo \ diff --git a/testasmcomp/lexcmm.mll b/testasmcomp/lexcmm.mll index 75e71d1756..0e8432e1c8 100644 --- a/testasmcomp/lexcmm.mll +++ b/testasmcomp/lexcmm.mll @@ -44,11 +44,14 @@ let keyword_table = "exit", EXIT; "extcall", EXTCALL; "float", FLOAT; + "float32", FLOAT32; + "float64", FLOAT64; "floatofint", FLOATOFINT; "function", FUNCTION; "half", HALF; "if", IF; "int", INT; + "int32", INT32; "intoffloat", INTOFFLOAT; "string", KSTRING; "let", LET; diff --git a/testasmcomp/main.ml b/testasmcomp/main.ml index a37e85dc77..062a5f8043 100644 --- a/testasmcomp/main.ml +++ b/testasmcomp/main.ml @@ -21,7 +21,7 @@ let compile_file filename = let lb = Lexing.from_channel ic in try while true do - Asmgen.compile_phrase(Parsecmm.phrase Lexcmm.token lb) + Asmgen.compile_phrase Format.std_formatter (Parsecmm.phrase Lexcmm.token lb) done with End_of_file -> diff --git a/testasmcomp/parsecmm.mly b/testasmcomp/parsecmm.mly index 5ad29f2d4d..b511719a8f 100644 --- a/testasmcomp/parsecmm.mly +++ b/testasmcomp/parsecmm.mly @@ -70,6 +70,8 @@ let access_array base numelt size = %token EXIT %token EXTCALL %token FLOAT +%token FLOAT32 +%token FLOAT64 %token <string> FLOATCONST %token FLOATOFINT %token FUNCTION @@ -83,6 +85,7 @@ let access_array base numelt size = %token <string> IDENT %token IF %token INT +%token INT32 %token <int> INTCONST %token INTOFFLOAT %token KSTRING @@ -174,12 +177,11 @@ expr: | STRING { Cconst_symbol $1 } | POINTER { Cconst_pointer $1 } | IDENT { Cvar(find_ident $1) } + | LBRACKET RBRACKET { Ctuple [] } | LPAREN LET letdef sequence RPAREN { make_letdef $3 $4 } | LPAREN ASSIGN IDENT expr RPAREN { Cassign(find_ident $3, $4) } - | LBRACKET exprlist RBRACKET { Ctuple(List.rev $2) } - | LPAREN APPLY expr expr machtype RPAREN { Cop(Capply $5, [$3; $4]) } - | LPAREN EXTCALL STRING expr machtype RPAREN { Cop(Cextcall($3, $5, true), [$4]) } - | LPAREN LOAD expr machtype RPAREN { Cop(Cload $4, [$3]) } + | LPAREN APPLY expr exprlist machtype RPAREN { Cop(Capply $5, $3 :: List.rev $4) } + | LPAREN EXTCALL STRING exprlist machtype RPAREN { Cop(Cextcall($3, $5, true), List.rev $4) } | LPAREN SUBF expr RPAREN { Cop(Cnegf, [$3]) } | LPAREN SUBF expr expr RPAREN { Cop(Csubf, [$3; $4]) } | LPAREN unaryop expr RPAREN { Cop($2, [$3]) } @@ -194,17 +196,17 @@ expr: | LPAREN TRY sequence WITH bind_ident sequence RPAREN { unbind_ident $5; Ctrywith($3, $5, $6) } | LPAREN ADDRAREF expr expr RPAREN - { Cop(Cload typ_addr, [access_array $3 $4 Arch.size_addr]) } + { Cop(Cload Word, [access_array $3 $4 Arch.size_addr]) } | LPAREN INTAREF expr expr RPAREN - { Cop(Cload typ_int, [access_array $3 $4 Arch.size_int]) } + { Cop(Cload Word, [access_array $3 $4 Arch.size_int]) } | LPAREN FLOATAREF expr expr RPAREN - { Cop(Cload typ_float, [access_array $3 $4 Arch.size_float]) } + { Cop(Cload Double_u, [access_array $3 $4 Arch.size_float]) } | LPAREN ADDRASET expr expr expr RPAREN - { Cop(Cstore, [access_array $3 $4 Arch.size_addr; $5]) } + { Cop(Cstore Word, [access_array $3 $4 Arch.size_addr; $5]) } | LPAREN INTASET expr expr expr RPAREN - { Cop(Cstore, [access_array $3 $4 Arch.size_int; $5]) } + { Cop(Cstore Word, [access_array $3 $4 Arch.size_int; $5]) } | LPAREN FLOATASET expr expr expr RPAREN - { Cop(Cstore, [access_array $3 $4 Arch.size_float; $5]) } + { Cop(Cstore Double_u, [access_array $3 $4 Arch.size_float; $5]) } ; exprlist: exprlist expr { $2 :: $1 } @@ -226,11 +228,17 @@ chunk: | SIGNED BYTE { Byte_signed } | UNSIGNED HALF { Sixteen_unsigned } | SIGNED HALF { Sixteen_signed } + | UNSIGNED INT32 { Thirtytwo_unsigned } + | SIGNED INT32 { Thirtytwo_signed } + | INT { Word } + | ADDR { Word } + | FLOAT32 { Single } + | FLOAT64 { Double } + | FLOAT { Double_u } + ; unaryop: - PROJ INTCONST { Cproj($2, 1) } - | PROJ INTCONST SUBI INTCONST { Cproj($2, $4 - $2 - 1) } - | LOAD chunk { Cloadchunk $2 } + LOAD chunk { Cload $2 } | ALLOC { Calloc } | FLOATOFINT { Cfloatofint } | INTOFFLOAT { Cintoffloat } @@ -238,8 +246,7 @@ unaryop: | ABSF { Cabsf } ; binaryop: - STORE { Cstore } - | STORE chunk { Cstorechunk $2 } + STORE chunk { Cstore $2 } | ADDI { Caddi } | SUBI { Csubi } | MULI { Cmuli } @@ -303,8 +310,8 @@ dataitem: | INTCONST COLON { Cdefine_label $1 } | BYTE INTCONST { Cint8 $2 } | HALF INTCONST { Cint16 $2 } - | INT INTCONST { Cint(Nativeint.from $2) } - | FLOAT FLOATCONST { Cfloat $2 } + | INT INTCONST { Cint(Nativeint.of_int $2) } + | FLOAT FLOATCONST { Cdouble $2 } | ADDR STRING { Csymbol_address $2 } | ADDR INTCONST { Clabel_address $2 } | KSTRING STRING { Cstring $2 } diff --git a/testasmcomp/quicksort.cmm b/testasmcomp/quicksort.cmm index 7b41aca0de..4029da8d15 100644 --- a/testasmcomp/quicksort.cmm +++ b/testasmcomp/quicksort.cmm @@ -38,6 +38,6 @@ (let temp (addraref a i) (addraset a i (addraref a hi)) (addraset a hi temp)) - (app "quicksort" [lo (- i 1) a] unit) - (app "quicksort" [(+ i 1) hi a] unit)) + (app "quicksort" lo (- i 1) a unit) + (app "quicksort" (+ i 1) hi a unit)) [])) diff --git a/testasmcomp/quicksort2.cmm b/testasmcomp/quicksort2.cmm index 9352b0e3a8..85dedf5453 100644 --- a/testasmcomp/quicksort2.cmm +++ b/testasmcomp/quicksort2.cmm @@ -24,13 +24,13 @@ (catch (while 1 (if (>= i hi) exit []) - (if (> (app cmp [(intaref a i) pivot] int) 0) exit []) + (if (> (app cmp (intaref a i) pivot int) 0) exit []) (assign i (+ i 1))) with []) (catch (while 1 (if (<= j lo) exit []) - (if (< (app cmp [(intaref a j) pivot] int) 0) exit []) + (if (< (app cmp (intaref a j) pivot int) 0) exit []) (assign j (- j 1))) with []) (if (< i j) @@ -41,8 +41,8 @@ (let temp (intaref a i) (intaset a i (intaref a hi)) (intaset a hi temp)) - (app "quick" [lo (- i 1) a cmp] unit) - (app "quick" [(+ i 1) hi a cmp] unit)) + (app "quick" lo (- i 1) a cmp unit) + (app "quick" (+ i 1) hi a cmp unit)) [])) (function "quicksort" (lo: int hi: int a: addr) diff --git a/testasmcomp/tak.cmm b/testasmcomp/tak.cmm index 34ad5ab545..cd61ec89be 100644 --- a/testasmcomp/tak.cmm +++ b/testasmcomp/tak.cmm @@ -14,10 +14,10 @@ (function "tak" (x:int y:int z:int) (if (> x y) - (app "tak" [(app "tak" [(- x 1) y z] int) - (app "tak" [(- y 1) z x] int) - (app "tak" [(- z 1) x y] int)] int) + (app "tak" (app "tak" (- x 1) y z int) + (app "tak" (- y 1) z x int) + (app "tak" (- z 1) x y int) int) z)) (function "takmain" (dummy: int) - (app "tak" [18 12 6] int)) + (app "tak" 18 12 6 int)) |
