================
@@ -2517,8 +2527,17 @@ Value *ScalarExprEmitter::VisitCastExpr(CastExpr *CE) {
// If we are casting a scalable i1 predicate vector to a fixed i8
// vector, bitcast the source and use a vector extract.
if (ScalableSrcTy->getElementType()->isIntegerTy(1) &&
- ScalableSrcTy->getElementCount().isKnownMultipleOf(8) &&
FixedDstTy->getElementType()->isIntegerTy(8)) {
+ if (!ScalableSrcTy->getElementCount().isKnownMultipleOf(8)) {
+ ScalableSrcTy = llvm::ScalableVectorType::get(
+ ScalableSrcTy->getElementType(),
+ llvm::alignTo<8>(
+ ScalableSrcTy->getElementCount().getKnownMinValue()));
+ llvm::Value *ZeroVec = llvm::Constant::getNullValue(ScalableSrcTy);
----------------
paulwalker-arm wrote:
Should this be poison instead of zero?
https://github.com/llvm/llvm-project/pull/139190
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits