[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