LLVM 22.0.0git
|
#include "llvm/IR/InlineAsm.h"
Public Member Functions | |
Flag () | |
Flag (uint32_t F) | |
Flag (enum Kind K, unsigned NumOps) | |
operator uint32_t () | |
Kind | getKind () const |
bool | isRegUseKind () const |
bool | isRegDefKind () const |
bool | isRegDefEarlyClobberKind () const |
bool | isClobberKind () const |
bool | isImmKind () const |
bool | isMemKind () const |
bool | isFuncKind () const |
StringRef | getKindName () const |
unsigned | getNumOperandRegisters () const |
getNumOperandRegisters - Extract the number of registers field from the inline asm operand flag. | |
bool | isUseOperandTiedToDef (unsigned &Idx) const |
isUseOperandTiedToDef - Return true if the flag of the inline asm operand indicates it is an use operand that's matched to a def operand. | |
bool | hasRegClassConstraint (unsigned &RC) const |
hasRegClassConstraint - Returns true if the flag contains a register class constraint. | |
ConstraintCode | getMemoryConstraintID () const |
void | setMatchingOp (unsigned OperandNo) |
setMatchingOp - Augment an existing flag with information indicating that this input operand is tied to a previous output operand. | |
void | setRegClass (unsigned RC) |
setRegClass - Augment an existing flag with the required register class for the following register operands. | |
void | setMemConstraint (ConstraintCode C) |
setMemConstraint - Augment an existing flag with the constraint code for a memory constraint. | |
void | clearMemConstraint () |
clearMemConstraint - Similar to setMemConstraint(0), but without the assertion checking that the constraint has not been set previously. | |
void | setRegMayBeFolded (bool B) |
Set a bit to denote that while this operand is some kind of register (use, def, ...), a memory flag did appear in the original constraint list. | |
bool | getRegMayBeFolded () const |
Definition at line 306 of file InlineAsm.h.
|
inline |
Definition at line 322 of file InlineAsm.h.
|
inlineexplicit |
Definition at line 323 of file InlineAsm.h.
References F.
Definition at line 324 of file InlineAsm.h.
References AbstractManglingParser< Derived, Alloc >::NumOps, and llvm::Bitfield::set().
|
inline |
clearMemConstraint - Similar to setMemConstraint(0), but without the assertion checking that the constraint has not been set previously.
Definition at line 419 of file InlineAsm.h.
References assert(), isFuncKind(), isMemKind(), llvm::Bitfield::set(), and llvm::InlineAsm::Unknown.
|
inline |
Definition at line 329 of file InlineAsm.h.
References llvm::Bitfield::get().
Referenced by getKindName(), isClobberKind(), isFuncKind(), isImmKind(), isMemKind(), isRegDefEarlyClobberKind(), isRegDefKind(), and isRegUseKind().
|
inline |
Definition at line 339 of file InlineAsm.h.
References llvm::InlineAsm::Clobber, llvm::InlineAsm::Func, getKind(), llvm::InlineAsm::Imm, llvm_unreachable, llvm::InlineAsm::Mem, llvm::InlineAsm::RegDef, llvm::InlineAsm::RegDefEarlyClobber, and llvm::InlineAsm::RegUse.
|
inline |
Definition at line 386 of file InlineAsm.h.
References assert(), llvm::Bitfield::get(), isFuncKind(), and isMemKind().
Referenced by setMemConstraint().
|
inline |
getNumOperandRegisters - Extract the number of registers field from the inline asm operand flag.
Definition at line 360 of file InlineAsm.h.
References llvm::Bitfield::get().
|
inline |
Definition at line 439 of file InlineAsm.h.
References assert(), llvm::Bitfield::get(), isRegDefEarlyClobberKind(), isRegDefKind(), and isRegUseKind().
hasRegClassConstraint - Returns true if the flag contains a register class constraint.
Sets RC to the register class ID.
Definition at line 375 of file InlineAsm.h.
|
inline |
Definition at line 335 of file InlineAsm.h.
References llvm::InlineAsm::Clobber, and getKind().
|
inline |
Definition at line 338 of file InlineAsm.h.
References llvm::InlineAsm::Func, and getKind().
Referenced by clearMemConstraint(), and getMemoryConstraintID().
|
inline |
Definition at line 336 of file InlineAsm.h.
References getKind(), and llvm::InlineAsm::Imm.
Referenced by setRegClass().
|
inline |
Definition at line 337 of file InlineAsm.h.
References getKind(), and llvm::InlineAsm::Mem.
Referenced by clearMemConstraint(), getMemoryConstraintID(), llvm::InlineAsmLowering::lowerInlineAsm(), and setRegClass().
|
inline |
Definition at line 332 of file InlineAsm.h.
References getKind(), and llvm::InlineAsm::RegDefEarlyClobber.
Referenced by getRegMayBeFolded(), llvm::InlineAsmLowering::lowerInlineAsm(), and setRegMayBeFolded().
|
inline |
Definition at line 331 of file InlineAsm.h.
References getKind(), and llvm::InlineAsm::RegDef.
Referenced by getRegMayBeFolded(), llvm::InlineAsmLowering::lowerInlineAsm(), and setRegMayBeFolded().
|
inline |
Definition at line 330 of file InlineAsm.h.
References getKind(), and llvm::InlineAsm::RegUse.
Referenced by getRegMayBeFolded(), and setRegMayBeFolded().
isUseOperandTiedToDef - Return true if the flag of the inline asm operand indicates it is an use operand that's matched to a def operand.
Definition at line 366 of file InlineAsm.h.
|
inline |
Definition at line 328 of file InlineAsm.h.
|
inline |
setMatchingOp - Augment an existing flag with information indicating that this input operand is tied to a previous output operand.
Definition at line 394 of file InlineAsm.h.
References assert(), and llvm::Bitfield::set().
Referenced by llvm::InlineAsmLowering::lowerInlineAsm().
|
inline |
setMemConstraint - Augment an existing flag with the constraint code for a memory constraint.
Definition at line 413 of file InlineAsm.h.
References assert(), llvm::CallingConv::C, getMemoryConstraintID(), llvm::Bitfield::set(), and llvm::InlineAsm::Unknown.
Referenced by llvm::InlineAsmLowering::lowerInlineAsm().
|
inline |
setRegClass - Augment an existing flag with the required register class for the following register operands.
A tied use operand cannot have a register class, use the register class from the def operand instead.
Definition at line 403 of file InlineAsm.h.
References assert(), isImmKind(), isMemKind(), and llvm::Bitfield::set().
|
inline |
Set a bit to denote that while this operand is some kind of register (use, def, ...), a memory flag did appear in the original constraint list.
This is set by the instruction selection framework, and consumed by the register allocator. While the register allocator is generally responsible for spilling registers, we need to be able to distinguish between registers that the register allocator has permission to fold ("rm") vs ones it does not ("r"). This is because the inline asm may use instructions which don't support memory addressing modes for that operand.
Definition at line 434 of file InlineAsm.h.
References assert(), B(), isRegDefEarlyClobberKind(), isRegDefKind(), isRegUseKind(), and llvm::Bitfield::set().