diff options
author | Mingming Liu <mingmingl@google.com> | 2022-08-02 23:21:52 -0700 |
---|---|---|
committer | Mingming Liu <mingmingl@google.com> | 2022-08-19 13:17:13 -0700 |
commit | 945a3065015a62cf3b4ceabaa0755500fc7ddd71 (patch) | |
tree | dfb7a573f8169f09d082b047085e56210badf9f0 /lldb/packages/Python/lldbsuite/test/gdbclientutils.py | |
parent | 3e6d1a6f54264bb50216069c68845b57428fc932 (diff) | |
download | llvm-945a3065015a62cf3b4ceabaa0755500fc7ddd71.zip llvm-945a3065015a62cf3b4ceabaa0755500fc7ddd71.tar.gz llvm-945a3065015a62cf3b4ceabaa0755500fc7ddd71.tar.bz2 |
[AArch64] Change aarch64_neon_pmull{,64} intrinsic ISel through a new
SDNode.
How:
1) Add AArch64ISD::PMULL SDNode, and extend aarch64_neon_pmull intrinsic
tablegen pattern for this SDNode.
2) For aarch64_neon_pmull64, canonicalize i64 operands to v1i64 vectors
during legalization.
3) For {aarch64_neon_pmull, aarch64_neon_pmull64}, combine intrinsic to
SDNode.
Why
1) Adding the SDNode makes it easier to canonicalize i64 inputs (required by
aarch64_neon_pmull64) to vector inputs. Vector inputs carries lane
information, which helps dag-combiner to combine nodes (e.g. rewrite to a
better node to prepare for instruction selection) and instruction-selection
to emit instructions that use higher-half inputs in place
(i.e., no need to move lane 1 content to lane 0).
2) Using the SDNode for aarch64_neon_pmull64 is NFC, yet without this we
have to move the definition of {PMULLv1i64, PMULLv2i64} out of its
current group of records without gains.
Test cases are commented with what is being tested in
`aarch64-pmull2.ll` and `pmull-ldr-merge.ll` under directory
`llvm/test/CodeGen/AArch64`.
Differential Revision: https://reviews.llvm.org/D131047
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/gdbclientutils.py')
0 files changed, 0 insertions, 0 deletions