Lines Matching defs:funcOp
45 void normalizeFuncOpMemRefs(func::FuncOp funcOp, ModuleOp moduleOp);
46 bool areMemRefsNormalizable(func::FuncOp funcOp);
47 void updateFunctionSignature(func::FuncOp funcOp, ModuleOp moduleOp);
49 func::FuncOp funcOp, ModuleOp moduleOp,
51 Operation *createOpResultsNormalized(func::FuncOp funcOp, Operation *oldOp);
71 moduleOp.walk([&](func::FuncOp funcOp) { normalizableFuncs.insert(funcOp); });
79 moduleOp.walk([&](func::FuncOp funcOp) {
80 if (normalizableFuncs.contains(funcOp)) {
81 if (!areMemRefsNormalizable(funcOp)) {
83 << "@" << funcOp.getName()
88 setCalleesAndCallersNonNormalizable(funcOp, moduleOp,
97 for (func::FuncOp &funcOp : normalizableFuncs)
98 normalizeFuncOpMemRefs(funcOp, moduleOp);
114 func::FuncOp funcOp, ModuleOp moduleOp,
116 if (!normalizableFuncs.contains(funcOp))
120 llvm::dbgs() << "@" << funcOp.getName()
122 normalizableFuncs.erase(funcOp);
125 funcOp.getSymbolUses(moduleOp);
131 for (func::FuncOp &funcOp : normalizableFuncs) {
132 if (parentFuncOp == funcOp) {
133 setCalleesAndCallersNonNormalizable(funcOp, moduleOp,
141 funcOp.walk([&](func::CallOp callOp) {
143 for (func::FuncOp &funcOp : normalizableFuncs) {
145 if (callee == funcOp.getNameAttr()) {
146 setCalleesAndCallersNonNormalizable(funcOp, moduleOp,
161 bool NormalizeMemRefs::areMemRefsNormalizable(func::FuncOp funcOp) {
163 if (funcOp.isExternal())
166 if (funcOp
177 if (funcOp
188 if (funcOp
204 for (unsigned argIndex : llvm::seq<unsigned>(0, funcOp.getNumArguments())) {
205 BlockArgument oldMemRef = funcOp.getArgument(argIndex);
221 void NormalizeMemRefs::updateFunctionSignature(func::FuncOp funcOp,
223 FunctionType functionType = funcOp.getFunctionType();
230 if (!funcOp.isExternal()) {
232 for (const auto &argEn : llvm::enumerate(funcOp.getArguments()))
237 funcOp.walk([&](func::ReturnOp returnOp) {
273 funcOp.getSymbolUses(moduleOp);
325 // TODO: If funcOp doesn't return any memref type then no need to update
338 if (!funcOp.isExternal())
339 funcOp.setType(newFuncType);
351 void NormalizeMemRefs::normalizeFuncOpMemRefs(func::FuncOp funcOp,
357 funcOp.walk([&](memref::AllocOp op) { allocOps.push_back(op); });
362 funcOp.walk([&](memref::AllocaOp op) { allocaOps.push_back(op); });
367 OpBuilder b(funcOp);
369 FunctionType functionType = funcOp.getFunctionType();
371 funcOp.getArguments(), [](BlockArgument arg) { return arg.getLoc(); }));
387 if (newMemRefType == memrefType || funcOp.isExternal()) {
395 BlockArgument newMemRef = funcOp.front().insertArgument(
397 BlockArgument oldMemRef = funcOp.getArgument(argIndex + 1);
411 funcOp.front().eraseArgument(argIndex);
417 funcOp.front().eraseArgument(argIndex + 1);
425 funcOp.walk([&](Operation *op) {
428 !funcOp.isExternal()) {
430 Operation *newOp = createOpResultsNormalized(funcOp, op);
479 if (funcOp.isExternal()) {
501 funcOp.setType(newFuncType);
503 updateFunctionSignature(funcOp, moduleOp);
511 Operation *NormalizeMemRefs::createOpResultsNormalized(func::FuncOp funcOp,
520 OpBuilder b(funcOp);