Hi!
Some very trivial comments...
On Mon, Aug 06, 2018 at 03:13:52PM -0700, Steve Ellcey wrote:
> (aarch64_components_for_bb): Check for simd function.
> (aarch64_epilogue_uses): New function.
> (aarch64_process_components): Ditto.
> (aarch64_expand_prologue): Ditto.
> (aarch64_expand_epilogue): Ditto.
> (aarch64_expand_call): Ditto.
Those "Ditto"s are meant to read "Check for simd function", not "New
function".
> +int
> +aarch64_epilogue_uses (int regno)
> +{
> + if (epilogue_completed && (regno) == LR_REGNUM)
Those parens around "regno" are a bit superfluous, makes the reader think
there is more going on than there is ;-)
> +(define_insn "store_pair_dw_tftf"
> + [(set (match_operand:TF 0 "aarch64_mem_pair_operand" "=Ump")
> + (match_operand:TF 1 "register_operand" "w"))
> + (set (match_operand:TF 2 "memory_operand" "=m")
> + (match_operand:TF 3 "register_operand" "w"))]
> + "TARGET_SIMD &&
> + rtx_equal_p (XEXP (operands[2], 0),
The && should be on the continuation line.
> +(define_insn "loadwb_pair<TX:mode>_<P:mode>"
> + [(parallel
> + [(set (match_operand:P 0 "register_operand" "=k")
> + (plus:P (match_operand:P 1 "register_operand" "0")
> + (match_operand:P 4 "aarch64_mem_pair_offset" "n")))
> + (set (match_operand:TX 2 "register_operand" "=w")
> + (mem:TX (match_dup 1)))
> + (set (match_operand:TX 3 "register_operand" "=w")
> + (mem:TX (plus:P (match_dup 1)
> + (match_operand:P 5 "const_int_operand" "n"))))])]
> + "TARGET_SIMD && INTVAL (operands[5]) == GET_MODE_SIZE (<TX:MODE>mode)"
> + "ldp\\t%q2, %q3, [%1], %4"
> + [(set_attr "type" "neon_ldp_q")]
> +)
Here you don't indent with tabs.
> +/* { dg-final { scan-assembler "\[ \t\]stp\tq10, q11" } } */
If you use {} instead of "" you don't need to backtick everything.
Also, instead of [ \t] you can probably use [[:space:]] which has
shorthand \s .
> +/* { dg-final { scan-assembler-not "\[ \t\]stp\tq\[01234567\]" } } */
That's [0-7] but maybe you find [01234567] more readable here.
> +/* { dg-final { scan-assembler-not "\[ \t\]str\t" } } */
You can also use \m and \M for start resp. end of word:
/* { dg-final { scan-assembler-not {\mstr\M} } } */
(or if you like double quotes better that is:
/* { dg-final { scan-assembler-not "\\mstr\\M" } } */
but why would you want that ;-) )
Segher