diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-07-29 08:46:46 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-07-29 08:46:46 +0000 |
commit | 4d706ff86ea86868615558e92407674a4f4b4af9 (patch) | |
tree | 74dec2539f4b43e34c43b95439896bec5b92e6ab /gcc/tree-vrp.c | |
parent | 708cc6132bb374e2c5bd1c4f43f9fe7306d20970 (diff) | |
download | gcc-4d706ff86ea86868615558e92407674a4f4b4af9.zip gcc-4d706ff86ea86868615558e92407674a4f4b4af9.tar.gz gcc-4d706ff86ea86868615558e92407674a4f4b4af9.tar.bz2 |
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.
From-SVN: r273869
Diffstat (limited to 'gcc/tree-vrp.c')
0 files changed, 0 insertions, 0 deletions