|
LLVM
8.0.1
|
This class provides the information for the target register banks. More...
#include "Target/X86/X86LegalizerInfo.h"


Public Member Functions | |
| X86LegalizerInfo (const X86Subtarget &STI, const X86TargetMachine &TM) | |
Public Member Functions inherited from llvm::LegalizerInfo | |
| LegalizerInfo () | |
| virtual | ~LegalizerInfo ()=default |
| unsigned | getOpcodeIdxForOpcode (unsigned Opcode) const |
| unsigned | getActionDefinitionsIdx (unsigned Opcode) const |
| void | computeTables () |
| Compute any ancillary tables needed to quickly decide how an operation should be handled. More... | |
| void | verify (const MCInstrInfo &MII) const |
| Perform simple self-diagnostic and assert if there is anything obviously wrong with the actions set up. More... | |
| void | setAction (const InstrAspect &Aspect, LegalizeAction Action) |
| More friendly way to set an action for common types that have an LLT representation. More... | |
| void | setLegalizeScalarToDifferentSizeStrategy (const unsigned Opcode, const unsigned TypeIdx, SizeChangeStrategy S) |
| The setAction calls record the non-size-changing legalization actions to take on specificly-sized types. More... | |
| void | setLegalizeVectorElementToDifferentSizeStrategy (const unsigned Opcode, const unsigned TypeIdx, SizeChangeStrategy S) |
| See also setLegalizeScalarToDifferentSizeStrategy. More... | |
| const LegalizeRuleSet & | getActionDefinitions (unsigned Opcode) const |
| Get the action definitions for the given opcode. More... | |
| LegalizeRuleSet & | getActionDefinitionsBuilder (unsigned Opcode) |
| Get the action definition builder for the given opcode. More... | |
| LegalizeRuleSet & | getActionDefinitionsBuilder (std::initializer_list< unsigned > Opcodes) |
| Get the action definition builder for the given set of opcodes. More... | |
| void | aliasActionDefinitions (unsigned OpcodeTo, unsigned OpcodeFrom) |
| LegalizeActionStep | getAction (const LegalityQuery &Query) const |
| Determine what action should be taken to legalize the described instruction. More... | |
| LegalizeActionStep | getAction (const MachineInstr &MI, const MachineRegisterInfo &MRI) const |
| Determine what action should be taken to legalize the given generic instruction. More... | |
| bool | isLegal (const MachineInstr &MI, const MachineRegisterInfo &MRI) const |
| virtual bool | legalizeCustom (MachineInstr &MI, MachineRegisterInfo &MRI, MachineIRBuilder &MIRBuilder, GISelChangeObserver &Observer) const |
Additional Inherited Members | |
Public Types inherited from llvm::LegalizerInfo | |
| using | SizeAndAction = std::pair< uint16_t, LegalizeAction > |
| using | SizeAndActionsVec = std::vector< SizeAndAction > |
| using | SizeChangeStrategy = std::function< SizeAndActionsVec(const SizeAndActionsVec &v)> |
Static Public Member Functions inherited from llvm::LegalizerInfo | |
| static bool | needsLegalizingToDifferentSize (const LegalizeAction Action) |
| static SizeAndActionsVec | unsupportedForDifferentSizes (const SizeAndActionsVec &v) |
| A SizeChangeStrategy for the common case where legalization for a particular operation consists of only supporting a specific set of type sizes. More... | |
| static SizeAndActionsVec | widenToLargerTypesAndNarrowToLargest (const SizeAndActionsVec &v) |
| A SizeChangeStrategy for the common case where legalization for a particular operation consists of widening the type to a large legal type, unless there is no such type and then instead it should be narrowed to the largest legal type. More... | |
| static SizeAndActionsVec | widenToLargerTypesUnsupportedOtherwise (const SizeAndActionsVec &v) |
| static SizeAndActionsVec | narrowToSmallerAndUnsupportedIfTooSmall (const SizeAndActionsVec &v) |
| static SizeAndActionsVec | narrowToSmallerAndWidenToSmallest (const SizeAndActionsVec &v) |
| static SizeAndActionsVec | moreToWiderTypesAndLessToWidest (const SizeAndActionsVec &v) |
| A SizeChangeStrategy for the common case where legalization for a particular vector operation consists of having more elements in the vector, to a type that is legal. More... | |
| static SizeAndActionsVec | increaseToLargerTypesAndDecreaseToLargest (const SizeAndActionsVec &v, LegalizeAction IncreaseAction, LegalizeAction DecreaseAction) |
| Helper function to implement many typical SizeChangeStrategy functions. More... | |
| static SizeAndActionsVec | decreaseToSmallerTypesAndIncreaseToSmallest (const SizeAndActionsVec &v, LegalizeAction DecreaseAction, LegalizeAction IncreaseAction) |
| Helper function to implement many typical SizeChangeStrategy functions. More... | |
This class provides the information for the target register banks.
Definition at line 26 of file X86LegalizerInfo.h.
| X86LegalizerInfo::X86LegalizerInfo | ( | const X86Subtarget & | STI, |
| const X86TargetMachine & | TM | ||
| ) |
Definition at line 58 of file X86LegalizerInfo.cpp.
References llvm::LegalizeRuleSet::clampScalar(), llvm::LegalizerInfo::computeTables(), llvm::LegalizerInfo::getActionDefinitionsBuilder(), llvm::X86Subtarget::getInstrInfo(), llvm::TargetMachine::getPointerSizeInBits(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasDQI(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasVLX(), llvm::X86Subtarget::is64Bit(), llvm::LegalizeActions::Legal, llvm::LegalizeRuleSet::legalFor(), llvm::LegalizeRuleSet::legalForCartesianProduct(), llvm::LegalizerInfo::narrowToSmallerAndWidenToSmallest(), llvm::LLT::pointer(), llvm::LLT::scalar(), llvm::LegalizerInfo::setAction(), llvm::LegalizerInfo::setLegalizeScalarToDifferentSizeStrategy(), llvm::LLT::vector(), llvm::LegalizerInfo::verify(), widen_1(), llvm::LegalizeRuleSet::widenScalarToNextPow2(), llvm::LegalizerInfo::widenToLargerTypesAndNarrowToLargest(), and llvm::LegalizerInfo::widenToLargerTypesUnsupportedOtherwise().
1.8.13