summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2003-06-30 15:32:45 +0000
committerXavier Leroy <xavier.leroy@inria.fr>2003-06-30 15:32:45 +0000
commit2798826120084410c02b259f4410050dd9eb19ea (patch)
treef344c57e8f1dd13aea163680b703a444ca8be9c2
parente8e8d336241a1cc1cac6253077ab9ee9621fe189 (diff)
Petite optimisation pour le Pentium 4
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5637 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--asmcomp/i386/emit.mlp3
-rw-r--r--asmcomp/i386/emit_nt.mlp2
2 files changed, 5 insertions, 0 deletions
diff --git a/asmcomp/i386/emit.mlp b/asmcomp/i386/emit.mlp
index 245feadcb..840dab875 100644
--- a/asmcomp/i386/emit.mlp
+++ b/asmcomp/i386/emit.mlp
@@ -141,6 +141,9 @@ let emit_addressing addr r n =
| Iindexed2 d ->
if d <> 0 then emit_int d;
`({emit_reg r.(n)}, {emit_reg r.(n+1)})`
+ | Iscaled(2, d) ->
+ if d <> 0 then emit_int d;
+ `({emit_reg r.(n)}, {emit_reg r.(n)})`
| Iscaled(scale, d) ->
if d <> 0 then emit_int d;
`(, {emit_reg r.(n)}, {emit_int scale})`
diff --git a/asmcomp/i386/emit_nt.mlp b/asmcomp/i386/emit_nt.mlp
index 2a6bb7519..2eb9de80b 100644
--- a/asmcomp/i386/emit_nt.mlp
+++ b/asmcomp/i386/emit_nt.mlp
@@ -126,6 +126,8 @@ let emit_addressing addr r n =
`[{emit_reg r.(n)}{emit_signed_int d}]`
| Iindexed2 d ->
`[{emit_reg r.(n)}+{emit_reg r.(n+1)}{emit_signed_int d}]`
+ | Iscaled(2, d) ->
+ `[{emit_reg r.(n)}+{emit_reg r.(n)}{emit_signed_int d}]`
| Iscaled(scale, d) ->
`[{emit_reg r.(n)}*{emit_int scale}{emit_signed_int d}]`
| Iindexed2scaled(scale, d) ->