aboutsummaryrefslogtreecommitdiffstats
path: root/ia32/TargetPrinter.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2016-09-18 10:29:11 +0200
committerXavier Leroy <xavier.leroy@inria.fr>2016-09-18 10:29:11 +0200
commit99554c986d023d00192eb3d1fbfe1c0cc138596e (patch)
treeaf3509d66ed70784e3b1bd0126bbddb17fd59fb3 /ia32/TargetPrinter.ml
parent322f3c865341fdfd5d22ab885b2934a5213ddbaa (diff)
downloadcompcert-99554c986d023d00192eb3d1fbfe1c0cc138596e.tar.gz
compcert-99554c986d023d00192eb3d1fbfe1c0cc138596e.zip
IA32: model integer division and modulus closer to the machine
lib/Integers.v: define division-remainder of a double word by a word ia32/Asm.v: use it to give Pdiv and Pidiv their "true" semantics like in the processor; add Pcltd as an instruction ia32/*: adapt accordingly Additional benefit: Pcltd could be used for an alternate implementation of shrximm.
Diffstat (limited to 'ia32/TargetPrinter.ml')
-rw-r--r--ia32/TargetPrinter.ml4
1 files changed, 2 insertions, 2 deletions
diff --git a/ia32/TargetPrinter.ml b/ia32/TargetPrinter.ml
index 979ac800..4ffb701b 100644
--- a/ia32/TargetPrinter.ml
+++ b/ia32/TargetPrinter.ml
@@ -421,11 +421,11 @@ module Target(System: SYSTEM):TARGET =
fprintf oc " imull %a\n" ireg r1
| Pmul_r(r1) ->
fprintf oc " mull %a\n" ireg r1
+ | Pcltd ->
+ fprintf oc " cltd\n"
| Pdiv(r1) ->
- fprintf oc " xorl %%edx, %%edx\n";
fprintf oc " divl %a\n" ireg r1
| Pidiv(r1) ->
- fprintf oc " cltd\n";
fprintf oc " idivl %a\n" ireg r1
| Pand_rr(rd, r1) ->
fprintf oc " andl %a, %a\n" ireg r1 ireg rd