summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/AsmParser/X86AsmLexer.cpp
blob: 123735cace31a7f37acf99b958c5426431da1e9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//===-- X86AsmLexer.cpp - Tokenize X86 assembly to AsmTokens --------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include "llvm/Target/TargetAsmLexer.h"
#include "llvm/Target/TargetRegistry.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCParser/MCAsmLexer.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h"
#include "X86.h"

using namespace llvm;

namespace {
  
class X86AsmLexer : public TargetAsmLexer {
  const MCAsmInfo &AsmInfo;
  
  AsmToken LexTokenATT();
  AsmToken LexTokenIntel();
protected:
  AsmToken LexToken() {
    switch (AsmInfo.getAssemblerDialect()) {
    default:
      SetError(SMLoc(), "Unhandled dialect");
      return AsmToken(AsmToken::Error, "", 0);
    case 0:
      return LexTokenATT();
    case 1:
      return LexTokenIntel();
    }
  }
public:
  X86AsmLexer(const Target &T, const MCAsmInfo &MAI)
    : TargetAsmLexer(T), AsmInfo(MAI) {
  }
};

}

AsmToken X86AsmLexer::LexTokenATT() {
  return AsmToken(AsmToken::Error, "", 0);
}

AsmToken X86AsmLexer::LexTokenIntel() {
  return AsmToken(AsmToken::Error, "", 0);
}

extern "C" void LLVMInitializeX86AsmLexer() {
  RegisterAsmLexer<X86AsmLexer> X(TheX86_32Target);
  RegisterAsmLexer<X86AsmLexer> Y(TheX86_64Target);
}

//#define REGISTERS_ONLY
//#include "../X86GenAsmMatcher.inc"
//#undef REGISTERS_ONLY
OpenPOWER on IntegriCloud