On Thu, Jul 13, 2017 at 04:35:55PM +0100, Jackson Woodruff wrote:
> Hi James,
>
> I've addressed the issues discussed below.
>
> OK for trunk?
I one last comment, otherwise, this looks good:
> +/* Print operand X to file F in a target specific manner according to CODE.
> + The acceptable formatting commands given by CODE are:
> + 'c': An integer or symbol address without a preceding # sign.
> + 'e': Print the sign/zero-extend size as a character 8->b,
> + 16->h, 32->w.
> + 'p': Prints N such that 2^N == X (X must be power of 2 and
> + const int).
> + 'P': Print the number of non-zero bits in X (a const_int).
> + 'H': Print the higher numbered register of a pair (TImode)
> + of regs.
> + 'm': Print a condition (eq, ne, etc).
> + 'M': Same as 'm', but invert condition.
> + 'b/h/s/d/q': Print a scalar FP/SIMD register name.
> + 'S/T/U/V': Print the first FP/SIMD register name in a list
> + (No difference between any of these options).
There is a slight difference between these options - You'd use them in a
in a pattern with a large integer mode like LD3 on a CImode value to print
the register list you want to load. For example:
LD3 {v0.4s - v2.4s} [x0]
The register number you'll get by inspecting REGNO (x) will give you the
start of the register list - but we need to get the right number for the
end of the register list too. To find that offset, we take
(CODE - 'S'). It should be clear why for S/T/U/V this gives 0/1/2/3.
So this comment should read:
Print a FP/SIMD register name for a register list. The register
printed is the FP/SIMD register name of X + 0/1/2/3 for S/T/U/V.
Or similar.
Thanks,
James