diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-05-19 09:54:40 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-05-19 09:54:40 +0000 |
commit | be4d6e42dfa287b93b1a35ec820ab2a5aaf8c7ec (patch) | |
tree | c51b66e9154bc64cf4fd4191251f29d102928841 /ia32/PrintAsm.ml | |
parent | 60e1fd71c7e97b2214daf574e0f41b55a3e0bceb (diff) | |
download | compcert-be4d6e42dfa287b93b1a35ec820ab2a5aaf8c7ec.tar.gz compcert-be4d6e42dfa287b93b1a35ec820ab2a5aaf8c7ec.zip |
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.ml | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/ia32/PrintAsm.ml b/ia32/PrintAsm.ml index 5ee4d010..88205155 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) -> |