From 8ae3ffb29489a127f2a6242c33845dac8d50e508 Mon Sep 17 00:00:00 2001 From: Mark Mendell Date: Wed, 12 Aug 2015 21:16:41 -0400 Subject: Add 'bsr' instruction to x86 and x86_64 Add support for 'bsr' instruction. Add tests. Change-Id: I1cd8b30d7f3f5ee7fbeef8124cc6a31bf8ce59d5 Signed-off-by: Mark Mendell --- compiler/utils/x86/assembler_x86.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'compiler/utils/x86/assembler_x86.cc') diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index 914bd56683..9b3d792903 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -158,6 +158,20 @@ void X86Assembler::bswapl(Register dst) { EmitUint8(0xC8 + dst); } +void X86Assembler::bsrl(Register dst, Register src) { + AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitUint8(0x0F); + EmitUint8(0xBD); + EmitRegisterOperand(dst, src); +} + +void X86Assembler::bsrl(Register dst, const Address& src) { + AssemblerBuffer::EnsureCapacity ensured(&buffer_); + EmitUint8(0x0F); + EmitUint8(0xBD); + EmitOperand(dst, src); +} + void X86Assembler::movzxb(Register dst, ByteRegister src) { AssemblerBuffer::EnsureCapacity ensured(&buffer_); EmitUint8(0x0F); -- cgit v1.2.3-59-g8ed1b