aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
diff options
context:
space:
mode:
authorMingming Liu <mingmingl@google.com>2022-08-02 23:21:52 -0700
committerMingming Liu <mingmingl@google.com>2022-08-19 13:17:13 -0700
commit945a3065015a62cf3b4ceabaa0755500fc7ddd71 (patch)
treedfb7a573f8169f09d082b047085e56210badf9f0 /clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp
parent3e6d1a6f54264bb50216069c68845b57428fc932 (diff)
downloadllvm-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 'clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp')
0 files changed, 0 insertions, 0 deletions