#define LLVM_CODEGEN_MACHINEOPERAND_H
#include "llvm/Support/DataTypes.h"
-#include <vector>
#include <cassert>
#include <iosfwd>
class MachineOperand {
public:
enum MachineOperandType {
- MO_Register, // Register operand
- MO_Immediate, // Immediate operand
- MO_FPImmediate, // FP immediate operand
+ MO_Register, // Register operand.
+ MO_Immediate, // Immediate Operand
+ MO_FPImmediate,
MO_MachineBasicBlock, // MachineBasicBlock reference
MO_FrameIndex, // Abstract Stack Frame Index
MO_ConstantPoolIndex, // Address of indexed Constant in Constant Pool
MO_JumpTableIndex, // Address of indexed Jump Table for switch
MO_ExternalSymbol, // Name of external global symbol
- MO_GlobalAddress, // Address of a global value
- MO_Undef // Undef
+ MO_GlobalAddress // Address of a global value
};
private:
bool isJumpTableIndex() const { return OpKind == MO_JumpTableIndex; }
bool isGlobalAddress() const { return OpKind == MO_GlobalAddress; }
bool isExternalSymbol() const { return OpKind == MO_ExternalSymbol; }
- bool isUndef() const { return OpKind == MO_Undef; }
bool isReg() const { return OpKind == MO_Register; }
bool isImm() const { return OpKind == MO_Immediate; }
Op.setOffset(Offset);
return Op;
}
- static MachineOperand CreateUndef() {
- MachineOperand Op(MachineOperand::MO_Undef);
- return Op;
- }
-
const MachineOperand &operator=(const MachineOperand &MO) {
OpKind = MO.OpKind;
IsDef = MO.IsDef;