aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer/tsan/tsan_ignoreset.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-08-14 08:45:49 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-08-14 08:45:49 +0000
commit063082768aab23d26e42954eb115b76318f0176d (patch)
tree763e99103541a570d92ccfc8e001d0c95280690b /libsanitizer/tsan/tsan_ignoreset.h
parent95eb5537d8bb23b952105b46250ed4fba8766b84 (diff)
downloadgcc-063082768aab23d26e42954eb115b76318f0176d.zip
gcc-063082768aab23d26e42954eb115b76318f0176d.tar.gz
gcc-063082768aab23d26e42954eb115b76318f0176d.tar.bz2
[AArch64] Use "x" predication for SVE integer arithmetic patterns
The SVE patterns used an UNSPEC_MERGE_PTRUE unspec to attach a predicate to an otherwise unpredicated integer arithmetic operation. As its name suggests, this was designed to be a wrapper used for merging instructions in which the predicate is known to be a PTRUE. This unspec dates from the very early days of the port and nothing has ever taken advantage of the PTRUE guarantee for arithmetic (as opposed to comparisons). This patch replaces it with the less stringent guarantee that: (a) the values of inactive lanes don't matter and (b) it is valid to make extra lanes active if there's a specific benefit Doing this makes the patterns suitable for the ACLE _x functions, which have the above semantics. See the block comment in the patch for more details. 2019-08-14 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64.md (UNSPEC_PRED_X): New unspec. * config/aarch64/aarch64-sve.md: Add a section describing it. (@aarch64_pred_mov<mode>, @aarch64_pred_mov<mode>) (<SVE_INT_UNARY:optab><mode>2, *<SVE_INT_UNARY:optab><mode>2) (aarch64_<su>abd<mode>_3, mul<SVE_I:mode>3, *mul<SVE_I:mode>3) (<su>mul<mode>3_highpart, *<su>mul<mode>3_highpart) (<SVE_INT_BINARY:optab><mode>3, *<SVE_INT_BINARY:optab><mode>3) (*bic<mode>3, v<ASHIFT:optab><mode>3, *v<ASHIFT:optab><mode>3) (<su><maxmin><mode>3, *<su><maxmin><mode>3, *madd<SVE_I:mode>) (*msub<SVE_I:mode>3, *aarch64_sve_rev64<mode>) (*aarch64_sve_rev32<mode>, *aarch64_sve_rev16vnx16qi): Use UNSPEC_PRED_X instead of UNSPEC_MERGE_PTRUE. * config/aarch64/aarch64-sve2.md (<u>avg<mode>3_floor) (<u>avg<mode>3_ceil, *<sur>h<addsub><mode>): Likewise. * config/aarch64/aarch64.c (aarch64_split_sve_subreg_move) (aarch64_evpc_rev_local): Update accordingly. From-SVN: r274425
Diffstat (limited to 'libsanitizer/tsan/tsan_ignoreset.h')
0 files changed, 0 insertions, 0 deletions