summaryrefslogtreecommitdiff
path: root/ia32/PrintAsm.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-05-19 09:54:40 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-05-19 09:54:40 +0000
commitbe4d6e42dfa287b93b1a35ec820ab2a5aaf8c7ec (patch)
treec51b66e9154bc64cf4fd4191251f29d102928841 /ia32/PrintAsm.ml
parent60e1fd71c7e97b2214daf574e0f41b55a3e0bceb (diff)
Merge of the float32 branch:
- added RTL type "Tsingle" - ABI-compatible passing of single-precision floats on ARM and x86 git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2260 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'ia32/PrintAsm.ml')
-rw-r--r--ia32/PrintAsm.ml12
1 files changed, 4 insertions, 8 deletions
diff --git a/ia32/PrintAsm.ml b/ia32/PrintAsm.ml
index 5ee4d01..8820515 100644
--- a/ia32/PrintAsm.ml
+++ b/ia32/PrintAsm.ml
@@ -281,7 +281,7 @@ let print_annot_val oc txt args res =
| [IR src], [IR dst] ->
if dst <> src then fprintf oc " movl %a, %a\n" ireg src ireg dst
| [FR src], [FR dst] ->
- if dst <> src then fprintf oc " movsd %a, %a\n" freg src freg dst
+ if dst <> src then fprintf oc " movapd %a, %a\n" freg src freg dst
| _, _ -> assert false
(* Handling of memcpy *)
@@ -442,7 +442,7 @@ let print_builtin_inline oc name args res =
| "__builtin_fabs", [FR a1], [FR res] ->
need_masks := true;
if a1 <> res then
- fprintf oc " movsd %a, %a\n" freg a1 freg res;
+ fprintf oc " movapd %a, %a\n" freg a1 freg res;
fprintf oc " andpd %a, %a\n" raw_symbol "__absd_mask" freg res
| "__builtin_fsqrt", [FR a1], [FR res] ->
fprintf oc " sqrtsd %a, %a\n" freg a1 freg res
@@ -452,7 +452,7 @@ let print_builtin_inline oc name args res =
else if res = a2 then
fprintf oc " maxsd %a, %a\n" freg a1 freg res
else begin
- fprintf oc " movsd %a, %a\n" freg a1 freg res;
+ fprintf oc " movapd %a, %a\n" freg a1 freg res;
fprintf oc " maxsd %a, %a\n" freg a2 freg res
end
| "__builtin_fmin", [FR a1; FR a2], [FR res] ->
@@ -461,7 +461,7 @@ let print_builtin_inline oc name args res =
else if res = a2 then
fprintf oc " minsd %a, %a\n" freg a1 freg res
else begin
- fprintf oc " movsd %a, %a\n" freg a1 freg res;
+ fprintf oc " movapd %a, %a\n" freg a1 freg res;
fprintf oc " minsd %a, %a\n" freg a2 freg res
end
(* 64-bit integer arithmetic *)
@@ -531,10 +531,6 @@ let print_instruction oc = function
fprintf oc " movl %a, %a\n" addressing a ireg rd
| Pmov_mr(a, r1) ->
fprintf oc " movl %a, %a\n" ireg r1 addressing a
- | Pmovd_fr(rd, r1) ->
- fprintf oc " movd %a, %a\n" ireg r1 freg rd
- | Pmovd_rf(rd, r1) ->
- fprintf oc " movd %a, %a\n" freg r1 ireg rd
| Pmovsd_ff(rd, r1) ->
fprintf oc " movapd %a, %a\n" freg r1 freg rd
| Pmovsd_fi(rd, n) ->