Implemented the dialect decision logic for the X86
[oota-llvm.git] / lib / Target / X86 / AsmParser / X86AsmLexer.cpp
1 //===-- X86AsmLexer.cpp - Tokenize X86 assembly to AsmTokens --------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "llvm/Target/TargetAsmLexer.h"
11 #include "llvm/Target/TargetRegistry.h"
12 #include "llvm/MC/MCAsmInfo.h"
13 #include "llvm/MC/MCParser/MCAsmLexer.h"
14 #include "llvm/MC/MCParser/MCParsedAsmOperand.h"
15 #include "X86.h"
16
17 using namespace llvm;
18
19 namespace {
20   
21 class X86AsmLexer : public TargetAsmLexer {
22   const MCAsmInfo &AsmInfo;
23   
24   AsmToken LexTokenATT();
25   AsmToken LexTokenIntel();
26 protected:
27   AsmToken LexToken() {
28     switch (AsmInfo.getAssemblerDialect()) {
29     default:
30       SetError(SMLoc(), "Unhandled dialect");
31       return AsmToken(AsmToken::Error, "", 0);
32     case 0:
33       return LexTokenATT();
34     case 1:
35       return LexTokenIntel();
36     }
37   }
38 public:
39   X86AsmLexer(const Target &T, const MCAsmInfo &MAI)
40     : TargetAsmLexer(T), AsmInfo(MAI) {
41   }
42 };
43
44 }
45
46 AsmToken X86AsmLexer::LexTokenATT() {
47   return AsmToken(AsmToken::Error, "", 0);
48 }
49
50 AsmToken X86AsmLexer::LexTokenIntel() {
51   return AsmToken(AsmToken::Error, "", 0);
52 }
53
54 extern "C" void LLVMInitializeX86AsmLexer() {
55   RegisterAsmLexer<X86AsmLexer> X(TheX86_32Target);
56   RegisterAsmLexer<X86AsmLexer> Y(TheX86_64Target);
57 }
58
59 //#define REGISTERS_ONLY
60 //#include "../X86GenAsmMatcher.inc"
61 //#undef REGISTERS_ONLY