From: Bradley Smith Date: Wed, 9 Apr 2014 14:44:54 +0000 (+0000) Subject: [ARM64] Correctly disassemble ISB operand as ISB not DBarrier. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=62293d114719888731c65e5a7173a433be03482e;p=oota-llvm.git [ARM64] Correctly disassemble ISB operand as ISB not DBarrier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205897 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp b/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp index 42481df132f..82beb6bbebd 100644 --- a/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp +++ b/lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp @@ -1459,9 +1459,14 @@ void ARM64InstPrinter::printAdrpLabel(const MCInst *MI, unsigned OpNum, void ARM64InstPrinter::printBarrierOption(const MCInst *MI, unsigned OpNo, raw_ostream &O) { unsigned Val = MI->getOperand(OpNo).getImm(); + unsigned Opcode = MI->getOpcode(); bool Valid; - StringRef Name = ARM64DB::DBarrierMapper().toString(Val, Valid); + StringRef Name; + if (Opcode == ARM64::ISB) + Name = ARM64ISB::ISBMapper().toString(Val, Valid); + else + Name = ARM64DB::DBarrierMapper().toString(Val, Valid); if (Valid) O << Name; else diff --git a/test/MC/Disassembler/ARM64/system.txt b/test/MC/Disassembler/ARM64/system.txt index 635bc9995a9..53b4a6cd69a 100644 --- a/test/MC/Disassembler/ARM64/system.txt +++ b/test/MC/Disassembler/ARM64/system.txt @@ -26,6 +26,8 @@ # CHECK: clrex #10 0xdf 0x3f 0x03 0xd5 # CHECK: isb{{$}} + 0xdf 0x31 0x03 0xd5 +# CHECK: isb #1 0xbf 0x33 0x03 0xd5 # CHECK: dmb osh 0x9f 0x37 0x03 0xd5