diff options
author | Marcus Arendt <[email protected]> | 2015-01-19 15:12:37 +0100 |
---|---|---|
committer | Marcus Arendt <[email protected]> | 2015-01-19 15:12:37 +0100 |
commit | 677cb69c4c919e40d074df3bae40338a375a4731 (patch) | |
tree | 535ea1255610910c5706c83e38d0cece0e324d8d /lib/hipe/sparc | |
parent | 50a92094372b45c9864afe3418b79605da549122 (diff) | |
parent | 12e0894de1e1a5507b4b088a8bd5f89f8bd25b63 (diff) | |
download | otp-677cb69c4c919e40d074df3bae40338a375a4731.tar.gz otp-677cb69c4c919e40d074df3bae40338a375a4731.tar.bz2 otp-677cb69c4c919e40d074df3bae40338a375a4731.zip |
Merge branch 'mikpe/hipe-fconv-fmove-fixes/OTP-12413' into maint
* mikpe/hipe-fconv-fmove-fixes/OTP-12413:
hipe: rtl: fix phi_remove_pred/2 FP moves
hipe: backends: correct #fconv{} translation
Diffstat (limited to 'lib/hipe/sparc')
-rw-r--r-- | lib/hipe/sparc/hipe_rtl_to_sparc.erl | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/hipe/sparc/hipe_rtl_to_sparc.erl b/lib/hipe/sparc/hipe_rtl_to_sparc.erl index dc001f865e..fd21be3ae7 100644 --- a/lib/hipe/sparc/hipe_rtl_to_sparc.erl +++ b/lib/hipe/sparc/hipe_rtl_to_sparc.erl @@ -85,17 +85,17 @@ conv_insn(I, Map, Data) -> end. conv_fconv(I, Map, Data) -> - %% Dst := (double)Src, where Dst is FP reg and Src is int reg - {Src, Map1} = conv_src(hipe_rtl:fconv_src(I), Map), % exclude imm src + %% Dst := (double)Src, where Dst is FP reg and Src is GP reg or imm + {Src, Map1} = conv_src(hipe_rtl:fconv_src(I), Map), {Dst, Map2} = conv_fpreg(hipe_rtl:fconv_dst(I), Map1), I2 = mk_fconv(Src, Dst), {I2, Map2, Data}. mk_fconv(Src, Dst) -> CSP = hipe_sparc:mk_temp(14, 'untagged'), % o6 - Disp = hipe_sparc:mk_simm13(100), - [hipe_sparc:mk_store('stw', Src, CSP, Disp), - hipe_sparc:mk_pseudo_fload(CSP, Disp, Dst, true), + Offset = 100, + mk_store('stw', Src, CSP, Offset) ++ + [hipe_sparc:mk_pseudo_fload(CSP, hipe_sparc:mk_simm13(Offset), Dst, true), hipe_sparc:mk_fp_unary('fitod', Dst, Dst)]. conv_fmove(I, Map, Data) -> |