~ubuntu-branches/ubuntu/quantal/llvm-3.1/quantal

« back to all changes in this revision

Viewing changes to lib/Target/Hexagon/HexagonSubtarget.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2012-03-29 19:09:51 UTC
  • Revision ID: package-import@ubuntu.com-20120329190951-aq83ivog4cg8bxun
Tags: upstream-3.1~svn153643
ImportĀ upstreamĀ versionĀ 3.1~svn153643

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===-- HexagonSubtarget.h - Define Subtarget for the Hexagon ---*- 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 file declares the Hexagon specific subclass of TargetSubtarget.
 
11
//
 
12
//===----------------------------------------------------------------------===//
 
13
 
 
14
#ifndef Hexagon_SUBTARGET_H
 
15
#define Hexagon_SUBTARGET_H
 
16
 
 
17
#include "llvm/Target/TargetSubtargetInfo.h"
 
18
#include "llvm/Target/TargetMachine.h"
 
19
#include <string>
 
20
 
 
21
#define GET_SUBTARGETINFO_HEADER
 
22
#include "HexagonGenSubtargetInfo.inc"
 
23
 
 
24
#define Hexagon_SMALL_DATA_THRESHOLD 8
 
25
 
 
26
namespace llvm {
 
27
 
 
28
class HexagonSubtarget : public HexagonGenSubtargetInfo {
 
29
 
 
30
  bool UseMemOps;
 
31
 
 
32
public:
 
33
  enum HexagonArchEnum {
 
34
    V1, V2, V3, V4
 
35
  };
 
36
 
 
37
  HexagonArchEnum HexagonArchVersion;
 
38
  std::string CPUString;
 
39
  InstrItineraryData InstrItins;
 
40
 
 
41
public:
 
42
  HexagonSubtarget(StringRef TT, StringRef CPU, StringRef FS);
 
43
 
 
44
  /// getInstrItins - Return the instruction itineraies based on subtarget
 
45
  /// selection.
 
46
  const InstrItineraryData &getInstrItineraryData() const { return InstrItins; }
 
47
 
 
48
 
 
49
  /// ParseSubtargetFeatures - Parses features string setting specified
 
50
  /// subtarget options.  Definition of function is auto generated by tblgen.
 
51
  void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
 
52
 
 
53
  bool hasV2TOps () const { return HexagonArchVersion >= V2; }
 
54
  bool hasV2TOpsOnly () const { return HexagonArchVersion == V2; }
 
55
  bool hasV3TOps () const { return HexagonArchVersion >= V3; }
 
56
  bool hasV3TOpsOnly () const { return HexagonArchVersion == V3; }
 
57
  bool hasV4TOps () const { return HexagonArchVersion >= V4; }
 
58
  bool useMemOps () const { return HexagonArchVersion >= V4 && UseMemOps; }
 
59
 
 
60
  bool isSubtargetV2() const { return HexagonArchVersion == V2;}
 
61
  const std::string &getCPUString () const { return CPUString; }
 
62
 
 
63
  // Threshold for small data section
 
64
  unsigned getSmallDataThreshold() const {
 
65
    return Hexagon_SMALL_DATA_THRESHOLD;
 
66
  }
 
67
  const HexagonArchEnum &getHexagonArchVersion() const {
 
68
    return  HexagonArchVersion;
 
69
  }
 
70
};
 
71
 
 
72
} // end namespace llvm
 
73
 
 
74
#endif