Skip to content

Commit ead5b28

Browse files
committed
fix format
1 parent 78077d4 commit ead5b28

File tree

1 file changed

+47
-50
lines changed

1 file changed

+47
-50
lines changed

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 47 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2928,62 +2928,59 @@ void VPInterleaveRecipe::execute(VPTransformState &State) {
29282928
assert(isPowerOf2_32(InterleaveFactor) &&
29292929
"Unsupported deinterleave factor for scalable vectors");
29302930

2931-
// Scalable vectors cannot use arbitrary shufflevectors (only splats),
2932-
// so must use intrinsics to deinterleave.
2933-
2934-
SmallVector<Value *> DeinterleavedValues(InterleaveFactor);
2935-
DeinterleavedValues[0] = NewLoad;
2936-
// For the case of InterleaveFactor > 2, we will have to do recursive
2937-
// deinterleaving, because the current available deinterleave intrinsic
2938-
// supports only Factor of 2, otherwise it will bailout after first
2939-
// iteration.
2940-
// As we are deinterleaving, the values will be doubled until reachingt
2941-
// to the InterleaveFactor.
2942-
for (int NumVectors = 1; NumVectors < InterleaveFactor;
2943-
NumVectors *= 2) {
2944-
// deinterleave the elements within the vector
2945-
std::vector<Value *> TempDeinterleavedValues(NumVectors);
2946-
for (int I = 0; I < NumVectors; ++I) {
2947-
auto *DiTy = DeinterleavedValues[I]->getType();
2948-
TempDeinterleavedValues[I] = State.Builder.CreateIntrinsic(
2949-
Intrinsic::vector_deinterleave2, DiTy, DeinterleavedValues[I],
2950-
/*FMFSource=*/nullptr, "strided.vec");
2951-
}
2952-
// Extract the deinterleaved values:
2953-
for (int I = 0; I < 2; ++I)
2954-
for (int J = 0; J < NumVectors; ++J)
2955-
DeinterleavedValues[NumVectors * I + J] =
2956-
State.Builder.CreateExtractValue(TempDeinterleavedValues[J],
2957-
I);
2931+
// Scalable vectors cannot use arbitrary shufflevectors (only splats),
2932+
// so must use intrinsics to deinterleave.
2933+
2934+
SmallVector<Value *> DeinterleavedValues(InterleaveFactor);
2935+
DeinterleavedValues[0] = NewLoad;
2936+
// For the case of InterleaveFactor > 2, we will have to do recursive
2937+
// deinterleaving, because the current available deinterleave intrinsic
2938+
// supports only Factor of 2, otherwise it will bailout after first
2939+
// iteration.
2940+
// As we are deinterleaving, the values will be doubled until reachingt
2941+
// to the InterleaveFactor.
2942+
for (int NumVectors = 1; NumVectors < InterleaveFactor; NumVectors *= 2) {
2943+
// deinterleave the elements within the vector
2944+
std::vector<Value *> TempDeinterleavedValues(NumVectors);
2945+
for (int I = 0; I < NumVectors; ++I) {
2946+
auto *DiTy = DeinterleavedValues[I]->getType();
2947+
TempDeinterleavedValues[I] = State.Builder.CreateIntrinsic(
2948+
Intrinsic::vector_deinterleave2, DiTy, DeinterleavedValues[I],
2949+
/*FMFSource=*/nullptr, "strided.vec");
29582950
}
2951+
// Extract the deinterleaved values:
2952+
for (int I = 0; I < 2; ++I)
2953+
for (int J = 0; J < NumVectors; ++J)
2954+
DeinterleavedValues[NumVectors * I + J] =
2955+
State.Builder.CreateExtractValue(TempDeinterleavedValues[J], I);
2956+
}
29592957

29602958
#ifndef NDEBUG
2961-
for (Value *Val : DeinterleavedValues)
2962-
assert(Val && "NULL Deinterleaved Value");
2959+
for (Value *Val : DeinterleavedValues)
2960+
assert(Val && "NULL Deinterleaved Value");
29632961
#endif
2964-
for (unsigned I = 0, J = 0; I < InterleaveFactor; ++I) {
2965-
Instruction *Member = Group->getMember(I);
2966-
Value *StridedVec = DeinterleavedValues[I];
2967-
if (!Member) {
2968-
// This value is not needed as it's not used
2969-
static_cast<Instruction *>(StridedVec)->eraseFromParent();
2970-
continue;
2971-
}
2972-
// If this member has different type, cast the result type.
2973-
if (Member->getType() != ScalarTy) {
2974-
VectorType *OtherVTy = VectorType::get(Member->getType(), State.VF);
2975-
StridedVec =
2976-
createBitOrPointerCast(State.Builder, StridedVec, OtherVTy, DL);
2977-
}
2978-
2979-
if (Group->isReverse())
2980-
StridedVec =
2981-
State.Builder.CreateVectorReverse(StridedVec, "reverse");
2982-
2983-
State.set(VPDefs[J], StridedVec);
2984-
++J;
2962+
for (unsigned I = 0, J = 0; I < InterleaveFactor; ++I) {
2963+
Instruction *Member = Group->getMember(I);
2964+
Value *StridedVec = DeinterleavedValues[I];
2965+
if (!Member) {
2966+
// This value is not needed as it's not used
2967+
static_cast<Instruction *>(StridedVec)->eraseFromParent();
2968+
continue;
2969+
}
2970+
// If this member has different type, cast the result type.
2971+
if (Member->getType() != ScalarTy) {
2972+
VectorType *OtherVTy = VectorType::get(Member->getType(), State.VF);
2973+
StridedVec =
2974+
createBitOrPointerCast(State.Builder, StridedVec, OtherVTy, DL);
29852975
}
29862976

2977+
if (Group->isReverse())
2978+
StridedVec = State.Builder.CreateVectorReverse(StridedVec, "reverse");
2979+
2980+
State.set(VPDefs[J], StridedVec);
2981+
++J;
2982+
}
2983+
29872984
return;
29882985
}
29892986

0 commit comments

Comments
 (0)