aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/AsmParser
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2010-01-26 01:00:10 +0000
committerSean Callanan <scallanan@apple.com>2010-01-26 01:00:10 +0000
commit8bb3b9e5517194ac2b7a93a347489953c526f5c4 (patch)
tree5d570b0a91d881411ce925b1ed4380ff4d9e0e73 /lib/Target/X86/AsmParser
parent4a99cf04ecc8f28bc9c9ad11e0eb4ffbca2c00ff (diff)
downloadexternal_llvm-8bb3b9e5517194ac2b7a93a347489953c526f5c4.zip
external_llvm-8bb3b9e5517194ac2b7a93a347489953c526f5c4.tar.gz
external_llvm-8bb3b9e5517194ac2b7a93a347489953c526f5c4.tar.bz2
Added the implementation of the Intel-specific
TargetAsmLexer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94482 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/AsmParser')
-rw-r--r--lib/Target/X86/AsmParser/X86AsmLexer.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmLexer.cpp b/lib/Target/X86/AsmParser/X86AsmLexer.cpp
index f35cb10..e350515 100644
--- a/lib/Target/X86/AsmParser/X86AsmLexer.cpp
+++ b/lib/Target/X86/AsmParser/X86AsmLexer.cpp
@@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/StringExtras.h"
#include "llvm/Target/TargetAsmLexer.h"
#include "llvm/Target/TargetRegistry.h"
#include "llvm/MC/MCAsmInfo.h"
@@ -113,7 +114,32 @@ AsmToken X86AsmLexer::LexTokenATT() {
}
AsmToken X86AsmLexer::LexTokenIntel() {
- return AsmToken(AsmToken::Error, "", 0);
+ const AsmToken &lexedToken = lexDefinite();
+
+ switch(lexedToken.getKind()) {
+ default:
+ return AsmToken(lexedToken);
+ case AsmToken::Error:
+ SetError(Lexer->getErrLoc(), Lexer->getErr());
+ return AsmToken(lexedToken);
+ case AsmToken::Identifier:
+ {
+ std::string upperCase = lexedToken.getString().str();
+ std::string lowerCase = LowercaseString(upperCase);
+ StringRef lowerRef(lowerCase);
+
+ unsigned regID = MatchRegisterName(lowerRef);
+
+ if (regID) {
+ return AsmToken(AsmToken::Register,
+ lexedToken.getString(),
+ static_cast<int64_t>(regID));
+ }
+ else {
+ return AsmToken(lexedToken);
+ }
+ }
+ }
}
extern "C" void LLVMInitializeX86AsmLexer() {