[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
Wed Jul 28 08:28:53 PDT 2021
c-rhodes added inline comments.
================
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.
----------------
bsmith wrote:
> c-rhodes wrote:
> > 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?
> Don't we still need this for casting between vectors with different element types, or are these guaranteed to not hit this code path?
> Don't we still need this for casting between vectors with different element types, or are these guaranteed to not hit this code path?
Apologies I was wrong, you're right we'll still need it for casting between vectors with different element types to support lax vector conversions, although it's no longer tested. Might be worth adding a codegen test for ~:
```svint64_t lax_cast(fixed_int32_t t) {
return t;
}```
and the comment could also be updated
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