diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-03-13 00:47:29 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-03-13 00:47:29 +0000 |
commit | 18fc344290d7241fd47a9eaba21cde777e7bae9e (patch) | |
tree | 409a8b16654e5e6a79aeab3e3d682291fbf1db8f | |
parent | b86672059ed9a5c10d60e15406a50e6ca214269d (diff) | |
download | bcm5719-llvm-18fc344290d7241fd47a9eaba21cde777e7bae9e.tar.gz bcm5719-llvm-18fc344290d7241fd47a9eaba21cde777e7bae9e.zip |
MC/X86: Add temporary hack to match shrl $1,%eax correctly, to support testing
other functionality on 403.gcc compiled at -O0.
llvm-svn: 98405
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 9 | ||||
-rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 84d7bb7a6f3..dde86fbbe44 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -542,6 +542,15 @@ ParseInstruction(const StringRef &Name, SMLoc NameLoc, } } + // FIXME: Hack to handle recognizing s{hr,ar,hl}? $1. + if ((Name.startswith("shr") || Name.startswith("sar") || + Name.startswith("shl")) && + Operands.size() == 3 && + static_cast<X86Operand*>(Operands[1])->isImm() && + isa<MCConstantExpr>(static_cast<X86Operand*>(Operands[1])->getImm()) && + cast<MCConstantExpr>(static_cast<X86Operand*>(Operands[1])->getImm())->getValue() == 1) + Operands.erase(Operands.begin() + 1); + return false; } diff --git a/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s b/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s index d4e3be4bd28..c00007fd168 100644 --- a/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s +++ b/llvm/test/MC/AsmParser/X86/x86_32-new-encoder.s @@ -47,3 +47,6 @@ rdtscp // CHECK: addw %ax, %ax # encoding: [0x66,0x01,0xc0] addw %ax, %ax + +// CHECK: shrl %eax # encoding: [0xd1,0xe8] + shrl $1, %eax |