diff options
| author | Ed Schouten <ed@FreeBSD.org> | 2009-06-23 19:31:59 +0000 |
|---|---|---|
| committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-23 19:31:59 +0000 |
| commit | f76359690a7035ad21498f2ba6be6991d3b2032d (patch) | |
| tree | 2db4127ea6c69f2548de6981658579fddd794448 /include/llvm/MC/MCImm.h | |
| parent | 0408e1d309a743aca4ed4592cf2c712a71537901 (diff) | |
Diffstat (limited to 'include/llvm/MC/MCImm.h')
| -rw-r--r-- | include/llvm/MC/MCImm.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/include/llvm/MC/MCImm.h b/include/llvm/MC/MCImm.h new file mode 100644 index 0000000000000..5b1efd88206ae --- /dev/null +++ b/include/llvm/MC/MCImm.h @@ -0,0 +1,55 @@ +//===-- llvm/MC/MCImm.h - MCImm class ---------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the declaration of the MCInst and MCOperand classes, which +// is the basic representation used to represent low-level machine code +// instructions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_MC_MCIMM_H +#define LLVM_MC_MCIMM_H + +namespace llvm { +class MCSymbol; + +/// MCImm - This represents an "assembler immediate". In its most general form, +/// this can hold "SymbolA - SymbolB + imm64". Not all targets supports +/// relocations of this general form, but we need to represent this anyway. +class MCImm { + MCSymbol *SymA, *SymB; + int64_t Cst; +public: + + int64_t getCst() const { return Cst; } + MCSymbol *getSymA() const { return SymA; } + MCSymbol *getSymB() const { return SymB; } + + + static MCImm get(MCSymbol *SymA, MCSymbol *SymB = 0, int64_t Val = 0) { + MCImm R; + R.Cst = Val; + R.SymA = SymA; + R.SymB = SymB; + return R; + } + + static MCImm get(int64_t Val) { + MCImm R; + R.Cst = Val; + R.SymA = 0; + R.SymB = 0; + return R; + } + +}; + +} // end namespace llvm + +#endif |
