fix an encoding mismatch where "sal %eax, 1" was not using the short encoding

for shl.  Caught by inspection.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117820 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-10-30 18:13:10 +00:00
parent 8b260a7644
commit 1a1ecc9f3c
2 changed files with 6 additions and 1 deletions

View File

@ -783,7 +783,7 @@ ParseInstruction(StringRef Name, SMLoc NameLoc,
// FIXME: Hack to handle recognize s{hr,ar,hl} $1, <op>. Canonicalize to
// "shift <op>".
if ((Name.startswith("shr") || Name.startswith("sar") ||
Name.startswith("shl")) &&
Name.startswith("shl") || Name.startswith("sal")) &&
Operands.size() == 3) {
X86Operand *Op1 = static_cast<X86Operand*>(Operands[1]);
if (Op1->isImm() && isa<MCConstantExpr>(Op1->getImm()) &&

View File

@ -57,6 +57,11 @@ rdtscp
// CHECK: shrl %eax # encoding: [0xd1,0xe8]
shrl $1, %eax
// CHECK: shll %eax # encoding: [0xd1,0xe0]
sall $1, %eax
// CHECK: shll %eax # encoding: [0xd1,0xe0]
sal $1, %eax
// moffset forms of moves, rdar://7947184
movb 0, %al // CHECK: movb 0, %al # encoding: [0xa0,A,A,A,A]
movw 0, %ax // CHECK: movw 0, %ax # encoding: [0x66,0xa1,A,A,A,A]