On Thu, Oct 24, 2013 at 1:29 PM, Ilya Enkovich <enkovich....@gmail.com> wrote:
>>>> This is OK for mainline, on the condition that target independent part >>>> is approved and committed first. >>>> >>>> Thanks, >>>> Uros. >>> >>> Thanks for review! >>> >>> Attached is a version to be committed. The only difference from the >>> previous one is BOUND_MODE renamed to POINTER_BOUNDS_MODE due to changes in >>> target independent part. ChangeLog was not modified. >> >> I think you missed a couple of length -> length_nobnd updates: >> >> @@ -11635,7 +11680,12 @@ >> [(simple_return) >> (unspec [(const_int 0)] UNSPEC_REP)] >> "reload_completed" >> - "rep%; ret" >> +{ >> + if (ix86_bnd_prefixed_insn_p (insn)) >> + return "%!ret"; >> + >> + return "rep%; ret"; >> +} >> [(set_attr "length" "2") >> (set_attr "atom_unit" "jeu") >> (set_attr "length_immediate" "0") >> > > There is no reason for length_nobnd because instruction length is > always 2. Difference is in prefix used for MPX and non-MPX code. > >> and possibly here: >> >> @@ -11186,7 +11231,7 @@ >> (define_insn "*indirect_jump" >> [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))] >> "" >> - "jmp\t%A0" >> + "%!jmp\t%A0" >> [(set_attr "type" "ibr") >> (set_attr "length_immediate" "0")]) >> >> @@ -11235,7 +11280,7 @@ >> [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw")) >> (use (label_ref (match_operand 1)))] >> "" >> - "jmp\t%A0" >> + "%!jmp\t%A0" >> [(set_attr "type" "ibr") >> (set_attr "length_immediate" "0")]) > > For these cases 'prefix_rep' attribute makes the work due to 'ibr' > type. Generic length should work fine. Indeed. Thanks for explanation! Uros.