================ @@ -264,6 +263,37 @@ static void addDepdendentLibs(mlir::ModuleOp &mlirModule, } } +// Add to MLIR code target specific items which are dependent on target +// configuration specified by the user +static void addTargetSpecificMLIRItems(mlir::ModuleOp &mlirModule, + CompilerInstance &ci) { + const TargetOptions &targetOpts = ci.getInvocation().getTargetOpts(); + const llvm::Triple triple(targetOpts.triple); + if (triple.isAMDGPU()) { + unsigned oclcABIVERsion; + const unsigned defaultOclcABIVERsion = 400; + mlir::OpBuilder builder(mlirModule.getContext()); + const CodeGenOptions &codeGenOpts = ci.getInvocation().getCodeGenOpts(); + if (codeGenOpts.CodeObjectVersion == + CodeGenOptions::CodeObjectVersionKind::COV_None) + oclcABIVERsion = defaultOclcABIVERsion; + else + oclcABIVERsion = static_cast<unsigned>(codeGenOpts.CodeObjectVersion); + + auto int32Type = builder.getI32Type(); + auto covInfo = builder.create<mlir::LLVM::GlobalOp>( + mlirModule.getLoc(), int32Type, true, mlir::LLVM::Linkage::WeakODR, + "__oclc_ABI_version", + builder.getIntegerAttr(int32Type, oclcABIVERsion)); + covInfo.setUnnamedAddr(mlir::LLVM::UnnamedAddr::Local); + covInfo.setAddrSpace(4); ---------------- DominikAdamski wrote:
This address space is described here: https://llvm.org/docs/AMDGPUUsage.html#address-spaces . 4 corresponds to Constant Address space. There is an enum AddrSpace which describes the address spaces. It is defined as part of Clang TargetInfo: https://github.com/llvm/llvm-project/blob/main/clang/lib/Basic/Targets/AMDGPU.h . I will move this enum to llvm directory as the next step. Currently I added only TODO comment because TargetInfo is one of basic Clang classes and I would like to do it as separate step in case of any regression. https://github.com/llvm/llvm-project/pull/72638 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits