Lines Matching defs:funcOp
38 createGlobalVarForEntryPointArgument(OpBuilder &builder, spirv::FuncOp funcOp,
41 auto spirvModule = funcOp->getParentOfType<spirv::ModuleOp>();
46 builder.setInsertionPoint(funcOp.getOperation());
48 funcOp.getName().str() + "_arg_" + std::to_string(argIndex);
53 auto varType = funcOp.getFunctionType().getInput(argIndex);
75 funcOp.getLoc(), varType, varName, abiInfo.getDescriptorSet(),
82 getInterfaceVariables(spirv::FuncOp funcOp,
84 auto module = funcOp->getParentOfType<spirv::ModuleOp>();
88 spirv::TargetEnvAttr targetEnvAttr = spirv::lookupTargetEnv(funcOp);
96 funcOp.walk([&](spirv::AddressOfOp addressOfOp) {
115 funcOp.getContext(), cast<spirv::GlobalVariableOp>(var).getSymName()));
121 static LogicalResult lowerEntryPointABIAttr(spirv::FuncOp funcOp,
125 funcOp->getAttrOfType<spirv::EntryPointABIAttr>(entryPointAttrName);
130 spirv::TargetEnvAttr targetEnvAttr = spirv::lookupTargetEnv(funcOp);
134 auto spirvModule = funcOp->getParentOfType<spirv::ModuleOp>();
140 if (failed(getInterfaceVariables(funcOp, interfaceVars))) {
147 return funcOp.emitRemark("lower entry point failure: could not select "
150 builder.create<spirv::EntryPointOp>(funcOp.getLoc(), *executionModel, funcOp,
158 builder.create<spirv::ExecutionModeOp>(funcOp.getLoc(), funcOp,
171 builder.create<spirv::ExecutionModeOp>(funcOp.getLoc(), funcOp,
185 funcOp.getLoc(), funcOp,
195 funcOp->setAttr(entryPointAttrName, entryPointAttr);
197 funcOp->removeAttr(entryPointAttrName);
214 matchAndRewrite(spirv::FuncOp funcOp, OpAdaptor adaptor,
227 spirv::FuncOp funcOp, OpAdaptor adaptor,
229 if (!funcOp->getAttrOfType<spirv::EntryPointABIAttr>(
235 funcOp.getFunctionType().getNumInputs());
243 rewriter.setInsertionPointToStart(&funcOp.front());
246 llvm::enumerate(funcOp.getFunctionType().getInputs())) {
247 auto abiInfo = funcOp.getArgAttrOfType<spirv::InterfaceVarABIAttr>(
257 rewriter, funcOp, argType.index(), abiInfo);
263 rewriter.create<spirv::AddressOfOp>(funcOp.getLoc(), var);
272 spirv::ConstantOp::getZero(indexType, funcOp.getLoc(), rewriter);
274 funcOp.getLoc(), replacement, zero.getConstant());
275 replacement = rewriter.create<spirv::LoadOp>(funcOp.getLoc(), loadPtr);
279 if (failed(rewriter.convertRegionTypes(&funcOp.getBody(), *getTypeConverter(),
284 rewriter.modifyOpInPlace(funcOp, [&] {
285 funcOp.setType(rewriter.getFunctionType(
340 module.walk([&](spirv::FuncOp funcOp) {
341 if (funcOp->getAttrOfType<spirv::EntryPointABIAttr>(entryPointAttrName)) {
342 entryPointFns.push_back(funcOp);