diff options
| author | 2016-08-01 14:11:20 -0700 | |
|---|---|---|
| committer | 2016-08-01 14:11:20 -0700 | |
| commit | 18ba121e7d706ce03b5b52f632b7c14cff685eab (patch) | |
| tree | 6ae5b61dcbe9a208dfb07d311052e3bb31477f57 /compiler/utils/x86/assembler_x86.cc | |
| parent | 6e5e3b2e914cf4bdc5f17a6011fc2b1937eb9641 (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.cc | 17 |
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); |