MLIR 23.0.0git
mlir::abi::ArgClassification Struct Reference

Describes how a single argument or return value is passed after ABI lowering. More...

#include "mlir/ABI/ABIRewriteContext.h"

Static Public Member Functions

static ArgClassification getDirect (Type coerced=nullptr)
static ArgClassification getIgnore ()
static ArgClassification getIndirect (llvm::Align align, bool byVal=true)
static ArgClassification getExtend (Type coerced, bool signExt)

Public Attributes

ArgKind kind = ArgKind::Direct
Type coercedType = nullptr
 The ABI-coerced type, if different from the original.
llvm::Align indirectAlign = llvm::Align(1)
 For Indirect: alignment of the pointed-to object.
bool signExtend = false
 For Extend: whether to sign-extend (true) or zero-extend (false).
bool canFlatten = true
 For Direct: whether a struct coercion can be flattened into individual register-width arguments.
bool byVal = false
 For Indirect: whether the callee gets ownership (byval).

Detailed Description

Describes how a single argument or return value is passed after ABI lowering.

Definition at line 57 of file ABIRewriteContext.h.

Member Function Documentation

◆ getDirect()

ArgClassification mlir::abi::ArgClassification::getDirect ( Type coerced = nullptr)
inlinestatic

Definition at line 77 of file ABIRewriteContext.h.

References coercedType, mlir::abi::Direct, and kind.

◆ getExtend()

ArgClassification mlir::abi::ArgClassification::getExtend ( Type coerced,
bool signExt )
inlinestatic

Definition at line 98 of file ABIRewriteContext.h.

References coercedType, mlir::abi::Extend, kind, and signExtend.

◆ getIgnore()

ArgClassification mlir::abi::ArgClassification::getIgnore ( )
inlinestatic

Definition at line 84 of file ABIRewriteContext.h.

References mlir::abi::Ignore, and kind.

◆ getIndirect()

ArgClassification mlir::abi::ArgClassification::getIndirect ( llvm::Align align,
bool byVal = true )
inlinestatic

Definition at line 90 of file ABIRewriteContext.h.

References byVal, mlir::abi::Indirect, indirectAlign, and kind.

Member Data Documentation

◆ byVal

bool mlir::abi::ArgClassification::byVal = false

For Indirect: whether the callee gets ownership (byval).

Definition at line 75 of file ABIRewriteContext.h.

Referenced by getIndirect().

◆ canFlatten

bool mlir::abi::ArgClassification::canFlatten = true

For Direct: whether a struct coercion can be flattened into individual register-width arguments.

Definition at line 72 of file ABIRewriteContext.h.

◆ coercedType

Type mlir::abi::ArgClassification::coercedType = nullptr

The ABI-coerced type, if different from the original.

Null means use the original type.

Definition at line 62 of file ABIRewriteContext.h.

Referenced by getDirect(), and getExtend().

◆ indirectAlign

llvm::Align mlir::abi::ArgClassification::indirectAlign = llvm::Align(1)

For Indirect: alignment of the pointed-to object.

Definition at line 65 of file ABIRewriteContext.h.

Referenced by getIndirect().

◆ kind

ArgKind mlir::abi::ArgClassification::kind = ArgKind::Direct

Definition at line 58 of file ABIRewriteContext.h.

Referenced by getDirect(), getExtend(), getIgnore(), and getIndirect().

◆ signExtend

bool mlir::abi::ArgClassification::signExtend = false

For Extend: whether to sign-extend (true) or zero-extend (false).

Definition at line 68 of file ABIRewriteContext.h.

Referenced by getExtend().


The documentation for this struct was generated from the following file: