diff options
| author | Xavier Leroy <xavier.leroy@inria.fr> | 1998-10-20 15:27:27 +0000 |
|---|---|---|
| committer | Xavier Leroy <xavier.leroy@inria.fr> | 1998-10-20 15:27:27 +0000 |
| commit | 59cb8750d21154c767d7224cd0f726b5da62d59b (patch) | |
| tree | 3d85248db50216bc3639b9746818e40ece74fa5d /asmcomp/sparc/emit.mlp | |
| parent | 44f468cd12417c153342dbcac498ada11355886f (diff) | |
| download | ocaml-59cb8750d21154c767d7224cd0f726b5da62d59b.tar.gz | |
Simplification des modes d'adressage: suppression du mode Iindexed2, inefficace et genant le bon scheduling
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2133 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmcomp/sparc/emit.mlp')
| -rw-r--r-- | asmcomp/sparc/emit.mlp | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/asmcomp/sparc/emit.mlp b/asmcomp/sparc/emit.mlp index 888c279d77..a83219933b 100644 --- a/asmcomp/sparc/emit.mlp +++ b/asmcomp/sparc/emit.mlp @@ -115,18 +115,6 @@ let emit_load instr addr arg dst = ` or %g1, %lo({emit_int ofs}), %g1\n`; ` {emit_string instr} [{emit_reg arg.(0)} + %g1], {emit_reg dst}\n` end - | Iindexed2 ofs -> - if ofs = 0 then - ` {emit_string instr} [{emit_reg arg.(0)} + {emit_reg arg.(1)}], {emit_reg dst}\n` - else if is_immediate ofs then begin - ` add {emit_reg arg.(1)}, {emit_int ofs}, %g1\n`; - ` {emit_string instr} [{emit_reg arg.(0)} + %g1], {emit_reg dst}\n` - end else begin - ` sethi %hi({emit_int ofs}), %g1\n`; - ` or %g1, %lo({emit_int ofs}), %g1\n`; - ` add {emit_reg arg.(1)}, %g1, %g1\n`; - ` {emit_string instr} [{emit_reg arg.(0)} + %g1], {emit_reg dst}\n` - end (* Output a store *) @@ -146,18 +134,6 @@ let emit_store instr addr arg src = ` or %g1, %lo({emit_int ofs}), %g1\n`; ` {emit_string instr} {emit_reg src}, [{emit_reg arg.(1)} + %g1]\n` end - | Iindexed2 ofs -> - if ofs = 0 then - ` {emit_string instr} {emit_reg src}, [{emit_reg arg.(1)} + {emit_reg arg.(2)}]\n` - else if is_immediate ofs then begin - ` add {emit_reg arg.(2)}, {emit_int ofs}, %g1\n`; - ` {emit_string instr} {emit_reg src}, [{emit_reg arg.(1)} + %g1]\n` - end else begin - ` sethi %hi({emit_int ofs}), %g1\n`; - ` or %g1, %lo({emit_int ofs}), %g1\n`; - ` add {emit_reg arg.(2)}, %g1, %g1\n`; - ` {emit_string instr} {emit_reg src}, [{emit_reg arg.(1)} + %g1]\n` - end (* Record live pointers at call points *) @@ -550,9 +526,7 @@ let is_one_instr i = | Iconst_int n -> is_native_immediate n | Istackoffset _ -> true | Iload(_, Iindexed n) -> i.res.(0).typ <> Float & is_immediate n - | Iload(_, Iindexed2 n) -> i.res.(0).typ <> Float & n = 0 | Istore(_, Iindexed n) -> i.arg.(0).typ <> Float & is_immediate n - | Istore(_, Iindexed2 n) -> i.arg.(0).typ <> Float & n = 0 | Iintop(op) -> is_one_instr_op op | Iintop_imm(op, _) -> is_one_instr_op op | Iaddf | Isubf | Imulf | Idivf -> true |
