This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Disable hint in B unit for Montecito


On Wed, 2005-02-16 at 09:02, H. J. Lu wrote:
> +	  else if (strcmp (idesc->name, "hint") == 0)
> +	    {
> +	      if (required_unit == IA64_UNIT_B
> +		  && md.hint_b != hint_b_ok)
> +		insn_unit = IA64_UNIT_I;
> +	      else
> +		insn_unit = required_unit;
> +	    }

It isn't OK to change units like this.  This will lead to assembler
errors when explicit mode is used.  This example for instance
        .explicit
{       .bbb
        hint @pause
        hint @pause
        hint @pause
}
gives me
aretha$ ./as-new tmp.s
tmp.s: Assembler messages:
tmp.s:3: Error: `hint.i' does not fit into BBB template
which may be confusing to the end user.

Perhaps you were confused by the code for the mov case?  The unit change
there is to handle the case where we have { .mfi ld, mov }
where there is an implicit nop.f, and hence the mov really was meant to
be a .i instruction not a .f instruction.  If the bundle had 3 explicit
instructions in this case, then we would get an error, as we could not
match the user supplied template.  It is not OK to change the template
to MII or MMI to make this work.  We do not change templates behind the
user's back (except when adding a stop bit, which doesn't really change
the template).

Since b is always at the end of a template, or followed by another b,
there are no unit changes we can make here.  The only thing we can do is
emit a warning/error, same as in md_assemble, and then emit the hint.b
instruction that the user asked for.

I don't know if this effects the linux kernel compilation.  If it does,
then we might need to make this a warning instead of an error by
default.

+These options control what assembler will do when the @samp{hint.b}
+instruction is used. @code{-mhint.b=ok} will make assembler to accept
+@samp{hint.b}.  @code{-mhint.b=warning} will make assembler to issue
+a warning when @samp{hint.b} is used.  @code{-mhint.b=error} will make
+assembler to treat @samp{hint.b} as an error, which is the default.

I'd suggest:

These options control what the assembler will do when the @samp{hint.b}
instruction is used.  @code{-mhint.b=ok} will make the assembler accept
@samp{hint.b}.  @code{-mint.b=warning} will make the assembler issue a
warning when @samp{hint.b} is used.  @code{-mhint.b=error} will make the
assembler treat @samp{hint.b} as an error, which is the default.

The rest of the patch looks OK.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]