aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer/interception/interception_linux.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-08-14 07:58:30 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-08-14 07:58:30 +0000
commit34467289631e29545e14148515ab5f5d0d9e4fa7 (patch)
tree96a0240ecded5c49122b83ea2d46224ec416554d /libsanitizer/interception/interception_linux.h
parentade8fdbbfd98aafdc12585885dea60460fea0a26 (diff)
downloadgcc-34467289631e29545e14148515ab5f5d0d9e4fa7.zip
gcc-34467289631e29545e14148515ab5f5d0d9e4fa7.tar.gz
gcc-34467289631e29545e14148515ab5f5d0d9e4fa7.tar.bz2
[AArch64] Rework SVE PTEST patterns
This patch reworks the rtl representation of the SVE PTEST operation so that: - the governing predicate is always VNx16BI (and so all bits are defined) - it is still possible to pattern-match the governing predicate in the mode that it had previously - a new hint operand says whether the governing predicate is known to be all true for the element size of interest, rather than this being part of the unspec name. These changes make it easier to handle more flag-setting instructions as part of the ACLE work. See the comment in aarch64-sve.md for more details. 2019-08-14 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64-protos.h (aarch64_ptrue_all): Declare. * config/aarch64/aarch64.c (aarch64_ptrue_all): New function. * config/aarch64/aarch64.md (UNSPEC_PTEST_PTRUE): Delete. (UNSPEC_PTEST): New unspec. (SVE_MAYBE_NOT_PTRUE, SVE_KNOWN_PTRUE): New constants. * config/aarch64/iterators.md (data_bytes): New mode attribute. * config/aarch64/predicates.md (aarch64_sve_ptrue_flag): New predicate. * config/aarch64/aarch64-sve.md: Add a new section describing the handling of UNSPEC_PTEST. (pred_<LOGICAL:optab><PRED_ALL:mode>3): Rename to... (@aarch64_pred_<LOGICAL:optab><PRED_ALL:mode>_z): ...this. (ptest_ptrue<mode>): Replace with... (aarch64_ptest<mode>): ...this new pattern. (cbranch<mode>4): Update after above changes. (*<LOGICAL:optab><PRED_ALL:mode>3_cc): Use UNSPEC_PTEST instead of UNSPEC_PTEST_PTRUE. (*cmp<SVE_INT_CMP:cmp_op><SVE_I:mode>_cc): Likewise. (*cmp<SVE_INT_CMP:cmp_op><SVE_I:mode>_ptest): Likewise. (*while_ult<GPI:mode><PRED_ALL:mode>_cc): Likewise. From-SVN: r274414
Diffstat (limited to 'libsanitizer/interception/interception_linux.h')
0 files changed, 0 insertions, 0 deletions