This is the mail archive of the gcc-cvs@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]

r273869 - in /trunk/gcc: ChangeLog doc/sourcebu...


Author: rsandifo
Date: Mon Jul 29 08:46:46 2019
New Revision: 273869

URL: https://gcc.gnu.org/viewcvs?rev=273869&root=gcc&view=rev
Log:
Add dg test for matching function bodies

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 overly 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.

2019-07-29  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.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/doc/sourcebuild.texi
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_1.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_10.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_11.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_12.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_2.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_3.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_4.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_5.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_6.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_7.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_8.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/init_9.c
    trunk/gcc/testsuite/lib/scanasm.exp


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