================
@@ -2266,6 +2269,50 @@ static RawAddress MaybeConvertMatrixAddress(RawAddress
Addr,
return Addr;
}
+LValue CodeGenFunction::EmitMatrixElementExpr(const MatrixElementExpr *E) {
+ // return EmitUnsupportedLValue(E, "Matrix swizzle");
+ LValue Base;
+ if (E->getBase()->isGLValue())
+ Base = EmitLValue(E->getBase());
+ else {
+ assert(E->getBase()->getType()->isConstantMatrixType() &&
+ "Result must be a Constant Matrix");
+ llvm::Value *Mat = EmitScalarExpr(E->getBase());
+ Address MatMem = CreateMemTemp(E->getBase()->getType());
+ QualType Ty = E->getBase()->getType();
+ llvm::Type *LTy = convertTypeForLoadStore(Ty, Mat->getType());
+ if (LTy->getScalarSizeInBits() > Mat->getType()->getScalarSizeInBits())
+ Mat = Builder.CreateZExt(Mat, LTy);
+ Builder.CreateStore(Mat, MatMem);
+ Base = MakeAddrLValue(MatMem, Ty, AlignmentSource::Decl);
+ }
+ QualType type =
----------------
hekota wrote:
```suggestion
QualType ResultType =
```
Nit - local var name should be uppercase.
https://github.com/llvm/llvm-project/pull/171225
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits