Lines Matching defs:funcOp

115 aliasingFuncOpBBArgsAnalysis(FuncOp funcOp, OneShotAnalysisState &state,
117 if (funcOp.getBody().empty()) {
120 FunctionType type = funcOp.getFunctionType();
129 funcState.aliasingReturnVals[funcOp][bbArgIdx].push_back(returnIdx);
136 SmallVector<func::ReturnOp> returnOps = getReturnOps(funcOp);
140 for (BlockArgument bbArg : funcOp.getArguments()) {
155 funcState.aliasingReturnVals[funcOp][bbArgIdx].push_back(alias);
168 for (BlockArgument bbArg : funcOp.getArguments()) {
207 funcState.equivalentFuncArgs[funcOp][i] = bbArgIdx;
213 static void annotateFuncArgAccess(func::FuncOp funcOp, int64_t idx, bool isRead,
215 OpBuilder b(funcOp.getContext());
226 funcOp.setArgAttr(idx, BufferizationDialect::kBufferAccessAttrName,
234 funcOpBbArgReadWriteAnalysis(FuncOp funcOp, OneShotAnalysisState &state,
236 for (int64_t idx = 0, e = funcOp.getFunctionType().getNumInputs(); idx < e;
239 if (!isa<TensorType>(funcOp.getFunctionType().getInput(idx)))
243 if (auto accessAttr = funcOp.getArgAttrOfType<StringAttr>(
249 } else if (funcOp.getBody().empty()) {
256 BlockArgument bbArg = funcOp.getArgument(idx);
262 annotateFuncArgAccess(funcOp, idx, isRead, isWritten);
264 funcState.readBbArgs[funcOp].insert(idx);
266 funcState.writtenBbArgs[funcOp].insert(idx);
275 auto funcOp = cast<func::FuncOp>(bbArg.getOwner()->getParentOp());
276 funcOp.removeArgAttr(bbArg.getArgNumber(),
278 funcOp.removeArgAttr(bbArg.getArgNumber(),
296 static void equivalenceAnalysis(func::FuncOp funcOp,
299 funcOp->walk([&](func::CallOp callOp) {
322 static bool hasTensorSignature(func::FuncOp funcOp) {
323 return llvm::any_of(funcOp.getFunctionType().getInputs(),
325 llvm::any_of(funcOp.getFunctionType().getResults(),
346 WalkResult res = moduleOp.walk([&](func::FuncOp funcOp) -> WalkResult {
348 numberCallOpsContainedInFuncOp[funcOp] = 0;
349 return funcOp.walk([&](func::CallOp callOp) -> WalkResult {
358 if (calledBy[calledFunction].insert(funcOp).second) {
359 numberCallOpsContainedInFuncOp[funcOp]++;
431 static void foldMemRefCasts(func::FuncOp funcOp) {
433 if (funcOp.getBody().empty())
437 SmallVector<func::ReturnOp> returnOps = getReturnOps(funcOp);
455 resultTypes[i] = funcOp.getFunctionType().getResult(i);
460 funcOp.getContext(), funcOp.getFunctionType().getInputs(), resultTypes);
461 funcOp.setType(newFuncType);
489 for (func::FuncOp funcOp : orderedFuncOps) {
490 if (!state.getOptions().isOpAllowed(funcOp))
494 funcState.startFunctionAnalysis(funcOp);
497 equivalenceAnalysis(funcOp, state, funcState);
499 // Analyze funcOp.
500 if (failed(analyzeOp(funcOp, state, statistics)))
504 if (failed(aliasingFuncOpBBArgsAnalysis(funcOp, state, funcState)) ||
505 failed(funcOpBbArgReadWriteAnalysis(funcOp, state, funcState)))
509 funcState.analyzedFuncOps[funcOp] = FuncOpAnalysisState::Analyzed;
513 for (func::FuncOp funcOp : remainingFuncOps) {
514 if (!state.getOptions().isOpAllowed(funcOp))
518 equivalenceAnalysis(funcOp, state, funcState);
520 // Analyze funcOp.
521 if (failed(analyzeOp(funcOp, state, statistics)))
571 for (func::FuncOp funcOp : orderedFuncOps) {
575 if (llvm::is_contained(options.noAnalysisFuncFilter, funcOp.getSymName())) {
580 if (failed(bufferizeOp(funcOp, updatedOptions, statistics)))
583 if (failed(bufferizeOp(funcOp, options, statistics)))
589 foldMemRefCasts(funcOp);