summaryrefslogtreecommitdiffstats
path: root/compiler/utils/x86/assembler_x86.cc
diff options
context:
space:
mode:
authorMark Mendell <mark.p.mendell@intel.com>2015-04-03 14:52:31 -0400
committerMark Mendell <mark.p.mendell@intel.com>2015-04-06 23:05:13 -0400
commit58d25fd052e999a24734b0cf856a1563e3d1b2d0 (patch)
treeb1dbeae13a24e3f7ec325698a3724b5d90df2ef9 /compiler/utils/x86/assembler_x86.cc
parent1b8e8cac2c96f6d2af8e7217f997a30e11c098b5 (diff)
downloadart-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.cc9
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);