aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/x86/hipe_x86_ra_naive.erl
diff options
context:
space:
mode:
authorMagnus Lång <[email protected]>2016-11-09 18:49:06 +0100
committerMagnus Lång <[email protected]>2016-11-15 14:58:59 +0100
commit3579a706ea0c0081d7dd01291990cd8d3669f195 (patch)
treeea2df890f7b1a63331cce06a6f8350af4a608526 /lib/hipe/x86/hipe_x86_ra_naive.erl
parentcc45e36d1fb0b288ca534fa72fde772b62225e93 (diff)
downloadotp-3579a706ea0c0081d7dd01291990cd8d3669f195.tar.gz
otp-3579a706ea0c0081d7dd01291990cd8d3669f195.tar.bz2
otp-3579a706ea0c0081d7dd01291990cd8d3669f195.zip
hipe_{x86,amd64}: Finish test instr implementation
Diffstat (limited to 'lib/hipe/x86/hipe_x86_ra_naive.erl')
-rw-r--r--lib/hipe/x86/hipe_x86_ra_naive.erl7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/hipe/x86/hipe_x86_ra_naive.erl b/lib/hipe/x86/hipe_x86_ra_naive.erl
index 35de692e07..9371e4b1a5 100644
--- a/lib/hipe/x86/hipe_x86_ra_naive.erl
+++ b/lib/hipe/x86/hipe_x86_ra_naive.erl
@@ -100,6 +100,8 @@ do_insn(I) -> % Insn -> Insn list
do_fp_binop(I);
#shift{} ->
do_shift(I);
+ #test{} ->
+ do_test(I);
#label{} ->
[I];
#pseudo_jcc{} ->
@@ -310,6 +312,11 @@ do_shift(I) ->
FixDst ++ [I#shift{dst=Dst}]
end.
+do_test(I) ->
+ #test{src=Src0,dst=Dst0} = I,
+ {FixSrc, Src, FixDst, Dst} = do_binary(Src0, Dst0),
+ FixSrc ++ FixDst ++ [I#test{src=Src,dst=Dst}].
+
%%% Fix the operands of a binary op.
%%% 1. remove pseudos from any explicit memory operands
%%% 2. if both operands are (implicit or explicit) memory operands,