@@ -374,6 +374,8 @@ class TypeAnalyzer : public ForwardDataFlowAnalysis<ValueKnowledge> {
374374 return visitReshapeLikeOp (resize, operands);
375375 } else if (auto transposeInt = dyn_cast<AtenTransposeIntOp>(op)) {
376376 return visitAtenTransposeIntOp (transposeInt, operands);
377+ } else if (auto t = dyn_cast<AtenTOp>(op)) {
378+ return visitAtenTOp (t, operands);
377379 } else if (auto permute = dyn_cast<AtenPermuteOp>(op)) {
378380 return visitAtenPermuteOp (permute, operands);
379381 } else if (auto tensorFloat = dyn_cast<AtenTensorFloatOp>(op)) {
@@ -550,6 +552,8 @@ class TypeAnalyzer : public ForwardDataFlowAnalysis<ValueKnowledge> {
550552 visitAtenTransposeIntOp (AtenTransposeIntOp op,
551553 ArrayRef<LatticeElement<ValueKnowledge> *> operands);
552554 ChangeResult
555+ visitAtenTOp (AtenTOp op, ArrayRef<LatticeElement<ValueKnowledge> *> operands);
556+ ChangeResult
553557 visitAtenPermuteOp (AtenPermuteOp op,
554558 ArrayRef<LatticeElement<ValueKnowledge> *> operands);
555559 ChangeResult visitNumToTensorOp (PrimNumToTensorScalarOp op);
@@ -1242,6 +1246,24 @@ ChangeResult TypeAnalyzer::visitAtenTransposeIntOp(
12421246 return getLatticeElement (op.getResult ()).join (knowledge);
12431247}
12441248
1249+ ChangeResult TypeAnalyzer::visitAtenTOp (
1250+ AtenTOp op, ArrayRef<LatticeElement<ValueKnowledge> *> operands) {
1251+ auto input = operands[0 ]->getValue ();
1252+ auto knowledge =
1253+ ValueKnowledge::getNotNonePessimisticValueState (op.getContext ());
1254+ knowledge.dtype = input.dtype ;
1255+ if (!input.hasSizes )
1256+ return getLatticeElement (op.getResult ()).join (knowledge);
1257+ int64_t inputRank = input.sizes .size ();
1258+ if (inputRank >= 0 && inputRank <= 2 ) {
1259+ knowledge.hasSizes = input.hasSizes ;
1260+ knowledge.sizes = input.sizes ;
1261+ if (inputRank == 2 )
1262+ std::swap (knowledge.sizes [0 ], knowledge.sizes [1 ]);
1263+ }
1264+ return getLatticeElement (op.getResult ()).join (knowledge);
1265+ }
1266+
12451267ChangeResult TypeAnalyzer::visitAtenPermuteOp (
12461268 AtenPermuteOp op, ArrayRef<LatticeElement<ValueKnowledge> *> operands) {
12471269 auto input = operands[0 ]->getValue ();
0 commit comments