[PATCH] D106860: [clang][AArch64][SVE] Avoid going through memory for fixed/scalable predicate casts
Cullen Rhodes via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 27 06:25:22 PDT 2021
c-rhodes added inline comments.
================
Comment at: clang/lib/CodeGen/CGExprScalar.cpp:2065
if (const auto *FixedSrc = dyn_cast<llvm::FixedVectorType>(SrcTy)) {
if (const auto *ScalableDst = dyn_cast<llvm::ScalableVectorType>(DstTy)) {
+ // If we are casting a fixed i8 vector to a scalable 16 x i1 predicate
----------------
should const be dropped now the type might change?
================
Comment at: clang/lib/CodeGen/CGExprScalar.cpp:2110-2129
// Perform VLAT <-> VLST bitcast through memory.
// TODO: since the llvm.experimental.vector.{insert,extract} intrinsics
// require the element types of the vectors to be the same, we
// need to keep this around for casting between predicates, or more
// generally for bitcasts between VLAT <-> VLST where the element
// types of the vectors are not the same, until we figure out a better
// way of doing these casts.
----------------
With the predicate casting now using the intrinsics I don't think this is needed any longer. Perhaps we should add an unreachable above if the element type doesn't match?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106860/new/
https://reviews.llvm.org/D106860
More information about the cfe-commits
mailing list