@@ -2473,22 +2473,18 @@ RValue CodeGenFunction::EmitLoadOfLValue(LValue LV, SourceLocation Loc) {
24732473 unsigned NumCols = MT->getNumColumns ();
24742474
24752475 llvm::Value *MatrixVec = EmitLoadOfScalar (LV, Loc);
2476-
24772476 llvm::Value *Row = LV.getMatrixRowIdx ();
2478- llvm::Value *Result =
2479- llvm::PoisonValue::get (ConvertType (LV.getType ())); // <NumCols x T>
2477+ llvm::Type *ElemTy = ConvertType (MT->getElementType ());
2478+ llvm::Type *RowTy = llvm::FixedVectorType::get (ElemTy, MT->getNumColumns ());
2479+ llvm::Value *Result = llvm::PoisonValue::get (RowTy); // <NumCols x T>
24802480
24812481 llvm::MatrixBuilder MB (Builder);
24822482
24832483 for (unsigned Col = 0 ; Col < NumCols; ++Col) {
24842484 llvm::Value *ColIdx = llvm::ConstantInt::get (Row->getType (), Col);
2485-
24862485 llvm::Value *EltIndex = MB.CreateIndex (Row, ColIdx, NumRows);
2487-
24882486 llvm::Value *Elt = Builder.CreateExtractElement (MatrixVec, EltIndex);
2489-
24902487 llvm::Value *Lane = llvm::ConstantInt::get (Builder.getInt32Ty (), Col);
2491-
24922488 Result = Builder.CreateInsertElement (Result, Elt, Lane);
24932489 }
24942490
@@ -4981,9 +4977,9 @@ LValue CodeGenFunction::EmitMatrixSingleSubscriptExpr(
49814977
49824978 unsigned Row = RowConst->getZExtValue ();
49834979 unsigned Start = Row * NumCols;
4984- for (unsigned C = 0 ; C < NumCols; ++C) {
4980+ for (unsigned C = 0 ; C < NumCols; ++C)
49854981 Indices.push_back (llvm::ConstantInt::get (Int32Ty, Start + C));
4986- }
4982+
49874983 llvm::Constant *Elts = llvm::ConstantVector::get (Indices);
49884984 return LValue::MakeExtVectorElt (
49894985 MaybeConvertMatrixAddress (Base.getAddress (), *this ), Elts,
0 commit comments