]> git.ipfire.org Git - thirdparty/gcc.git/commit
aarch64: Remove unspecs from [su]qmovn RTL pattern
authorJonathan Wright <jonathan.wright@arm.com>
Thu, 22 Apr 2021 14:04:19 +0000 (15:04 +0100)
committerJonathan Wright <jonathan.wright@arm.com>
Wed, 28 Apr 2021 20:14:03 +0000 (21:14 +0100)
commitc99f3747131377956e3bd8e393911c959ef5ff34
tree92008790ab16691b44bf768842cc63098e83fe57
parent6a82f012c4a1c12468b154c59b817dc2d4d044c5
aarch64: Remove unspecs from [su]qmovn RTL pattern

Saturating truncation can be expressed using the RTL expressions
ss_truncate and us_truncate. This patch changes the implementation
of the vqmovn_* intrinsics to use these RTL expressions rather than
a pair of unspecs. The redundant unspecs are removed along with their
code iterator.

gcc/ChangeLog:

2021-04-12  Jonathan Wright  <jonathan.wright@arm.com>

* config/aarch64/aarch64-simd-builtins.def: Modify comment to
make consistent with updated RTL pattern.
* config/aarch64/aarch64-simd.md (aarch64_<sur>qmovn<mode>):
Implement using ss_truncate and us_truncate rather than
unspecs.
* config/aarch64/iterators.md: Remove redundant unspecs and
iterator: UNSPEC_[SU]QXTN and SUQMOVN respectively.
gcc/config/aarch64/aarch64-simd-builtins.def
gcc/config/aarch64/aarch64-simd.md
gcc/config/aarch64/iterators.md