================
@@ -2471,17 +2471,27 @@ RValue CodeGenFunction::EmitLoadOfLValue(LValue LV,
SourceLocation Loc) {
unsigned NumRows = MT->getNumRows();
unsigned NumCols = MT->getNumColumns();
-
+ unsigned NumLanes = NumCols;
llvm::Value *MatrixVec = EmitLoadOfScalar(LV, Loc);
llvm::Value *Row = LV.getMatrixRowIdx();
llvm::Type *ElemTy = ConvertType(MT->getElementType());
llvm::Type *RowTy = llvm::FixedVectorType::get(ElemTy,
MT->getNumColumns());
llvm::Value *Result = llvm::PoisonValue::get(RowTy); // <NumCols x T>
-
+ llvm::Constant *ColConstsIndices = nullptr;
llvm::MatrixBuilder MB(Builder);
- for (unsigned Col = 0; Col < NumCols; ++Col) {
- llvm::Value *ColIdx = llvm::ConstantInt::get(Row->getType(), Col);
+ if (LV.isMatrixRowSwizzle()) {
+ ColConstsIndices = LV.getMatrixRowElts();
+ NumLanes = llvm::cast<llvm::FixedVectorType>(ColConstsIndices->getType())
+ ->getNumElements();
+ }
----------------
farzonl wrote:
No this isn't right VTy is something we create in we have to create in
`EmitExtVectorElementExpr` Its type might have the right size of elements but
not the right element type since thats a vector of indices. The right thing to
do is to move the creaion of the Result to after we we check
`isMatrixRowSwizzle()` and update the NumLanes.
https://github.com/llvm/llvm-project/pull/173201
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits