summaryrefslogtreecommitdiff
path: root/testasmcomp
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2000-06-25 19:54:50 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2000-06-25 19:54:50 +0000
commit07039ae56d575f80af2ef8cbe14010e16f8af51a (patch)
treed39831bde94031f0bcff3e096f24fccaad6a160b /testasmcomp
parentb6c2d415c77c5caefdcc44068e44652ac776128b (diff)
downloadocaml-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/.depend4
-rw-r--r--testasmcomp/Makefile8
-rw-r--r--testasmcomp/lexcmm.mll3
-rw-r--r--testasmcomp/main.ml2
-rw-r--r--testasmcomp/parsecmm.mly41
-rw-r--r--testasmcomp/quicksort.cmm4
-rw-r--r--testasmcomp/quicksort2.cmm8
-rw-r--r--testasmcomp/tak.cmm8
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))