On 7/16/19 8:04 AM, Richard Sandiford wrote:
> There isn't a 1:1 mapping from SVE intrinsics to SVE instructions,
> but the intrinsics are still close enough to the instructions for
> there to be a specific preferred sequence (or sometimes choice of
> preferred sequences) for a given combination of operands. Sometimes
> these sequences will be one instruction, sometimes they'll be several.
>
> I therefore wanted a convenient way of matching the exact assembly
> implementation of a given function. It's possible to do that using
> single scan-assembler lines, but:
>
> (a) they become hard to read for multiline matches
> (b) the PASS/FAIL lines tend to be long
> (c) it's useful to have a single place that skips over uninteresting
> lines, such as entry block labels and .cfi_* directives, without
> being overly broad
>
> This patch therefore adds a new check-function-bodies dg-final test
> that looks for specially-formatted comments. As a demo, the patch
> converts the SVE vec_init tests to use the new harness instead of
> scan-assembler.
>
> The regexps in parse_function_bodies are fairly general, but might
> still need to be extended in future for targets like Darwin or AIX.
>
> Tested on aarch64-linux-gnu (and x86_64-linux-gnu, somewhat pointlessly
> given the contents of the patch). OK to install?
>
> Richard
>
>
> 2019-07-16 Richard Sandiford <richard.sandif...@arm.com>
>
> gcc/
> * doc/sourcebuild.texi (check-function-bodies): Document.
>
> gcc/testsuite/
> * lib/scanasm.exp (parse_function_bodies, check_function_body)
> (check-function-bodies): New procedures.
> * gcc.target/aarch64/sve/init_1.c: Use check-function-bodies
> instead of scan-assembler.
> * gcc.target/aarch64/sve/init_2.c: Likewise.
> * gcc.target/aarch64/sve/init_3.c: Likewise.
> * gcc.target/aarch64/sve/init_4.c: Likewise.
> * gcc.target/aarch64/sve/init_5.c: Likewise.
> * gcc.target/aarch64/sve/init_6.c: Likewise.
> * gcc.target/aarch64/sve/init_7.c: Likewise.
> * gcc.target/aarch64/sve/init_8.c: Likewise.
> * gcc.target/aarch64/sve/init_9.c: Likewise.
> * gcc.target/aarch64/sve/init_10.c: Likewise.
> * gcc.target/aarch64/sve/init_11.c: Likewise.
> * gcc.target/aarch64/sve/init_12.c: Likewise.
OK
jeff