diff options
-rw-r--r-- | mppa_k1c/Asm.v | 16 | ||||
-rw-r--r-- | mppa_k1c/Asmblock.v | 16 | ||||
-rw-r--r-- | mppa_k1c/Asmblockdeps.v | 6 | ||||
-rw-r--r-- | mppa_k1c/Asmblockgen.v | 24 | ||||
-rw-r--r-- | mppa_k1c/PostpassScheduling.v | 1 | ||||
-rw-r--r-- | mppa_k1c/PostpassSchedulingOracle.ml | 18 | ||||
-rw-r--r-- | mppa_k1c/SelectLong.v | 17 | ||||
-rw-r--r-- | mppa_k1c/SelectLong.vp | 17 | ||||
-rw-r--r-- | mppa_k1c/SelectLongproof.v | 16 | ||||
-rw-r--r-- | mppa_k1c/TargetPrinter.ml | 10 | ||||
-rw-r--r-- | runtime/Makefile | 6 | ||||
-rw-r--r-- | test/mppa/instr/faddw.c | 4 | ||||
-rw-r--r-- | test/mppa/instr/fmulw.c | 2 | ||||
-rw-r--r-- | test/mppa/instr/fnegw.c | 2 | ||||
-rw-r--r-- | test/mppa/instr/fsbfw.c | 2 |
15 files changed, 123 insertions, 34 deletions
diff --git a/mppa_k1c/Asm.v b/mppa_k1c/Asm.v index 7c735bf1..d930b168 100644 --- a/mppa_k1c/Asm.v +++ b/mppa_k1c/Asm.v @@ -103,11 +103,17 @@ Inductive instruction : Type := | Pfnegw (rd rs: ireg) (**r float negate word *)
| Pfnarrowdw (rd rs: ireg) (**r float narrow 64 -> 32 bits *)
| Pfwidenlwd (rd rs: ireg) (**r float widen 32 -> 64 bits *)
- | Pfloatwrnsz (rd rs: ireg) (**r Floating Point Conversion from integer *)
+ | Pfloatwrnsz (rd rs: ireg) (**r Floating Point Conversion from integer (32 -> 32) *)
+ | Pfloatuwrnsz (rd rs: ireg) (**r Floating Point Conversion from integer (u32 -> 32) *)
| Pfloatudrnsz (rd rs: ireg) (**r Floating Point Conversion from unsigned integer (64 bits) *)
+ | Pfloatudrnsz_i32 (rd rs: ireg) (**r Floating Point Conversion from unsigned integer (32 bits) *)
| Pfloatdrnsz (rd rs: ireg) (**r Floating Point Conversion from integer (64 bits) *)
+ | Pfloatdrnsz_i32 (rd rs: ireg) (**r Floating Point Conversion from integer (32 bits) *)
| Pfixedwrzz (rd rs: ireg) (**r Integer conversion from floating point *)
- | Pfixeddrzz (rd rs: ireg) (**r Integer conversion from floating point (64 bits) *)
+ | Pfixeddrzz (rd rs: ireg) (**r Integer conversion from floating point (i64 -> 64 bits) *)
+ | Pfixeddrzz_i32 (rd rs: ireg) (**r Integer conversion from floating point (i32 -> f64) *)
+ | Pfixedudrzz (rd rs: ireg) (**r unsigned Integer conversion from floating point (u64 -> 64 bits) *)
+ | Pfixedudrzz_i32 (rd rs: ireg) (**r unsigned Integer conversion from floating point (u32 -> 64 bits) *)
(** Arith RI32 *)
| Pmake (rd: ireg) (imm: int) (**r load immediate *)
@@ -216,11 +222,17 @@ Definition basic_to_instruction (b: basic) := | PArithRR Asmblock.Pfnegw rd rs => Pfnegw rd rs
| PArithRR Asmblock.Pfnarrowdw rd rs => Pfnarrowdw rd rs
| PArithRR Asmblock.Pfwidenlwd rd rs => Pfwidenlwd rd rs
+ | PArithRR Asmblock.Pfloatuwrnsz rd rs => Pfloatuwrnsz rd rs
| PArithRR Asmblock.Pfloatwrnsz rd rs => Pfloatwrnsz rd rs
| PArithRR Asmblock.Pfloatudrnsz rd rs => Pfloatudrnsz rd rs
| PArithRR Asmblock.Pfloatdrnsz rd rs => Pfloatdrnsz rd rs
+ | PArithRR Asmblock.Pfloatudrnsz_i32 rd rs => Pfloatudrnsz_i32 rd rs
+ | PArithRR Asmblock.Pfloatdrnsz_i32 rd rs => Pfloatdrnsz_i32 rd rs
| PArithRR Asmblock.Pfixedwrzz rd rs => Pfixedwrzz rd rs
| PArithRR Asmblock.Pfixeddrzz rd rs => Pfixeddrzz rd rs
+ | PArithRR Asmblock.Pfixedudrzz rd rs => Pfixedudrzz rd rs
+ | PArithRR Asmblock.Pfixeddrzz_i32 rd rs => Pfixeddrzz_i32 rd rs
+ | PArithRR Asmblock.Pfixedudrzz_i32 rd rs => Pfixedudrzz_i32 rd rs
(* RI32 *)
| PArithRI32 Asmblock.Pmake rd imm => Pmake rd imm
diff --git a/mppa_k1c/Asmblock.v b/mppa_k1c/Asmblock.v index cade1ba8..a5c7f495 100644 --- a/mppa_k1c/Asmblock.v +++ b/mppa_k1c/Asmblock.v @@ -287,11 +287,17 @@ Inductive arith_name_rr : Type := | Pfnegw (**r float negate word *) | Pfnarrowdw (**r float narrow 64 -> 32 bits *) | Pfwidenlwd (**r Floating Point widen from 32 bits to 64 bits *) - | Pfloatwrnsz (**r Floating Point Conversion from integer (int -> single) *) - | Pfloatudrnsz (**r Floating Point Conversion from unsigned integer (ulong -> float) *) + | Pfloatwrnsz (**r Floating Point conversion from integer (int -> SINGLE) *) + | Pfloatuwrnsz (**r Floating Point conversion from integer (unsigned int -> SINGLE) *) + | Pfloatudrnsz (**r Floating Point Conversion from integer (unsigned long -> float) *) + | Pfloatudrnsz_i32 (**r Floating Point Conversion from integer (unsigned int -> float) *) | Pfloatdrnsz (**r Floating Point Conversion from integer (long -> float) *) + | Pfloatdrnsz_i32 (**r Floating Point Conversion from integer (int -> float) *) | Pfixedwrzz (**r Integer conversion from floating point (single -> int) *) | Pfixeddrzz (**r Integer conversion from floating point (float -> long) *) + | Pfixedudrzz (**r Integer conversion from floating point (float -> unsigned long) *) + | Pfixeddrzz_i32 (**r Integer conversion from floating point (float -> int) *) + | Pfixedudrzz_i32 (**r Integer conversion from floating point (float -> unsigned int) *) . Inductive arith_name_ri32 : Type := @@ -936,10 +942,16 @@ Definition exec_arith_instr (ai: ar_instruction) (rs: regset) (m: mem) : regset | Pfnarrowdw => rs#d <- (Val.singleoffloat rs#s) | Pfwidenlwd => rs#d <- (Val.floatofsingle rs#s) | Pfloatwrnsz => rs#d <- (match Val.singleofint rs#s with Some f => f | _ => Vundef end) + | Pfloatuwrnsz => rs#d <- (match Val.singleofintu rs#s with Some f => f | _ => Vundef end) | Pfloatudrnsz => rs#d <- (match Val.floatoflongu rs#s with Some f => f | _ => Vundef end) + | Pfloatudrnsz_i32 => rs#d <- (match Val.floatofintu rs#s with Some f => f | _ => Vundef end) | Pfloatdrnsz => rs#d <- (match Val.floatoflong rs#s with Some f => f | _ => Vundef end) + | Pfloatdrnsz_i32 => rs#d <- (match Val.floatofint rs#s with Some f => f | _ => Vundef end) | Pfixedwrzz => rs#d <- (match Val.intofsingle rs#s with Some i => i | _ => Vundef end) | Pfixeddrzz => rs#d <- (match Val.longoffloat rs#s with Some i => i | _ => Vundef end) + | Pfixeddrzz_i32 => rs#d <- (match Val.intoffloat rs#s with Some i => i | _ => Vundef end) + | Pfixedudrzz => rs#d <- (match Val.longuoffloat rs#s with Some i => i | _ => Vundef end) + | Pfixedudrzz_i32 => rs#d <- (match Val.intuoffloat rs#s with Some i => i | _ => Vundef end) end | PArithRI32 n d i => diff --git a/mppa_k1c/Asmblockdeps.v b/mppa_k1c/Asmblockdeps.v index 4d1a0d38..ee087d44 100644 --- a/mppa_k1c/Asmblockdeps.v +++ b/mppa_k1c/Asmblockdeps.v @@ -117,10 +117,16 @@ Definition arith_eval (ao: arith_op) (l: list value) := | Pfnarrowdw => Some (Val (Val.singleoffloat v)) | Pfwidenlwd => Some (Val (Val.floatofsingle v)) | Pfloatwrnsz => Some (Val (match Val.singleofint v with Some f => f | _ => Vundef end)) + | Pfloatuwrnsz => Some (Val (match Val.singleofintu v with Some f => f | _ => Vundef end)) | Pfloatudrnsz => Some (Val (match Val.floatoflongu v with Some f => f | _ => Vundef end)) | Pfloatdrnsz => Some (Val (match Val.floatoflong v with Some f => f | _ => Vundef end)) + | Pfloatudrnsz_i32 => Some (Val (match Val.floatofintu v with Some f => f | _ => Vundef end)) + | Pfloatdrnsz_i32 => Some (Val (match Val.floatofint v with Some f => f | _ => Vundef end)) | Pfixedwrzz => Some (Val (match Val.intofsingle v with Some i => i | _ => Vundef end)) | Pfixeddrzz => Some (Val (match Val.longoffloat v with Some i => i | _ => Vundef end)) + | Pfixedudrzz => Some (Val (match Val.longuoffloat v with Some i => i | _ => Vundef end)) + | Pfixeddrzz_i32 => Some (Val (match Val.intoffloat v with Some i => i | _ => Vundef end)) + | Pfixedudrzz_i32 => Some (Val (match Val.intuoffloat v with Some i => i | _ => Vundef end)) end | OArithRI32 n i, [] => diff --git a/mppa_k1c/Asmblockgen.v b/mppa_k1c/Asmblockgen.v index 95bb5a36..8dfa2cee 100644 --- a/mppa_k1c/Asmblockgen.v +++ b/mppa_k1c/Asmblockgen.v @@ -579,18 +579,42 @@ Definition transl_op | Osingleofint, a1 :: nil => do rd <- freg_of res; do rs <- ireg_of a1; OK (Pfloatwrnsz rd rs ::i k) + | Osingleofintu, a1 :: nil => + do rd <- freg_of res; do rs <- ireg_of a1; + OK (Pfloatuwrnsz rd rs ::i k) | Ofloatoflong, a1 :: nil => do rd <- freg_of res; do rs <- ireg_of a1; OK (Pfloatdrnsz rd rs ::i k) | Ofloatoflongu, a1 :: nil => do rd <- freg_of res; do rs <- ireg_of a1; OK (Pfloatudrnsz rd rs ::i k) + | Ofloatofint, a1 :: nil => + do rd <- freg_of res; do rs <- ireg_of a1; + OK (Pfloatdrnsz_i32 rd rs ::i k) + | Ofloatofintu, a1 :: nil => + do rd <- freg_of res; do rs <- ireg_of a1; + OK (Pfloatudrnsz_i32 rd rs ::i k) + (* | Ofloatofint, a1 :: nil => + do rd <- freg_of res; do rs <- ireg_of a1; + OK (Pfloatwrnsz rd rs ::i k) + | Ofloatofintu, a1 :: nil => + do rd <- freg_of res; do rs <- ireg_of a1; + OK (Pfloatuwrnsz rd rs ::i k) *) (* FIXME - Ofloatofint and Ofloatofintu are currently incorrect *) | Ointofsingle, a1 :: nil => do rd <- ireg_of res; do rs <- freg_of a1; OK (Pfixedwrzz rd rs ::i k) | Olongoffloat, a1 :: nil => do rd <- ireg_of res; do rs <- freg_of a1; OK (Pfixeddrzz rd rs ::i k) + | Ointoffloat, a1 :: nil => + do rd <- ireg_of res; do rs <- freg_of a1; + OK (Pfixeddrzz_i32 rd rs ::i k) + | Olonguoffloat, a1 :: nil => + do rd <- ireg_of res; do rs <- freg_of a1; + OK (Pfixedudrzz rd rs ::i k) + | Ointuoffloat, a1 :: nil => + do rd <- ireg_of res; do rs <- freg_of a1; + OK (Pfixedudrzz_i32 rd rs ::i k) | Ofloatofsingle, a1 :: nil => do rd <- freg_of res; do rs <- freg_of a1; diff --git a/mppa_k1c/PostpassScheduling.v b/mppa_k1c/PostpassScheduling.v index 6bf97279..fa0ebfe6 100644 --- a/mppa_k1c/PostpassScheduling.v +++ b/mppa_k1c/PostpassScheduling.v @@ -13,7 +13,6 @@ Require Import Coqlib Errors AST Integers. Require Import Asmblock Axioms Memory Globalenvs. Require Import Asmblockdeps Asmblockgenproof0. -Require Import ImpDep. Local Open Scope error_monad_scope. diff --git a/mppa_k1c/PostpassSchedulingOracle.ml b/mppa_k1c/PostpassSchedulingOracle.ml index 54a27966..d9a60fb4 100644 --- a/mppa_k1c/PostpassSchedulingOracle.ml +++ b/mppa_k1c/PostpassSchedulingOracle.ml @@ -40,10 +40,16 @@ let arith_rr_str = function | Pfnarrowdw -> "Pfnarrowdw" | Pfwidenlwd -> "Pfwidenlwd" | Pfloatwrnsz -> "Pfloatwrnsz" + | Pfloatuwrnsz -> "Pfloatuwrnsz" + | Pfloatudrnsz_i32 -> "Pfloatudrnsz_i32" | Pfloatudrnsz -> "Pfloatudrnsz" | Pfloatdrnsz -> "Pfloatdrnsz" + | Pfloatdrnsz_i32 -> "Pfloatdrnsz_i32" | Pfixedwrzz -> "Pfixedwrzz" | Pfixeddrzz -> "Pfixeddrzz" + | Pfixedudrzz -> "Pfixedudrzz" + | Pfixeddrzz_i32 -> "Pfixeddrzz_i32" + | Pfixedudrzz_i32 -> "Pfixedudrzz_i32" let arith_rrr_str = function | Pcompw it -> "Pcompw" @@ -365,7 +371,7 @@ type real_instruction = (* FPU *) | Fabsd | Fabsw | Fnegw | Fnegd | Faddd | Faddw | Fsbfd | Fsbfw | Fmuld | Fmulw - | Fnarrowdw | Fwidenlwd | Floatwz | Floatdz | Floatudz | Fixedwz | Fixeddz + | Fnarrowdw | Fwidenlwd | Floatwz | Floatuwz | Floatdz | Floatudz | Fixedwz | Fixeddz | Fixedudz let ab_inst_to_real = function | "Paddw" | "Paddiw" | "Pcvtl2w" -> Addw @@ -395,10 +401,16 @@ let ab_inst_to_real = function | "Pfnarrowdw" -> Fnarrowdw | "Pfwidenlwd" -> Fwidenlwd | "Pfloatwrnsz" -> Floatwz + | "Pfloatuwrnsz" -> Floatuwz | "Pfloatdrnsz" -> Floatdz + | "Pfloatdrnsz_i32" -> Floatdz | "Pfloatudrnsz" -> Floatudz + | "Pfloatudrnsz_i32" -> Floatudz | "Pfixedwrzz" -> Fixedwz | "Pfixeddrzz" -> Fixeddz + | "Pfixedudrzz" -> Fixedudz + | "Pfixeddrzz_i32" -> Fixeddz + | "Pfixedudrzz_i32" -> Fixedudz | "Plb" -> Lbs | "Plbu" -> Lbz @@ -469,7 +481,7 @@ let rec_to_usage r = | Nop -> alu_nop | Sraw | Srlw | Sllw | Srad | Srld | Slld -> (match encoding with None | Some U6 -> alu_tiny | _ -> raise InvalidEncoding) | Sxwd | Zxwd -> (match encoding with None -> alu_lite | _ -> raise InvalidEncoding) - | Fixedwz | Floatwz | Fixeddz | Floatdz | Floatudz -> mau + | Fixedwz | Floatwz | Floatuwz | Fixeddz | Fixedudz | Floatdz | Floatudz -> mau | Lbs | Lbz | Lhs | Lhz | Lws | Ld -> (match encoding with None | Some U6 | Some S10 -> lsu_data | Some U27L5 | Some U27L10 -> lsu_data_x @@ -490,7 +502,7 @@ let real_inst_to_latency = function | Addd | Andd | Compd | Ord | Sbfd | Srad | Srld | Slld | Xord | Make | Sxwd | Zxwd -> 1 - | Floatwz | Fixedwz | Floatdz | Floatudz | Fixeddz -> 4 + | Floatwz | Floatuwz | Fixedwz | Floatdz | Floatudz | Fixeddz | Fixedudz -> 4 | Mulw | Muld -> 2 (* FIXME - WORST CASE. If it's S10 then it's only 1 *) | Lbs | Lbz | Lhs | Lhz | Lws | Ld | Sb | Sh | Sw | Sd diff --git a/mppa_k1c/SelectLong.v b/mppa_k1c/SelectLong.v index f2aa6be2..ea42b9c3 100644 --- a/mppa_k1c/SelectLong.v +++ b/mppa_k1c/SelectLong.v @@ -755,20 +755,29 @@ Definition floatoflongu (e: expr) := if Archi.splitlong then SplitLong.floatoflongu e else Eop Ofloatoflongu (e:::Enil). -Definition longofsingle (e: expr) := +(* FIXME - normally we can have it natively, but in practice it requires proving that we can do Fwidenlwd + fixedd.rz.. To do later *) +Definition longofsingle (e: expr) := SplitLong.longofsingle e. +(* if Archi.splitlong then SplitLong.longofsingle e else Eop Olongofsingle (e:::Enil). +*) -Definition longuofsingle (e: expr) := +Definition longuofsingle (e: expr) := SplitLong.longuofsingle e. +(* if Archi.splitlong then SplitLong.longuofsingle e else Eop Olonguofsingle (e:::Enil). +*) -Definition singleoflong (e: expr) := +Definition singleoflong (e: expr) := SplitLong.singleoflong e. +(* if Archi.splitlong then SplitLong.singleoflong e else Eop Osingleoflong (e:::Enil). +*) -Definition singleoflongu (e: expr) := +Definition singleoflongu (e: expr) := SplitLong.singleoflongu e. +(* if Archi.splitlong then SplitLong.singleoflongu e else Eop Osingleoflongu (e:::Enil). +*) End SELECT. diff --git a/mppa_k1c/SelectLong.vp b/mppa_k1c/SelectLong.vp index 26735c99..a3aefb15 100644 --- a/mppa_k1c/SelectLong.vp +++ b/mppa_k1c/SelectLong.vp @@ -341,20 +341,29 @@ Definition floatoflongu (e: expr) := if Archi.splitlong then SplitLong.floatoflongu e else Eop Ofloatoflongu (e:::Enil). -Definition longofsingle (e: expr) := +(* FIXME - normally we can have it natively, but in practice it requires proving that we can do Fwidenlwd + fixedd.rz.. To do later *) +Definition longofsingle (e: expr) := SplitLong.longofsingle e. +(* if Archi.splitlong then SplitLong.longofsingle e else Eop Olongofsingle (e:::Enil). +*) -Definition longuofsingle (e: expr) := +Definition longuofsingle (e: expr) := SplitLong.longuofsingle e. +(* if Archi.splitlong then SplitLong.longuofsingle e else Eop Olonguofsingle (e:::Enil). +*) -Definition singleoflong (e: expr) := +Definition singleoflong (e: expr) := SplitLong.singleoflong e. +(* if Archi.splitlong then SplitLong.singleoflong e else Eop Osingleoflong (e:::Enil). +*) -Definition singleoflongu (e: expr) := +Definition singleoflongu (e: expr) := SplitLong.singleoflongu e. +(* if Archi.splitlong then SplitLong.singleoflongu e else Eop Osingleoflongu (e:::Enil). +*) End SELECT. diff --git a/mppa_k1c/SelectLongproof.v b/mppa_k1c/SelectLongproof.v index d12fb9ae..44846a6f 100644 --- a/mppa_k1c/SelectLongproof.v +++ b/mppa_k1c/SelectLongproof.v @@ -582,30 +582,30 @@ Qed. Theorem eval_longofsingle: partial_unary_constructor_sound longofsingle Val.longofsingle. Proof. - unfold longofsingle; red; intros. destruct Archi.splitlong eqn:SL. + unfold longofsingle; red; intros. (* destruct Archi.splitlong eqn:SL. *) eapply SplitLongproof.eval_longofsingle; eauto. - TrivialExists. +(* TrivialExists. *) Qed. Theorem eval_longuofsingle: partial_unary_constructor_sound longuofsingle Val.longuofsingle. Proof. - unfold longuofsingle; red; intros. destruct Archi.splitlong eqn:SL. + unfold longuofsingle; red; intros. (* destruct Archi.splitlong eqn:SL. *) eapply SplitLongproof.eval_longuofsingle; eauto. - TrivialExists. +(* TrivialExists. *) Qed. Theorem eval_singleoflong: partial_unary_constructor_sound singleoflong Val.singleoflong. Proof. - unfold singleoflong; red; intros. destruct Archi.splitlong eqn:SL. + unfold singleoflong; red; intros. (* destruct Archi.splitlong eqn:SL. *) eapply SplitLongproof.eval_singleoflong; eauto. - TrivialExists. +(* TrivialExists. *) Qed. Theorem eval_singleoflongu: partial_unary_constructor_sound singleoflongu Val.singleoflongu. Proof. - unfold singleoflongu; red; intros. destruct Archi.splitlong eqn:SL. + unfold singleoflongu; red; intros. (* destruct Archi.splitlong eqn:SL. *) eapply SplitLongproof.eval_singleoflongu; eauto. - TrivialExists. +(* TrivialExists. *) Qed. End CMCONSTR. diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml index c1339af5..8d053cde 100644 --- a/mppa_k1c/TargetPrinter.ml +++ b/mppa_k1c/TargetPrinter.ml @@ -302,16 +302,20 @@ module Target (*: TARGET*) = fprintf oc " fnarrowdw %a = %a\n" ireg rd ireg rs | Pfwidenlwd(rd, rs) -> fprintf oc " fwidenlwd %a = %a\n" ireg rd ireg rs + | Pfloatuwrnsz(rd, rs) -> + fprintf oc " floatuw.rn.s %a = %a, 0\n" ireg rd ireg rs | Pfloatwrnsz(rd, rs) -> fprintf oc " floatw.rn.s %a = %a, 0\n" ireg rd ireg rs - | Pfloatudrnsz(rd, rs) -> + | Pfloatudrnsz(rd, rs) | Pfloatudrnsz_i32(rd, rs) -> fprintf oc " floatud.rn.s %a = %a, 0\n" ireg rd ireg rs - | Pfloatdrnsz(rd, rs) -> + | Pfloatdrnsz(rd, rs) | Pfloatdrnsz_i32(rd, rs) -> fprintf oc " floatd.rn.s %a = %a, 0\n" ireg rd ireg rs | Pfixedwrzz(rd, rs) -> fprintf oc " fixedw.rz %a = %a, 0\n" ireg rd ireg rs - | Pfixeddrzz(rd, rs) -> + | Pfixeddrzz(rd, rs) | Pfixeddrzz_i32(rd, rs) -> fprintf oc " fixedd.rz %a = %a, 0\n" ireg rd ireg rs + | Pfixedudrzz(rd, rs) | Pfixedudrzz_i32(rd, rs) -> + fprintf oc " fixedud.rz %a = %a, 0\n" ireg rd ireg rs (* Arith RI32 instructions *) | Pmake (rd, imm) -> diff --git a/runtime/Makefile b/runtime/Makefile index 66ec6fec..f58d4b6a 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -23,7 +23,9 @@ OBJS=i64_dtou.o i64_utod.o i64_utof.o vararg.o else ifeq ($(ARCH),powerpc64) OBJS=i64_dtou.o i64_stof.o i64_utod.o i64_utof.o vararg.o else ifeq ($(ARCH),mppa_k1c) -OBJS=i64_umod.o i64_udiv.o i64_udivmod.o i64_sdiv.o i64_smod.o vararg.o +OBJS=i64_umod.o i64_udiv.o i64_udivmod.o i64_sdiv.o i64_smod.o vararg.o\ + i64_dtos.o i64_dtou.o i64_utod.o i64_utof.o i64_stod.o i64_stof.o +# Missing: i64_utod.o i64_utof.o i64_stod.o i64_stof.o DOMAKE:=$(shell (cd mppa_k1c && make)) else OBJS=i64_dtos.o i64_dtou.o i64_sar.o i64_sdiv.o i64_shl.o \ @@ -66,7 +68,7 @@ $(LIB): $(OBJS) ../ccomp -O2 -S -o $*.s -I./c c/$*.c sed -i -e 's/i64_/__compcert_i64_/g' $*.s $(CASMRUNTIME) -o $*.o $*.s - @rm -f $*.s + @rm $*.s clean:: rm -f *.o $(LIB) *.tmp?.s diff --git a/test/mppa/instr/faddw.c b/test/mppa/instr/faddw.c index a00e9afe..e0e635ae 100644 --- a/test/mppa/instr/faddw.c +++ b/test/mppa/instr/faddw.c @@ -1,5 +1,5 @@ #include "framework.h" -BEGIN_TEST(double) +BEGIN_TEST(float) c = ((float)a + (float)b); -END_TESTF64() +END_TESTF32() diff --git a/test/mppa/instr/fmulw.c b/test/mppa/instr/fmulw.c index 67d645c3..f85eba64 100644 --- a/test/mppa/instr/fmulw.c +++ b/test/mppa/instr/fmulw.c @@ -1,6 +1,6 @@ #include "framework.h" -BEGIN_TEST(double) +BEGIN_TEST(float) { c = ((float)a * (float)b); } diff --git a/test/mppa/instr/fnegw.c b/test/mppa/instr/fnegw.c index acbabf68..fbeaab8e 100644 --- a/test/mppa/instr/fnegw.c +++ b/test/mppa/instr/fnegw.c @@ -1,6 +1,6 @@ #include "framework.h" -BEGIN_TEST(double) +BEGIN_TEST(float) { c = (-(float)a); } diff --git a/test/mppa/instr/fsbfw.c b/test/mppa/instr/fsbfw.c index 835963d5..067c40b5 100644 --- a/test/mppa/instr/fsbfw.c +++ b/test/mppa/instr/fsbfw.c @@ -1,6 +1,6 @@ #include "framework.h" -BEGIN_TEST(double) +BEGIN_TEST(float) { c = ((float)a - (float)b); } |