summaryrefslogtreecommitdiff
path: root/compiler/utils/x86/assembler_x86.cc
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2016-08-01 14:11:20 -0700
committer Aart Bik <ajcbik@google.com> 2016-08-01 14:11:20 -0700
commit18ba121e7d706ce03b5b52f632b7c14cff685eab (patch)
tree6ae5b61dcbe9a208dfb07d311052e3bb31477f57 /compiler/utils/x86/assembler_x86.cc
parent6e5e3b2e914cf4bdc5f17a6011fc2b1937eb9641 (diff)
Added direct memory operand support for comiss/sd on x86.
Rationale: Memory operands allows for shorter instruction sequences. Something that may be used e.g. the upcoming implementation of the round intrinsic. Bug=26327751 Change-Id: Ifd976ed86917de1879fa036cbbbff5edf4fb741d Test: assembler_x86_test
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r--compiler/utils/x86/assembler_x86.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index f931d75e77..b8657900e5 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -727,6 +727,14 @@ void X86Assembler::comiss(XmmRegister a, XmmRegister b) {
}
+void X86Assembler::comiss(XmmRegister a, const Address& b) {
+ AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+ EmitUint8(0x0F);
+ EmitUint8(0x2F);
+ EmitOperand(a, b);
+}
+
+
void X86Assembler::comisd(XmmRegister a, XmmRegister b) {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x66);
@@ -736,6 +744,15 @@ void X86Assembler::comisd(XmmRegister a, XmmRegister b) {
}
+void X86Assembler::comisd(XmmRegister a, const Address& b) {
+ AssemblerBuffer::EnsureCapacity ensured(&buffer_);
+ EmitUint8(0x66);
+ EmitUint8(0x0F);
+ EmitUint8(0x2F);
+ EmitOperand(a, b);
+}
+
+
void X86Assembler::ucomiss(XmmRegister a, XmmRegister b) {
AssemblerBuffer::EnsureCapacity ensured(&buffer_);
EmitUint8(0x0F);