ARM: Permit "sp" in ARM variant of STREXD instructions
authorTim Northover <Tim.Northover@arm.com>
Fri, 19 Apr 2013 15:44:32 +0000 (15:44 +0000)
committerTim Northover <Tim.Northover@arm.com>
Fri, 19 Apr 2013 15:44:32 +0000 (15:44 +0000)
Patch from Mihail Popa

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179854 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/Disassembler/ARMDisassembler.cpp
test/MC/Disassembler/ARM/basic-arm-instructions.txt

index 631168b1539a43f85afc9c35af8f3145a1923935..32b47fba514d9a18cf75ed68735908670d675a05 100644 (file)
@@ -3573,7 +3573,7 @@ static DecodeStatus DecodeDoubleRegStore(MCInst &Inst, unsigned Insn,
   unsigned Rn = fieldFromInstruction(Insn, 16, 4);
   unsigned pred = fieldFromInstruction(Insn, 28, 4);
 
-  if (!Check(S, DecoderGPRRegisterClass(Inst, Rd, Address, Decoder)))
+  if (!Check(S, DecodeGPRnopcRegisterClass(Inst, Rd, Address, Decoder)))
     return MCDisassembler::Fail;
 
   if ((Rt & 1) || Rt == 0xE || Rn == 0xF) return MCDisassembler::Fail;
index 505ecad9d3a67b7dda32d8e0159f3c2bbc19f6c8..9f63e1e914ffdd17ecee8e5b72100c86e489501b 100644 (file)
 # CHECK: strexh  r4, r2, [r5
 # CHECK: strex  r2, r1, [r7
 # CHECK: strexd  r6, r2, r3, [r8
+# CHECK: strexd  sp, r0, r1, [r0]
 
 0x93 0x1f 0xc4 0xe1
 0x92 0x4f 0xe5 0xe1
 0x91 0x2f 0x87 0xe1
 0x92 0x6f 0xa8 0xe1
-
+0x90 0xdf 0xa0 0xe1
 
 #------------------------------------------------------------------------------
 # SUB