From 611d3395e9efc0ab8dbfa4a197fa022fbd8c7204 Mon Sep 17 00:00:00 2001 From: Scott Wakeling Date: Fri, 10 Jul 2015 11:42:06 +0100 Subject: ARM/ARM64: Implement numberOfLeadingZeros intrinsic. Change-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b --- disassembler/disassembler_arm.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'disassembler/disassembler_arm.cc') diff --git a/disassembler/disassembler_arm.cc b/disassembler/disassembler_arm.cc index 31e653bf92..d1d3481b93 100644 --- a/disassembler/disassembler_arm.cc +++ b/disassembler/disassembler_arm.cc @@ -1455,6 +1455,20 @@ size_t DisassemblerArm::DumpThumb32(std::ostream& os, const uint8_t* instr_ptr) } // else unknown instruction break; } + case 0x2B: { // 0101011 + // CLZ - 111 11 0101011 mmmm 1111 dddd 1000 mmmm + if ((instr & 0xf0f0) == 0xf080) { + opcode << "clz"; + ArmRegister Rm(instr, 0); + ArmRegister Rd(instr, 8); + args << Rd << ", " << Rm; + ArmRegister Rm2(instr, 16); + if (Rm.r != Rm2.r || Rm.r == 13 || Rm.r == 15 || Rd.r == 13 || Rd.r == 15) { + args << " (UNPREDICTABLE)"; + } + } + break; + } default: // more formats if ((op2 >> 4) == 2) { // 010xxxx // data processing (register) -- cgit v1.2.3-59-g8ed1b