Index: src/IceInstX8632.h |
diff --git a/src/IceInstX8632.h b/src/IceInstX8632.h |
index 02cec790a7656927952efd08fe9ab03c33dea061..604f1a5eced9a529ac33067ecf9fae537e6009d8 100644 |
--- a/src/IceInstX8632.h |
+++ b/src/IceInstX8632.h |
@@ -58,7 +58,7 @@ class OperandX8632Mem : public OperandX8632 { |
public: |
enum SegmentRegisters { |
DefaultSegment = -1, |
-#define X(val, name) val, |
+#define X(val, name, prefix) val, |
SEG_REGX8632_TABLE |
#undef X |
SegReg_NUM |
@@ -75,6 +75,7 @@ public: |
Variable *getIndex() const { return Index; } |
uint16_t getShift() const { return Shift; } |
SegmentRegisters getSegmentRegister() const { return SegmentReg; } |
+ void emitSegmentOverride(x86::AssemblerX86 *Asm) const; |
x86::Address toAsmAddress(Assembler *Asm) const; |
void emit(const Cfg *Func) const override; |
using OperandX8632::dump; |
@@ -112,6 +113,9 @@ public: |
static VariableSplit *create(Cfg *Func, Variable *Var, Portion Part) { |
return new (Func->allocate<VariableSplit>()) VariableSplit(Func, Var, Part); |
} |
+ int32_t getOffset() const { return Part == High ? 4 : 0; } |
+ |
+ x86::Address toAsmAddress(const Cfg *Func) const; |
void emit(const Cfg *Func) const override; |
using OperandX8632::dump; |
void dump(const Cfg *Func, Ostream &Str) const override; |
@@ -835,7 +839,7 @@ public: |
} |
bool isSimpleAssign() const override { return true; } |
void emit(const Cfg *Func) const override; |
- void emitIAS(const Cfg *Func) const override { emit(Func); } |
+ void emitIAS(const Cfg *Func) const override; |
void dump(const Cfg *Func) const override { |
Ostream &Str = Func->getContext()->getStrDump(); |
Str << Opcode << "." << getDest()->getType() << " "; |
@@ -1519,8 +1523,6 @@ template <> void InstX8632Idiv::emitIAS(const Cfg *Func) const; |
template <> void InstX8632Imul::emitIAS(const Cfg *Func) const; |
template <> void InstX8632Cbwdq::emitIAS(const Cfg *Func) const; |
template <> void InstX8632Movd::emitIAS(const Cfg *Func) const; |
-template <> void InstX8632Movp::emitIAS(const Cfg *Func) const; |
-template <> void InstX8632Movq::emitIAS(const Cfg *Func) const; |
template <> void InstX8632MovssRegs::emitIAS(const Cfg *Func) const; |
template <> void InstX8632Pblendvb::emitIAS(const Cfg *Func) const; |
template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; |