Index: runtime/vm/assembler_x64.h |
diff --git a/runtime/vm/assembler_x64.h b/runtime/vm/assembler_x64.h |
index cebc86547d2ac1552c193bf276e163f74dfba6fd..e0cf6f5eecb062c80284b6a89f4548d0e67b2b64 100644 |
--- a/runtime/vm/assembler_x64.h |
+++ b/runtime/vm/assembler_x64.h |
@@ -678,7 +678,18 @@ class Assembler : public ValueObject { |
inline void EmitXmmRegisterOperand(int rm, XmmRegister reg); |
inline void EmitFixup(AssemblerFixup* fixup); |
inline void EmitOperandSizeOverride(); |
- |
+ inline void EmitREX_RB(XmmRegister reg, |
+ XmmRegister base, |
+ uint8_t rex = REX_NONE); |
+ inline void EmitREX_RB(XmmRegister reg, |
+ const Operand& operand, |
+ uint8_t rex = REX_NONE); |
+ inline void EmitREX_RB(XmmRegister reg, |
+ Register base, |
+ uint8_t rex = REX_NONE); |
+ inline void EmitREX_RB(Register reg, |
+ XmmRegister base, |
+ uint8_t rex = REX_NONE); |
void EmitOperand(int rm, const Operand& operand); |
void EmitImmediate(const Immediate& imm); |
void EmitComplex(int rm, const Operand& operand, const Immediate& immediate); |
@@ -726,6 +737,42 @@ inline void Assembler::EmitOperandREX(int rm, |
} |
+inline void Assembler::EmitREX_RB(XmmRegister reg, |
+ XmmRegister base, |
+ uint8_t rex) { |
+ if (reg > 7) rex |= REX_R; |
+ if (base > 7) rex |= REX_B; |
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex); |
+} |
+ |
+ |
+inline void Assembler::EmitREX_RB(XmmRegister reg, |
+ const Operand& operand, |
+ uint8_t rex) { |
+ if (reg > 7) rex |= REX_R; |
+ rex |= operand.rex(); |
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex); |
+} |
+ |
+ |
+inline void Assembler::EmitREX_RB(XmmRegister reg, |
+ Register base, |
+ uint8_t rex) { |
+ if (reg > 7) rex |= REX_R; |
+ if (base > 7) rex |= REX_B; |
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex); |
+} |
+ |
+ |
+inline void Assembler::EmitREX_RB(Register reg, |
+ XmmRegister base, |
+ uint8_t rex) { |
+ if (reg > 7) rex |= REX_R; |
+ if (base > 7) rex |= REX_B; |
+ if (rex != REX_NONE) EmitUint8(REX_PREFIX | rex); |
+} |
+ |
+ |
inline void Assembler::EmitFixup(AssemblerFixup* fixup) { |
buffer_.EmitFixup(fixup); |
} |