@@ -16906,9 +16906,9 @@ bool AArch64TargetLowering::lowerInterleavedStore(StoreInst *SI,
16906
16906
return true;
16907
16907
}
16908
16908
16909
- bool getDeinterleave2Values(
16910
- Value *DI, SmallVectorImpl<Instruction *> &DeinterleavedValues,
16911
- SmallVectorImpl<Instruction *> &DeadInsts) {
16909
+ bool getDeinterleave2Values(Value *DI,
16910
+ SmallVectorImpl<Instruction *> &DeinterleavedValues,
16911
+ SmallVectorImpl<Instruction *> &DeadInsts) {
16912
16912
if (!DI->hasNUses(2))
16913
16913
return false;
16914
16914
auto *Extr1 = dyn_cast<ExtractValueInst>(*(DI->user_begin()));
@@ -16930,7 +16930,8 @@ bool getDeinterleave2Values(
16930
16930
return false;
16931
16931
}
16932
16932
// DeinterleavedValues will be replace by output of ld2
16933
- DeadInsts.insert(DeadInsts.end(), DeinterleavedValues.begin(), DeinterleavedValues.end());
16933
+ DeadInsts.insert(DeadInsts.end(), DeinterleavedValues.begin(),
16934
+ DeinterleavedValues.end());
16934
16935
return true;
16935
16936
}
16936
16937
@@ -16946,9 +16947,10 @@ DeinterleaveIntrinsic tree:
16946
16947
| | | |
16947
16948
roots: A C B D
16948
16949
roots in correct order of DI4 will be: A B C D.
16949
- Returns true if `DI` is the top of an IR tree that represents a theoretical vector.deinterleave4 intrinsic.
16950
- When true is returned, `DeinterleavedValues` vector is populated with the results such an intrinsic would return:
16951
- (i.e. {A, B, C, D } = vector.deinterleave4(...))
16950
+ Returns true if `DI` is the top of an IR tree that represents a theoretical
16951
+ vector.deinterleave4 intrinsic. When true is returned, `DeinterleavedValues`
16952
+ vector is populated with the results such an intrinsic would return: (i.e. {A,
16953
+ B, C, D } = vector.deinterleave4(...))
16952
16954
*/
16953
16955
bool getDeinterleave4Values(Value *DI,
16954
16956
SmallVectorImpl<Instruction *> &DeinterleavedValues,
@@ -16972,7 +16974,8 @@ bool getDeinterleave4Values(Value *DI,
16972
16974
auto *C = dyn_cast<ExtractValueInst>(*(++DI1->user_begin()));
16973
16975
auto *B = dyn_cast<ExtractValueInst>(*(DI2->user_begin()));
16974
16976
auto *D = dyn_cast<ExtractValueInst>(*(++DI2->user_begin()));
16975
- // Make sure that the A,B,C and D are ExtractValue instructions before getting the extract index
16977
+ // Make sure that the A,B,C and D are ExtractValue instructions before getting
16978
+ // the extract index
16976
16979
if (!A || !B || !C || !D)
16977
16980
return false;
16978
16981
@@ -17005,7 +17008,8 @@ bool getDeinterleave4Values(Value *DI,
17005
17008
17006
17009
// These Values will not be used anymore,
17007
17010
// DI4 will be created instead of nested DI1 and DI2
17008
- DeadInsts.insert(DeadInsts.end(), DeinterleavedValues.begin(), DeinterleavedValues.end());
17011
+ DeadInsts.insert(DeadInsts.end(), DeinterleavedValues.begin(),
17012
+ DeinterleavedValues.end());
17009
17013
DeadInsts.push_back(cast<Instruction>(DI1));
17010
17014
DeadInsts.push_back(cast<Instruction>(Extr1));
17011
17015
DeadInsts.push_back(cast<Instruction>(DI2));
@@ -17023,7 +17027,8 @@ bool getDeinterleavedValues(Value *DI,
17023
17027
}
17024
17028
17025
17029
bool AArch64TargetLowering::lowerDeinterleaveIntrinsicToLoad(
17026
- IntrinsicInst *DI, LoadInst *LI, SmallVectorImpl<Instruction *> &DeadInsts) const {
17030
+ IntrinsicInst *DI, LoadInst *LI,
17031
+ SmallVectorImpl<Instruction *> &DeadInsts) const {
17027
17032
// Only deinterleave2 supported at present.
17028
17033
if (DI->getIntrinsicID() != Intrinsic::vector_deinterleave2)
17029
17034
return false;
@@ -17116,9 +17121,10 @@ InterleaveIntrinsic tree.
17116
17121
[II]
17117
17122
17118
17123
values in correct order of interleave4: A B C D.
17119
- Returns true if `II` is the root of an IR tree that represents a theoretical vector.interleave4 intrinsic.
17120
- When true is returned, `ValuesToInterleave` vector is populated with the inputs such an intrinsic would take:
17121
- (i.e. vector.interleave4(A, B, C, D)).
17124
+ Returns true if `II` is the root of an IR tree that represents a theoretical
17125
+ vector.interleave4 intrinsic. When true is returned, `ValuesToInterleave` vector
17126
+ is populated with the inputs such an intrinsic would take: (i.e.
17127
+ vector.interleave4(A, B, C, D)).
17122
17128
*/
17123
17129
bool getValuesToInterleave(Value *II,
17124
17130
SmallVectorImpl<Value *> &ValuesToInterleave,
@@ -17133,7 +17139,8 @@ bool getValuesToInterleave(Value *II,
17133
17139
ValuesToInterleave.push_back(D);
17134
17140
// intermediate II will not be needed anymore
17135
17141
Value *II1, *II2;
17136
- assert(match(II, m_Interleave2(m_Value(II1), m_Value(II2))) && "II tree is expected");
17142
+ assert(match(II, m_Interleave2(m_Value(II1), m_Value(II2))) &&
17143
+ "II tree is expected");
17137
17144
DeadInsts.push_back(cast<Instruction>(II1));
17138
17145
DeadInsts.push_back(cast<Instruction>(II2));
17139
17146
return true;
@@ -17150,7 +17157,8 @@ bool getValuesToInterleave(Value *II,
17150
17157
}
17151
17158
17152
17159
bool AArch64TargetLowering::lowerInterleaveIntrinsicToStore(
17153
- IntrinsicInst *II, StoreInst *SI, SmallVectorImpl<Instruction *> &DeadInsts) const {
17160
+ IntrinsicInst *II, StoreInst *SI,
17161
+ SmallVectorImpl<Instruction *> &DeadInsts) const {
17154
17162
// Only interleave2 supported at present.
17155
17163
if (II->getIntrinsicID() != Intrinsic::vector_interleave2)
17156
17164
return false;
0 commit comments