This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: Add dg test for matching function bodies


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.sandiford@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


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