aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/x86/hipe_x86_frame.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_frame.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_frame.erl')
-rw-r--r--lib/hipe/x86/hipe_x86_frame.erl8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/hipe/x86/hipe_x86_frame.erl b/lib/hipe/x86/hipe_x86_frame.erl
index fc782571bf..17253ad46f 100644
--- a/lib/hipe/x86/hipe_x86_frame.erl
+++ b/lib/hipe/x86/hipe_x86_frame.erl
@@ -116,6 +116,8 @@ do_insn(I, LiveOut, Context, FPoff) ->
{do_ret(I, Context, FPoff), context_framesize(Context)};
#shift{} ->
{[do_shift(I, Context, FPoff)], FPoff};
+ #test{} ->
+ {[do_test(I, Context, FPoff)], FPoff};
_ -> % comment, jmp, label, pseudo_jcc, pseudo_tailcall_prepare
{[I], FPoff}
end.
@@ -188,6 +190,12 @@ do_shift(I, Context, FPoff) ->
Dst = conv_opnd(Dst0, FPoff, Context),
I#shift{src=Src,dst=Dst}.
+do_test(I, Context, FPoff) ->
+ #test{src=Src0,dst=Dst0} = I,
+ Src = conv_opnd(Src0, FPoff, Context),
+ Dst = conv_opnd(Dst0, FPoff, Context),
+ I#test{src=Src,dst=Dst}.
+
conv_opnd(Opnd, FPoff, Context) ->
case opnd_is_pseudo(Opnd) of
false ->