19using namespace mlir::abi;
26 AMDGPUABIClassifier(
const mlir::DataLayout &dl, mlir::ModuleOp modOp)
27 : CIRABIClassifierCommon(dl, modOp) {}
29 std::optional<ArgClassification> classifyVAArg(cir::VAArgOp vaArg)
override {
31 <<
"not yet implemented in CallConvLowering for AMDGPU";
37 const llvm::abi::TargetInfo &getTargetInfo(cir::FuncOp)
override;
40 std::unique_ptr<llvm::abi::TargetInfo> target;
43const llvm::abi::TargetInfo &AMDGPUABIClassifier::getTargetInfo(cir::FuncOp) {
46 auto langOpts = modOp->getAttrOfType<cir::LoweringLangOptionsAttr>(
47 cir::CIRDialect::getLoweringLangOptionsAttrName());
48 target = llvm::abi::createAMDGPUTargetInfo(
49 typeMapper.getTypeBuilder(),
50 langOpts && langOpts.getHip());
57std::unique_ptr<CIRABIClassifier>
59 mlir::ModuleOp modOp) {
60 return std::make_unique<AMDGPUABIClassifier>(dl, modOp);
Classifies through the LLVM ABI Lowering Library.
std::unique_ptr< CIRABIClassifier > createAMDGPUABIClassifier(const mlir::DataLayout &dl, mlir::ModuleOp modOp)
The AMDGPU classifier.