mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-25 12:49:50 +00:00
Intel Syntax: Extend special hand coded logic, to recognize special instructions, for intel syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148864 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5387f2e4f3
commit
3b96e1fe3b
@ -1168,11 +1168,21 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
|
||||
Name.startswith("rcl") || Name.startswith("rcr") ||
|
||||
Name.startswith("rol") || Name.startswith("ror")) &&
|
||||
Operands.size() == 3) {
|
||||
X86Operand *Op1 = static_cast<X86Operand*>(Operands[1]);
|
||||
if (Op1->isImm() && isa<MCConstantExpr>(Op1->getImm()) &&
|
||||
cast<MCConstantExpr>(Op1->getImm())->getValue() == 1) {
|
||||
delete Operands[1];
|
||||
Operands.erase(Operands.begin() + 1);
|
||||
if (getParser().getAssemblerDialect()) {
|
||||
// Intel syntax
|
||||
X86Operand *Op1 = static_cast<X86Operand*>(Operands[2]);
|
||||
if (Op1->isImm() && isa<MCConstantExpr>(Op1->getImm()) &&
|
||||
cast<MCConstantExpr>(Op1->getImm())->getValue() == 1) {
|
||||
delete Operands[2];
|
||||
Operands.pop_back();
|
||||
}
|
||||
} else {
|
||||
X86Operand *Op1 = static_cast<X86Operand*>(Operands[1]);
|
||||
if (Op1->isImm() && isa<MCConstantExpr>(Op1->getImm()) &&
|
||||
cast<MCConstantExpr>(Op1->getImm())->getValue() == 1) {
|
||||
delete Operands[1];
|
||||
Operands.erase(Operands.begin() + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,3 +36,6 @@ LBB0_3:
|
||||
jmp LBB0_3
|
||||
// CHECK: encoding: [0xf2,0x0f,0x10,0x2c,0x25,0xf8,0xff,0xff,0xff]
|
||||
movsd XMM5, QWORD PTR [-8]
|
||||
|
||||
// CHECK: encoding: [0xd1,0xe7]
|
||||
shl EDI, 1
|
||||
|
Loading…
Reference in New Issue
Block a user