14#ifndef LLVM_CODEGEN_GLOBALISEL_GENERICMACHINEINSTRS_H
15#define LLVM_CODEGEN_GLOBALISEL_GENERICMACHINEINSTRS_H
88 switch (
MI->getOpcode()) {
89 case TargetOpcode::G_LOAD:
90 case TargetOpcode::G_STORE:
91 case TargetOpcode::G_ZEXTLOAD:
92 case TargetOpcode::G_SEXTLOAD:
93 case TargetOpcode::G_FPEXTLOAD:
94 case TargetOpcode::G_FPTRUNCSTORE:
120 return MI->getOpcode() == TargetOpcode::G_INDEXED_LOAD;
128 return MI->getOpcode() == TargetOpcode::G_INDEXED_SEXTLOAD ||
129 MI->getOpcode() == TargetOpcode::G_INDEXED_ZEXTLOAD;
137 switch (
MI->getOpcode()) {
138 case TargetOpcode::G_INDEXED_LOAD:
139 case TargetOpcode::G_INDEXED_ZEXTLOAD:
140 case TargetOpcode::G_INDEXED_SEXTLOAD:
152 return MI->getOpcode() == TargetOpcode::G_INDEXED_ZEXTLOAD;
160 return MI->getOpcode() == TargetOpcode::G_INDEXED_SEXTLOAD;
180 return MI->getOpcode() == TargetOpcode::G_INDEXED_STORE;
199 switch (
MI->getOpcode()) {
200 case TargetOpcode::G_LOAD:
201 case TargetOpcode::G_ZEXTLOAD:
202 case TargetOpcode::G_SEXTLOAD:
203 case TargetOpcode::G_FPEXTLOAD:
215 return MI->getOpcode() == TargetOpcode::G_LOAD;
223 return MI->getOpcode() == TargetOpcode::G_SEXTLOAD ||
224 MI->getOpcode() == TargetOpcode::G_ZEXTLOAD ||
225 MI->getOpcode() == TargetOpcode::G_FPEXTLOAD;
233 return MI->getOpcode() == TargetOpcode::G_SEXTLOAD;
241 return MI->getOpcode() == TargetOpcode::G_ZEXTLOAD;
249 return MI->getOpcode() == TargetOpcode::G_FPEXTLOAD;
260 switch (
MI->getOpcode()) {
261 case TargetOpcode::G_STORE:
262 case TargetOpcode::G_FPTRUNCSTORE:
274 return MI->getOpcode() == TargetOpcode::G_STORE;
282 return MI->getOpcode() == TargetOpcode::G_FPTRUNCSTORE;
295 return MI->getOpcode() == TargetOpcode::G_UNMERGE_VALUES;
310 switch (
MI->getOpcode()) {
311 case TargetOpcode::G_MERGE_VALUES:
312 case TargetOpcode::G_CONCAT_VECTORS:
313 case TargetOpcode::G_BUILD_VECTOR:
325 return MI->getOpcode() == TargetOpcode::G_MERGE_VALUES;
333 return MI->getOpcode() == TargetOpcode::G_CONCAT_VECTORS;
341 return MI->getOpcode() == TargetOpcode::G_BUILD_VECTOR;
349 return MI->getOpcode() == TargetOpcode::G_BUILD_VECTOR_TRUNC;
361 return MI->getOpcode() == TargetOpcode::G_SHUFFLE_VECTOR;
372 return MI->getOpcode() == TargetOpcode::G_PTR_ADD;
380 return MI->getOpcode() == TargetOpcode::G_IMPLICIT_DEF;
392 return MI->getOpcode() == TargetOpcode::G_SELECT;
406 return MI->getOpcode() == TargetOpcode::G_ICMP ||
407 MI->getOpcode() == TargetOpcode::G_FCMP;
415 return MI->getOpcode() == TargetOpcode::G_ICMP;
423 return MI->getOpcode() == TargetOpcode::G_FCMP;
442 switch (
MI->getOpcode()) {
443 case TargetOpcode::G_UADDO:
444 case TargetOpcode::G_SADDO:
445 case TargetOpcode::G_USUBO:
446 case TargetOpcode::G_SSUBO:
447 case TargetOpcode::G_UADDE:
448 case TargetOpcode::G_SADDE:
449 case TargetOpcode::G_USUBE:
450 case TargetOpcode::G_SSUBE:
451 case TargetOpcode::G_UMULO:
452 case TargetOpcode::G_SMULO:
469 case TargetOpcode::G_UADDO:
470 case TargetOpcode::G_SADDO:
471 case TargetOpcode::G_UADDE:
472 case TargetOpcode::G_SADDE:
482 case TargetOpcode::G_SADDO:
483 case TargetOpcode::G_SSUBO:
484 case TargetOpcode::G_SADDE:
485 case TargetOpcode::G_SSUBE:
494 switch (
MI->getOpcode()) {
495 case TargetOpcode::G_UADDO:
496 case TargetOpcode::G_SADDO:
497 case TargetOpcode::G_USUBO:
498 case TargetOpcode::G_SSUBO:
499 case TargetOpcode::G_UADDE:
500 case TargetOpcode::G_SADDE:
501 case TargetOpcode::G_USUBE:
502 case TargetOpcode::G_SSUBE:
517 switch (
MI->getOpcode()) {
518 case TargetOpcode::G_UADDO:
519 case TargetOpcode::G_SADDO:
534 switch (
MI->getOpcode()) {
535 case TargetOpcode::G_USUBO:
536 case TargetOpcode::G_SSUBO:
551 switch (
MI->getOpcode()) {
552 case TargetOpcode::G_UADDE:
553 case TargetOpcode::G_SADDE:
554 case TargetOpcode::G_USUBE:
555 case TargetOpcode::G_SSUBE:
574 case TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS:
575 case TargetOpcode::G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS:
584 case TargetOpcode::G_INTRINSIC_CONVERGENT:
585 case TargetOpcode::G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS:
593 switch (
MI->getOpcode()) {
594 case TargetOpcode::G_INTRINSIC:
595 case TargetOpcode::G_INTRINSIC_W_SIDE_EFFECTS:
596 case TargetOpcode::G_INTRINSIC_CONVERGENT:
597 case TargetOpcode::G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS:
609 switch (
MI->getOpcode()) {
610 case TargetOpcode::G_VECREDUCE_FADD:
611 case TargetOpcode::G_VECREDUCE_FMUL:
612 case TargetOpcode::G_VECREDUCE_FMAX:
613 case TargetOpcode::G_VECREDUCE_FMIN:
614 case TargetOpcode::G_VECREDUCE_FMAXIMUM:
615 case TargetOpcode::G_VECREDUCE_FMINIMUM:
616 case TargetOpcode::G_VECREDUCE_FMAXIMUMNUM:
617 case TargetOpcode::G_VECREDUCE_FMINIMUMNUM:
618 case TargetOpcode::G_VECREDUCE_ADD:
619 case TargetOpcode::G_VECREDUCE_MUL:
620 case TargetOpcode::G_VECREDUCE_AND:
621 case TargetOpcode::G_VECREDUCE_OR:
622 case TargetOpcode::G_VECREDUCE_XOR:
623 case TargetOpcode::G_VECREDUCE_SMAX:
624 case TargetOpcode::G_VECREDUCE_SMIN:
625 case TargetOpcode::G_VECREDUCE_UMAX:
626 case TargetOpcode::G_VECREDUCE_UMIN:
638 case TargetOpcode::G_VECREDUCE_FADD:
639 ScalarOpc = TargetOpcode::G_FADD;
641 case TargetOpcode::G_VECREDUCE_FMUL:
642 ScalarOpc = TargetOpcode::G_FMUL;
644 case TargetOpcode::G_VECREDUCE_FMAX:
645 ScalarOpc = TargetOpcode::G_FMAXNUM;
647 case TargetOpcode::G_VECREDUCE_FMIN:
648 ScalarOpc = TargetOpcode::G_FMINNUM;
650 case TargetOpcode::G_VECREDUCE_FMAXIMUM:
651 ScalarOpc = TargetOpcode::G_FMAXIMUM;
653 case TargetOpcode::G_VECREDUCE_FMINIMUM:
654 ScalarOpc = TargetOpcode::G_FMINIMUM;
656 case TargetOpcode::G_VECREDUCE_FMAXIMUMNUM:
657 ScalarOpc = TargetOpcode::G_FMAXIMUMNUM;
659 case TargetOpcode::G_VECREDUCE_FMINIMUMNUM:
660 ScalarOpc = TargetOpcode::G_FMINIMUMNUM;
662 case TargetOpcode::G_VECREDUCE_ADD:
663 ScalarOpc = TargetOpcode::G_ADD;
665 case TargetOpcode::G_VECREDUCE_MUL:
666 ScalarOpc = TargetOpcode::G_MUL;
668 case TargetOpcode::G_VECREDUCE_AND:
669 ScalarOpc = TargetOpcode::G_AND;
671 case TargetOpcode::G_VECREDUCE_OR:
672 ScalarOpc = TargetOpcode::G_OR;
674 case TargetOpcode::G_VECREDUCE_XOR:
675 ScalarOpc = TargetOpcode::G_XOR;
677 case TargetOpcode::G_VECREDUCE_SMAX:
678 ScalarOpc = TargetOpcode::G_SMAX;
680 case TargetOpcode::G_VECREDUCE_SMIN:
681 ScalarOpc = TargetOpcode::G_SMIN;
683 case TargetOpcode::G_VECREDUCE_UMAX:
684 ScalarOpc = TargetOpcode::G_UMAX;
686 case TargetOpcode::G_VECREDUCE_UMIN:
687 ScalarOpc = TargetOpcode::G_UMIN;
711 return MI->getOpcode() == TargetOpcode::G_PHI;
722 switch (
MI->getOpcode()) {
724 case TargetOpcode::G_ADD:
725 case TargetOpcode::G_SUB:
726 case TargetOpcode::G_MUL:
727 case TargetOpcode::G_SDIV:
728 case TargetOpcode::G_UDIV:
729 case TargetOpcode::G_SREM:
730 case TargetOpcode::G_UREM:
731 case TargetOpcode::G_SMIN:
732 case TargetOpcode::G_SMAX:
733 case TargetOpcode::G_UMIN:
734 case TargetOpcode::G_UMAX:
736 case TargetOpcode::G_FMINNUM:
737 case TargetOpcode::G_FMAXNUM:
738 case TargetOpcode::G_FMINNUM_IEEE:
739 case TargetOpcode::G_FMAXNUM_IEEE:
740 case TargetOpcode::G_FMINIMUM:
741 case TargetOpcode::G_FMAXIMUM:
742 case TargetOpcode::G_FADD:
743 case TargetOpcode::G_FSUB:
744 case TargetOpcode::G_FMUL:
745 case TargetOpcode::G_FDIV:
746 case TargetOpcode::G_FPOW:
748 case TargetOpcode::G_AND:
749 case TargetOpcode::G_OR:
750 case TargetOpcode::G_XOR:
762 switch (
MI->getOpcode()) {
763 case TargetOpcode::G_ADD:
764 case TargetOpcode::G_SUB:
765 case TargetOpcode::G_MUL:
766 case TargetOpcode::G_SDIV:
767 case TargetOpcode::G_UDIV:
768 case TargetOpcode::G_SREM:
769 case TargetOpcode::G_UREM:
770 case TargetOpcode::G_SMIN:
771 case TargetOpcode::G_SMAX:
772 case TargetOpcode::G_UMIN:
773 case TargetOpcode::G_UMAX:
785 switch (
MI->getOpcode()) {
786 case TargetOpcode::G_FMINNUM:
787 case TargetOpcode::G_FMAXNUM:
788 case TargetOpcode::G_FMINNUM_IEEE:
789 case TargetOpcode::G_FMAXNUM_IEEE:
790 case TargetOpcode::G_FMINIMUM:
791 case TargetOpcode::G_FMAXIMUM:
792 case TargetOpcode::G_FADD:
793 case TargetOpcode::G_FSUB:
794 case TargetOpcode::G_FMUL:
795 case TargetOpcode::G_FDIV:
796 case TargetOpcode::G_FPOW:
808 switch (
MI->getOpcode()) {
809 case TargetOpcode::G_AND:
810 case TargetOpcode::G_OR:
811 case TargetOpcode::G_XOR:
823 return MI->getOpcode() == TargetOpcode::G_ADD;
831 return MI->getOpcode() == TargetOpcode::G_AND;
839 return MI->getOpcode() == TargetOpcode::G_OR;
850 return MI->getOpcode() == TargetOpcode::G_EXTRACT_VECTOR_ELT;
862 return MI->getOpcode() == TargetOpcode::G_INSERT_VECTOR_ELT;
873 return MI->getOpcode() == TargetOpcode::G_EXTRACT_SUBVECTOR;
885 return MI->getOpcode() == TargetOpcode::G_INSERT_SUBVECTOR;
895 return MI->getOpcode() == TargetOpcode::G_FREEZE;
907 switch (
MI->getOpcode()) {
908 case TargetOpcode::G_ADDRSPACE_CAST:
909 case TargetOpcode::G_FPEXT:
910 case TargetOpcode::G_FPTOSI:
911 case TargetOpcode::G_FPTOUI:
912 case TargetOpcode::G_FPTOSI_SAT:
913 case TargetOpcode::G_FPTOUI_SAT:
914 case TargetOpcode::G_FPTRUNC:
915 case TargetOpcode::G_INTTOPTR:
916 case TargetOpcode::G_PTRTOINT:
917 case TargetOpcode::G_SEXT:
918 case TargetOpcode::G_SITOFP:
919 case TargetOpcode::G_TRUNC:
920 case TargetOpcode::G_TRUNC_SSAT_S:
921 case TargetOpcode::G_TRUNC_SSAT_U:
922 case TargetOpcode::G_TRUNC_USAT_U:
923 case TargetOpcode::G_UITOFP:
924 case TargetOpcode::G_ZEXT:
925 case TargetOpcode::G_ANYEXT:
937 return MI->getOpcode() == TargetOpcode::G_SEXT;
945 return MI->getOpcode() == TargetOpcode::G_ZEXT;
953 return MI->getOpcode() == TargetOpcode::G_ANYEXT;
961 return MI->getOpcode() == TargetOpcode::G_TRUNC;
971 return MI->getOpcode() == TargetOpcode::G_VSCALE;
983 return MI->getOpcode() == TargetOpcode::G_STEP_VECTOR;
994 return MI->getOpcode() == TargetOpcode::G_CONSTANT;
1002 return MI->getOpcode() == TargetOpcode::G_SUB;
1010 return MI->getOpcode() == TargetOpcode::G_MUL;
1021 return MI->getOpcode() == TargetOpcode::G_SHL;
1034 switch (
MI->getOpcode()) {
1035 case TargetOpcode::G_SCMP:
1036 case TargetOpcode::G_UCMP:
1048 switch (
MI->getOpcode()) {
1049 case TargetOpcode::G_SEXT:
1050 case TargetOpcode::G_ZEXT:
1051 case TargetOpcode::G_ANYEXT:
1063 switch (
MI->getOpcode()) {
1064 case TargetOpcode::G_SEXT:
1065 case TargetOpcode::G_ZEXT:
1066 case TargetOpcode::G_ANYEXT:
1067 case TargetOpcode::G_TRUNC:
1081 return MI->getOpcode() == TargetOpcode::G_SPLAT_VECTOR;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file implements a class to represent arbitrary precision integral constant values and operations...
This file contains the declarations for the subclasses of Constant, which represent the different fla...
Class for arbitrary precision integers.
uint64_t getZExtValue() const
Get zero extended value.
Represent a constant reference to an array (0 or more elements consecutively in memory),...
Predicate
This enumeration lists the possible predicates for CmpInst subclasses.
This is the shared class of boolean and integer constants.
const APInt & getValue() const
Return the constant as an APInt value reference.
Represents overflowing add operations.
static bool classof(const MachineInstr *MI)
Represents overflowing add/sub operations that also consume a carry-in.
Register getCarryInReg() const
static bool classof(const MachineInstr *MI)
Represents overflowing add/sub operations.
static bool classof(const MachineInstr *MI)
Represents an integer addition.
static bool classof(const MachineInstr *MI)
Represents a logical and.
static bool classof(const MachineInstr *MI)
Represent a G_ICMP or G_FCMP.
static bool classof(const MachineInstr *MI)
CmpInst::Predicate getCond() const
Register getLHSReg() const
Register getRHSReg() const
static bool classof(const MachineInstr *MI)
Represents any generic load, including sign/zero extending variants.
const MDNode * getMemCacheHint() const
Returns the cache hint metadata for this load.
Register getDstReg() const
Get the definition register of the loaded value.
static bool classof(const MachineInstr *MI)
const MDNode * getRanges() const
Returns the Ranges that describes the dereference.
Represents any generic store, including truncating variants.
static bool classof(const MachineInstr *MI)
Register getValueReg() const
Get the stored value register.
Represents overflowing binary operations.
MachineOperand & getRHS()
MachineOperand & getLHS()
Register getCarryOutReg() const
Register getDstReg() const
static bool classof(const MachineInstr *MI)
Register getRHSReg() const
Register getLHSReg() const
Represents a binary operation, i.e, x = y op z.
Register getLHSReg() const
static bool classof(const MachineInstr *MI)
Register getRHSReg() const
Represents a G_BUILD_VECTOR_TRUNC.
static bool classof(const MachineInstr *MI)
Represents a G_BUILD_VECTOR.
static bool classof(const MachineInstr *MI)
Represents a cast operation.
static bool classof(const MachineInstr *MI)
Register getSrcReg() const
Represents a G_CONCAT_VECTORS.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
const APInt & getValue() const
const ConstantInt * getConstantInt() const
Represents either a G_SEXTLOAD, G_ZEXTLOAD, or G_FPEXTLOAD.
static bool classof(const MachineInstr *MI)
Represents an integer-like extending operation.
static bool classof(const MachineInstr *MI)
Represents an integer-like extending or truncating operation.
static bool classof(const MachineInstr *MI)
Represents a floating point binary operation.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Represents a G_FPEXTLOAD.
static bool classof(const MachineInstr *MI)
Represents a G_FPTRUNCSTORE.
static bool classof(const MachineInstr *MI)
Register getSourceReg() const
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Represents a G_IMPLICIT_DEF.
static bool classof(const MachineInstr *MI)
Represents either G_INDEXED_LOAD, G_INDEXED_ZEXTLOAD or G_INDEXED_SEXTLOAD.
static bool classof(const MachineInstr *MI)
Represents a G_INDEX_ZEXTLOAD/G_INDEXED_SEXTLOAD.
static bool classof(const MachineInstr *MI)
Represents indexed loads.
static bool classof(const MachineInstr *MI)
Register getOffsetReg() const
Get the offset register of the pointer value.
Register getWritebackReg() const
Get the def register of the writeback value.
Register getDstReg() const
Get the definition register of the loaded value.
Register getBaseReg() const
Get the base register of the pointer value.
static bool classof(const MachineInstr *MI)
Represents indexed stores.
Register getOffsetReg() const
Get the offset register of the pointer value.
Register getValueReg() const
Get the stored value register.
Register getBaseReg() const
Get the base register of the pointer value.
static bool classof(const MachineInstr *MI)
Register getWritebackReg() const
Get the def register of the writeback value.
static bool classof(const MachineInstr *MI)
Represents a insert subvector.
Register getSubVec() const
Register getBigVec() const
uint64_t getIndexImm() const
static bool classof(const MachineInstr *MI)
Represents an insert vector element.
Register getVectorReg() const
Register getIndexReg() const
Register getElementReg() const
static bool classof(const MachineInstr *MI)
Represents an integer binary operation.
static bool classof(const MachineInstr *MI)
Represents a call to an intrinsic.
bool isConvergent() const
Intrinsic::ID getIntrinsicID() const
bool is(Intrinsic::ID ID) const
static bool classof(const MachineInstr *MI)
bool hasSideEffects() const
Represents any type of generic load or store.
Register getPointerReg() const
Get the source register of the pointer value.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Represents a logical binary operation.
static bool classof(const MachineInstr *MI)
Provides common memory operand functionality.
MachineMemOperand & getMMO() const
Get the MachineMemOperand on this instruction.
LocationSize getMemSize() const
Returns the size in bytes of the memory access.
bool isUnordered() const
Returns true if this memory operation doesn't have any ordering constraints other than normal aliasin...
bool isAtomic() const
Returns true if the attached MachineMemOperand has the atomic flag set.
Align getAlign() const
Return the minimum known alignment in bytes of the actual memory reference.
bool isVolatile() const
Returns true if the attached MachineMemOpeand as the volatile flag set.
static bool classof(const MachineInstr *MI)
LocationSize getMemSizeInBits() const
Returns the size in bits of the memory access.
bool isSimple() const
Returns true if the memory operation is neither atomic or volatile.
Represents G_BUILD_VECTOR, G_CONCAT_VECTORS or G_MERGE_VALUES.
Register getSourceReg(unsigned I) const
Returns the I'th source register.
unsigned getNumSources() const
Returns the number of source registers.
static bool classof(const MachineInstr *MI)
Represents a G_MERGE_VALUES.
static bool classof(const MachineInstr *MI)
Represents an integer multiplication.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
MachineBasicBlock * getIncomingBlock(unsigned I) const
Returns the I'th incoming basic block.
Register getIncomingValue(unsigned I) const
Returns the I'th incoming vreg.
static bool classof(const MachineInstr *MI)
unsigned getNumIncomingValues() const
Returns the number of incoming values.
Register getOffsetReg() const
static bool classof(const MachineInstr *MI)
Register getBaseReg() const
static bool classof(const MachineInstr *MI)
Represents a threeway compare.
Register getRHSReg() const
Register getLHSReg() const
static bool classof(const MachineInstr *MI)
Register getCondReg() const
static bool classof(const MachineInstr *MI)
Register getFalseReg() const
Register getTrueReg() const
static bool classof(const MachineInstr *MI)
Register getShiftReg() const
static bool classof(const MachineInstr *MI)
Register getSrcReg() const
Represents a G_SHUFFLE_VECTOR.
static bool classof(const MachineInstr *MI)
Register getSrc2Reg() const
Register getSrc1Reg() const
ArrayRef< int > getMask() const
Represents a splat vector.
Register getScalarReg() const
static bool classof(const MachineInstr *MI)
Represents a step vector.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Represents overflowing sub operations.
static bool classof(const MachineInstr *MI)
Represents an integer subtraction.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Represents a G_UNMERGE_VALUES.
unsigned getNumDefs() const
Returns the number of def registers.
static bool classof(const MachineInstr *MI)
Register getSourceReg() const
Get the unmerge source register.
static bool classof(const MachineInstr *MI)
unsigned getScalarOpcForReduction()
Get the opcode for the equivalent scalar operation for this reduction.
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
static bool classof(const MachineInstr *MI)
Register getReg(unsigned Idx) const
Access the Idx'th operand as a register and return it.
bool hasPoisonGeneratingFlags() const
void dropPoisonGeneratingFlags()
GenericMachineInstr()=delete
Representation of each machine instruction.
unsigned getOpcode() const
Returns the opcode of this MachineInstr.
unsigned getNumOperands() const
Retuns the total number of operands.
static constexpr uint32_t getPoisonGeneratingFlags()
void clearFlags(unsigned flags)
LLVM_ABI unsigned getNumExplicitDefs() const
Returns the number of non-implicit definitions.
mmo_iterator memoperands_begin() const
Access to memory operands of the instruction.
const MachineOperand & getOperand(unsigned i) const
uint32_t getFlags() const
Return the MI flags bitvector.
A description of a memory reference used in the backend.
LocationSize getSize() const
Return the size in bytes of the memory reference.
bool isUnordered() const
Returns true if this memory operation doesn't have any ordering constraints other than normal aliasin...
const MDNode * getRanges() const
Return the range tag for the memory reference.
bool isAtomic() const
Returns true if this operation has an atomic ordering requirement of unordered or higher,...
LLVM_ABI Align getAlign() const
Return the minimum known alignment in bytes of the actual memory reference.
LocationSize getSizeInBits() const
Return the size in bits of the memory reference.
const MDNode * getMemCacheHint() const
Return the cache hint metadata for the memory reference.
MachineOperand class - Representation of each machine instruction operand.
const ConstantInt * getCImm() const
MachineBasicBlock * getMBB() const
ArrayRef< int > getShuffleMask() const
Register getReg() const
getReg - Returns the register number.
Intrinsic::ID getIntrinsicID() const
unsigned getPredicate() const
Wrapper class representing virtual and physical registers.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
This is an optimization pass for GlobalISel generic memory operations.
bool isPreISelGenericOpcode(unsigned Opcode)
Check whether the given Opcode is a generic opcode that is not supposed to appear after ISel.
This struct is a compact representation of a valid (non-zero power of two) alignment.