[erlang-patches] [PATCH] Modify pp_arm to decode imm8m constants

Mikael Pettersson <>
Tue Apr 6 08:14:31 CEST 2010


Johan Bengtsson writes:
 > Improve readability by decoding imm8m constants before printing them.
 > 
 > Signed-off-by: Johan Bengtsson <>
 > ---
 >  lib/hipe/arm/hipe_arm_pp.erl |    8 +++++++-
 >  1 files changed, 7 insertions(+), 1 deletions(-)
 > 
 > diff --git a/lib/hipe/arm/hipe_arm_pp.erl b/lib/hipe/arm/hipe_arm_pp.erl
 > index 7ce8421..a98f8fc 100644
 > --- a/lib/hipe/arm/hipe_arm_pp.erl
 > +++ b/lib/hipe/arm/hipe_arm_pp.erl
 > @@ -246,6 +246,12 @@ stop_suffix(StOp) ->
 >      'strb' -> "b"
 >    end.
 >  
 > +imm8m_decode(Value, 0) ->
 > +  Value;
 > +imm8m_decode(Value, Rot) ->
 > +  (Value bsr (2 * Rot)) bor (Value bsl (2 * (16 - Rot))).
 > +
 > +

One newline too many here.

 >  pp_temp(Dev, Temp=#arm_temp{reg=Reg, type=Type}) ->
 >    case hipe_arm:temp_is_precoloured(Temp) of
 >      true ->
 > @@ -292,7 +298,7 @@ pp_am1(Dev, Am1) ->
 >  	  io:format(Dev, "#~w", [Imm5])
 >        end;
 >      {Imm8,Imm4} ->
 > -      io:format(Dev, "#~w, 2*~w", [Imm8,Imm4])
 > +      io:format(Dev, "#~s", [to_hex(imm8m_decode(Imm8, Imm4))])
 >    end.
 >  
 >  pp_am2(Dev, #am2{src=Src,sign=Sign,offset=Am2Offset}) ->

Please show a before/after diff for the output of pp_arm on some small
function, preferably one using an immediate with a non-zero rotate.


More information about the erlang-patches mailing list