16#include "TargetInfo.h"
26class AArch64ABIInfo :
public ABIInfo {
28 AArch64ABIInfo(CIRGenTypes &cgt) : ABIInfo(cgt) {}
33 AArch64TargetCIRGenInfo(CIRGenTypes &cgt)
34 : TargetCIRGenInfo(std::make_unique<AArch64ABIInfo>(cgt)) {}
36 void setTargetAttributes(
const Decl *d, mlir::Operation *gv,
37 CIRGenModule &cgm)
const override {
38 auto fn = mlir::dyn_cast<cir::FuncOp>(gv);
45 bool isScalarizableAsmOperand(CIRGenFunction &cgf,
46 mlir::Type ty)
const override {
48 cgf.
cgm.
errorNYI(
"AArch64 LS64 scalarizable asm operand");
54 bool wouldInliningViolateFunctionCallABI(
55 const FunctionDecl *caller,
const FunctionDecl *callee)
const override;
60bool AArch64TargetCIRGenInfo::wouldInliningViolateFunctionCallABI(
62 return caller && callee &&
64 CodeGenUtils::ArmSMEInlinability::Ok;
67std::unique_ptr<TargetCIRGenInfo>
69 return std::make_unique<AArch64TargetCIRGenInfo>(cgt);
const TargetInfo & getTarget() const
DiagnosticBuilder errorNYI(SourceLocation, llvm::StringRef)
Helpers to emit "not yet implemented" error diagnostics.
This class organizes the cross-module state that is used while lowering AST types to CIR types.
virtual bool isScalarizableAsmOperand(CIRGenFunction &cgf, mlir::Type ty) const
Represents a function declaration or definition.
virtual bool hasFeature(StringRef Feature) const
Determine whether the given target has the given feature.
@ Decl
The l-value was an access to a declared entity or something equivalently strong, like the address of ...
std::unique_ptr< TargetCIRGenInfo > createAArch64TargetCIRGenInfo(CIRGenTypes &cgt)
ArmSMEInlinability getArmSMEInlinability(const FunctionDecl *Caller, const FunctionDecl *Callee)
Determines if there are any Arm SME ABI issues with inlining Callee into Caller.
Top level wrappers for InstallAPI frontend operations.
static bool branchProtection()
static bool pointerAuthentication()