[PATCH] rs6000: Add basic support for prefixed and PC-relative addresses

Bill Schmidt wschmidt@linux.ibm.com
Thu May 30 19:48:00 GMT 2019


On 5/30/19 2:20 PM, Segher Boessenkool wrote:
> On Wed, May 29, 2019 at 10:49:35PM -0500, Bill Schmidt wrote:
>> 	* config/rs6000/predicates.md (pcrel_address): New
>> 	define_predicate.
> Please put that on one line?

OK.  Emacs in ChangeLog and Fill modes seems to set a line length
somewhat less than 79.  I generally follow what it tells me, but I can
fix this.
>
>> +      if (LABEL_REF_P (x))
>> +	output_asm_label (x);
>> +      else
>> +	output_addr_const (file, x);
> Why does LABEL_REF need separate handling here?

Mike, please respond?
>
>> +      if (offset)
>> +	fprintf (file, "%s" HOST_WIDE_INT_PRINT_DEC, (offset > 0) ? "+" : "",
>> +		 offset);
> Maybe
>
>       if (offset)
> 	fprintf (file, "%+" PRId64, offset);
>
> (but there really should be a HOST_WIDE_INT_PRINT_DEC_PLUS or similar for
> that then.  Oh well).

Will have a look.
>
>> +rs6000_prefixed_address (rtx addr, machine_mode mode)
>> +  if (GET_CODE (addr) == PLUS)
>> +    {
>> +      HOST_WIDE_INT value, mask;
> Please declare these where they are defined?

ok.
>
>> +      /* DS instruction (bottom 2 bits must be 0).  For 32-bit integers, we
>> +	 need to use DS instructions if we are sign-extending the value with
>> +	 LWA.  For 32-bit floating point, we need DS instructions to load and
>> +	 store values to the traditional Altivec registers.  */
>> +      else if (GET_MODE_SIZE (mode) >= 4)
>> +	mask = 3;
> I don't much like penalising scalar single precision float like this.
> But, this also hurts unaligned lwz...  Do we have statistics on that?
> Offline, I guess :-)

Again, I'll defer to Mike on those details (online or offline). ;-)
>
>> +      /* Return true if we must use a prefixed instruction.  */
>> +      return ((value & ~mask) != value);
> (value & mask) != 0

OK.
>
>
> Okay with those things frobbed a little, or looked at.  Thanks!

Thanks for the review on your day off!
Bill
>
>
> Segher
>
>
> Segher



More information about the Gcc-patches mailing list