Fix the encoding and parsing of clrex instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123936 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes 2011-01-20 19:18:32 +00:00
parent 55931ab992
commit e47f3751d7
4 changed files with 13 additions and 5 deletions

View File

@ -2912,13 +2912,16 @@ def t2STREXD : T2I_strex<0b11, (outs rGPR:$Rd),
}
// Clear-Exclusive is for disassembly only.
def t2CLREX : T2I<(outs), (ins), NoItinerary, "clrex", "",
[/* For disassembly only; pattern left blank */]>,
Requires<[IsARM, HasV7]> {
let Inst{31-20} = 0xf3b;
def t2CLREX : T2XI<(outs), (ins), NoItinerary, "clrex",
[/* For disassembly only; pattern left blank */]>,
Requires<[IsThumb2, HasV7]> {
let Inst{31-16} = 0xf3bf;
let Inst{15-14} = 0b10;
let Inst{13} = 0;
let Inst{12} = 0;
let Inst{11-8} = 0b1111;
let Inst{7-4} = 0b0010;
let Inst{3-0} = 0b1111;
}
//===----------------------------------------------------------------------===//

View File

@ -1194,7 +1194,8 @@ GetMnemonicAcceptInfo(StringRef Mnemonic, bool &CanAcceptCarrySet,
Mnemonic == "cps" || Mnemonic == "mcr2" || Mnemonic == "it" ||
Mnemonic == "mcrr2" || Mnemonic == "cbz" || Mnemonic == "cdp2" ||
Mnemonic == "trap" || Mnemonic == "mrc2" || Mnemonic == "mrrc2" ||
Mnemonic == "dsb" || Mnemonic == "movs" || Mnemonic == "isb") {
Mnemonic == "dsb" || Mnemonic == "movs" || Mnemonic == "isb" ||
Mnemonic == "clrex") {
CanAcceptPredicationCode = false;
} else {
CanAcceptPredicationCode = true;

View File

@ -159,3 +159,5 @@
@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xfe]
cdp2 p7, #1, c1, c1, c1, #4
@ CHECK: clrex @ encoding: [0x1f,0xf0,0x7f,0xf5]
clrex

View File

@ -197,3 +197,5 @@
@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x11,0xfe,0x81,0x17]
cdp2 p7, #1, c1, c1, c1, #4
@ CHECK: clrex @ encoding: [0xbf,0xf3,0x2f,0x8f]
clrex