[ARM64] Correctly disassemble ISB operand as ISB not DBarrier.
authorBradley Smith <bradley.smith@arm.com>
Wed, 9 Apr 2014 14:44:54 +0000 (14:44 +0000)
committerBradley Smith <bradley.smith@arm.com>
Wed, 9 Apr 2014 14:44:54 +0000 (14:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205897 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp
test/MC/Disassembler/ARM64/system.txt

index 42481df132f2ecdfca3c1520db9ac12484e002ae..82beb6bbebd8e24aca3d5afb76aba041faf5578b 100644 (file)
@@ -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
index 635bc9995a92ebae37b1a3c4bfd2a1cc42acc073..53b4a6cd69aa77c1595ae6cdbbe97be7d1ce1e34 100644 (file)
@@ -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