diff options
author | Ties Stuij <ties.stuij@arm.com> | 2022-12-01 16:37:50 +0000 |
---|---|---|
committer | Ties Stuij <ties.stuij@arm.com> | 2022-12-02 11:27:14 +0000 |
commit | 82a5f1c62b64830069139d5840675588577a8711 (patch) | |
tree | 8f369ea40e31e5c31777c105c35c59034294abb6 /llvm/lib/CodeGen/StackProtector.cpp | |
parent | c4edeb838519899170e564ef247a655f8fed9ea0 (diff) | |
download | llvm-82a5f1c62b64830069139d5840675588577a8711.zip llvm-82a5f1c62b64830069139d5840675588577a8711.tar.gz llvm-82a5f1c62b64830069139d5840675588577a8711.tar.bz2 |
[AArch64] use CNT for ISD::popcnt and ISD::parity if available
These are the two places where we explicitly want to use cnt in
SelectionDAG when feature CSSC is available: ISD::popcnt and ISD::parity
For both, we need to make sure we're emitting optimized code for i32 (and
lower), i64 and i128. The most optimal way is of course using the GPR CNT
instruction. If we don't have CSSC, but we do have neon, we'll use floating
point CNT. If all fails, we'll fall back on the general GPR popcnt and parity
implementations.
spec:
https://developer.arm.com/documentation/ddi0602/2022-09/Base-Instructions/CNT--Count-bits-
Reviewed By: lenary
Differential Revision: https://reviews.llvm.org/D138808
Diffstat (limited to 'llvm/lib/CodeGen/StackProtector.cpp')
0 files changed, 0 insertions, 0 deletions