~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/utils/TableGen/SubtargetEmitter.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20070220103344-zgcu2psnx9d98fpa
Tags: upstream-0.90
ImportĀ upstreamĀ versionĀ 0.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//===- SubtargetEmitter.h - Generate subtarget enumerations -----*- C++ -*-===//
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
 
// This tablegen backend emits subtarget enumerations.
11
 
//
12
 
//===----------------------------------------------------------------------===//
13
 
 
14
 
#ifndef SUBTARGET_EMITTER_H
15
 
#define SUBTARGET_EMITTER_H
16
 
 
17
 
#include "TableGenBackend.h"
18
 
#include "llvm/Target/TargetInstrItineraries.h"
19
 
#include <vector>
20
 
#include <map>
21
 
#include <string>
22
 
 
23
 
 
24
 
namespace llvm {
25
 
 
26
 
class SubtargetEmitter : public TableGenBackend {
27
 
  
28
 
  RecordKeeper &Records;
29
 
  std::string Target;
30
 
  bool HasItineraries;
31
 
  
32
 
  void Enumeration(raw_ostream &OS, const char *ClassName, bool isBits);
33
 
  void FeatureKeyValues(raw_ostream &OS);
34
 
  void CPUKeyValues(raw_ostream &OS);
35
 
  unsigned CollectAllItinClasses(raw_ostream &OS,
36
 
                               std::map<std::string, unsigned> &ItinClassesMap);
37
 
  void FormItineraryStageString(const std::string &Names,
38
 
                                Record *ItinData, std::string &ItinString,
39
 
                                unsigned &NStages);
40
 
  void FormItineraryOperandCycleString(Record *ItinData, std::string &ItinString,
41
 
                                       unsigned &NOperandCycles);
42
 
  void EmitStageAndOperandCycleData(raw_ostream &OS, unsigned NItinClasses,
43
 
                     std::map<std::string, unsigned> &ItinClassesMap,
44
 
                     std::vector<std::vector<InstrItinerary> > &ProcList);
45
 
  void EmitProcessorData(raw_ostream &OS,
46
 
                       std::vector<std::vector<InstrItinerary> > &ProcList);
47
 
  void EmitProcessorLookup(raw_ostream &OS);
48
 
  void EmitData(raw_ostream &OS);
49
 
  void ParseFeaturesFunction(raw_ostream &OS);
50
 
  
51
 
public:
52
 
  SubtargetEmitter(RecordKeeper &R) : Records(R), HasItineraries(false) {}
53
 
 
54
 
  // run - Output the subtarget enumerations, returning true on failure.
55
 
  void run(raw_ostream &o);
56
 
 
57
 
};
58
 
 
59
 
 
60
 
} // End llvm namespace
61
 
 
62
 
#endif
63
 
 
64
 
 
65