diff options
author | Calin Juravle <calin@google.com> | 2014-12-16 17:02:57 +0000 |
---|---|---|
committer | Calin Juravle <calin@google.com> | 2014-12-19 09:58:27 +0000 |
commit | 52c489645b6e9ae33623f1ec24143cde5444906e (patch) | |
tree | a39667aa354645bd42a7a061d08ca82df3004143 /compiler/utils/x86/assembler_x86.cc | |
parent | 193c7a94822f765b0b6b0cecd54c9f08dfd26425 (diff) | |
download | art-52c489645b6e9ae33623f1ec24143cde5444906e.tar.gz art-52c489645b6e9ae33623f1ec24143cde5444906e.tar.bz2 art-52c489645b6e9ae33623f1ec24143cde5444906e.zip |
[optimizing compiler] Add support for volatile
- for backends: arm, x86, x86_64
- added necessary instructions to assemblies
- clean up code gen for field set/get
- fixed InstructionDataEquals for some instructions
- fixed comments in compiler_enums
* 003-opcode test verifies basic volatile functionality
Change-Id: I144393efa312dfb2c332cb84056b00edffee338a
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r-- | compiler/utils/x86/assembler_x86.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index f0353f6cd2..f8c0043242 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -443,6 +443,27 @@ void X86Assembler::movsd(XmmRegister dst, XmmRegister src) { } +void X86Assembler::psrlq(XmmRegister reg, const Immediate& shift_count) { + DCHECK(shift_count.is_uint8()); + + AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitUint8(0x66); + EmitUint8(0x0F); + EmitUint8(0x73); + EmitXmmRegisterOperand(2, reg); + EmitUint8(shift_count.value()); +} + + +void X86Assembler::punpckldq(XmmRegister dst, XmmRegister src) { + AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitUint8(0x66); + EmitUint8(0x0F); + EmitUint8(0x62); + EmitXmmRegisterOperand(dst, src); +} + + void X86Assembler::addsd(XmmRegister dst, XmmRegister src) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitUint8(0xF2); |