Lines Matching defs:MMI
376 /// @param MMI Parameters of the matrix multiplication operands.
381 MatMulInfoTy &MMI) {
386 if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.i, MMI.j) && !MMI.ReadFromC) {
387 MMI.ReadFromC = MemAccess;
390 if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.i, MMI.k) && !MMI.A) {
391 MMI.A = MemAccess;
394 if (isMatMulOperandAcc(StmtDomain, AccMap, MMI.k, MMI.j) && !MMI.B) {
395 MMI.B = MemAccess;
410 /// @param MMI Parameters of the matrix multiplication operands.
415 MatMulInfoTy &MMI) {
423 permuteDimensions(PartialSchedule, isl::dim::out, MMI.i, OutDimNum - 1);
425 permuteDimensions(PartialSchedule, isl::dim::out, MMI.j, OutDimNum - 1);
427 permuteDimensions(PartialSchedule, isl::dim::out, MMI.k, OutDimNum - 1);
432 if (MemAccessPtr->isLatestArrayKind() && MemAccessPtr != MMI.WriteToC &&
433 !isMatMulNonScalarReadAccess(MemAccessPtr, MMI) &&
498 /// @MMI Parameters of the matrix multiplication operands.
500 MatMulInfoTy &MMI) {
514 if (!isMatMulOperandAcc(Stmt->getDomain(), AccMap, MMI.i, MMI.j))
516 MMI.WriteToC = MemAccessPtr;
520 if (!containsOnlyMatMulDep(PartialSchedule, D, MMI.k))
523 if (!MMI.WriteToC || !containsOnlyMatrMultAcc(PartialSchedule, MMI))
526 if (!MMI.A || !MMI.B || !MMI.ReadFromC)
598 /// @param MMI Parameters of the matrix multiplication operands.
601 static uint64_t getMatMulAlignTypeSize(const MatMulInfoTy &MMI) {
602 auto *S = MMI.A->getStatement()->getParent();
604 auto ElementSizeA = DL.getTypeAllocSize(MMI.A->getElementType());
605 auto ElementSizeB = DL.getTypeAllocSize(MMI.B->getElementType());
606 auto ElementSizeC = DL.getTypeAllocSize(MMI.WriteToC->getElementType());
613 /// @param MMI Parameters of the matrix multiplication operands.
616 static uint64_t getMatMulTypeSize(const MatMulInfoTy &MMI) {
617 auto *S = MMI.A->getStatement()->getParent();
619 auto ElementSizeA = DL.getTypeSizeInBits(MMI.A->getElementType());
620 auto ElementSizeB = DL.getTypeSizeInBits(MMI.B->getElementType());
621 auto ElementSizeC = DL.getTypeSizeInBits(MMI.WriteToC->getElementType());
634 /// @param MMI Parameters of the matrix multiplication operands.
638 const MatMulInfoTy &MMI) {
648 auto ElementSize = getMatMulTypeSize(MMI);
708 /// @param MMI Parameters of the matrix multiplication operands.
715 const MatMulInfoTy &MMI) {
740 auto ElementSize = getMatMulAlignTypeSize(MMI);
803 MatMulInfoTy &MMI) {
812 S->createScopArrayInfo(MMI.B->getElementType(), "Packed_B",
816 isl::map AccRelB = MMI.B->getLatestAccessRelation();
823 MMI.B->setNewAccessRelation(AccRelPackedB);
830 ExtMap = ExtMap.fix_si(isl::dim::out, MMI.i, 0);
840 MatMulInfoTy &MMI) {
851 MMI.A->getElementType(), "Packed_A",
855 isl::map AccRelA = MMI.A->getLatestAccessRelation();
887 MMI.A->setNewAccessRelation(AccRelPackedA);
926 /// @param MMI Parameters of the matrix multiplication operands.
932 MatMulInfoTy &MMI) {
941 optimizePackedB(Node, Stmt, MapOldIndVar, MicroParams, MacroParams, MMI);
945 optimizePackedA(Node, Stmt, MapOldIndVar, MicroParams, MacroParams, MMI);
1054 MatMulInfoTy &MMI) {
1061 Node = permuteBandNodeDimensions(Node, MMI.i, DimOutNum - 3);
1062 int NewJ = MMI.j == DimOutNum - 3 ? MMI.i : MMI.j;
1063 int NewK = MMI.k == DimOutNum - 3 ? MMI.i : MMI.k;
1067 auto MicroKernelParams = getMicroKernelParams(TTI, MMI);
1068 auto MacroKernelParams = getMacroKernelParams(TTI, MicroKernelParams, MMI);
1081 MacroKernelParams, MMI);
1103 /// @param MMI Parameters of the matrix multiplication operands.
1105 MatMulInfoTy &MMI) {
1113 if (containsMatrMult(NewPartialSchedule, D, MMI))
1830 MatMulInfoTy MMI;
1831 if (PMBasedMMMOpts && isMatrMultPattern(Node, D, MMI)) {
1833 return optimizeMatMulPattern(Node, TTI, MMI);