diff options
author | Mark Mendell <mark.p.mendell@intel.com> | 2015-04-03 14:52:31 -0400 |
---|---|---|
committer | Mark Mendell <mark.p.mendell@intel.com> | 2015-04-06 23:05:13 -0400 |
commit | 58d25fd052e999a24734b0cf856a1563e3d1b2d0 (patch) | |
tree | b1dbeae13a24e3f7ec325698a3724b5d90df2ef9 /compiler/utils/x86/assembler_x86.cc | |
parent | 1b8e8cac2c96f6d2af8e7217f997a30e11c098b5 (diff) | |
download | art-58d25fd052e999a24734b0cf856a1563e3d1b2d0.tar.gz art-58d25fd052e999a24734b0cf856a1563e3d1b2d0.tar.bz2 art-58d25fd052e999a24734b0cf856a1563e3d1b2d0.zip |
[optimizing] Implement more x86/x86_64 intrinsics
Implement CAS and bit reverse and byte reverse intrinsics that were
missing from x86 and x86_64 implementations.
Add assembler tests and compareAndSwapLong test.
Change-Id: Iabb2ff46036645df0a91f640288ef06090a64ee3
Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
-rw-r--r-- | compiler/utils/x86/assembler_x86.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index b3a1376727..4ecb1d8481 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -1467,6 +1467,15 @@ void X86Assembler::cmpxchgl(const Address& address, Register reg) { EmitOperand(reg, address); } + +void X86Assembler::cmpxchg8b(const Address& address) { + AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitUint8(0x0F); + EmitUint8(0xC7); + EmitOperand(1, address); +} + + void X86Assembler::mfence() { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitUint8(0x0F); |