131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- XCoreSubtarget.h - Define Subtarget for the XCore -------*- C++ -*-===//
2b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//
3b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//                     The LLVM Compiler Infrastructure
4b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//
5b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne// This file is distributed under the University of Illinois Open Source
6b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne// License. See LICENSE.TXT for details.
7b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//
8b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//===----------------------------------------------------------------------===//
9b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//
105b1b4489cf3a0f56f8be0673fc5cc380a32d277bEvan Cheng// This file declares the XCore specific subclass of TargetSubtargetInfo.
11b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//
12b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne//===----------------------------------------------------------------------===//
13b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
14b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne#ifndef XCORESUBTARGET_H
15b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne#define XCORESUBTARGET_H
16b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
175b1b4489cf3a0f56f8be0673fc5cc380a32d277bEvan Cheng#include "llvm/Target/TargetSubtargetInfo.h"
18b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne#include "llvm/Target/TargetMachine.h"
19b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne#include <string>
20b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
2194214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng#define GET_SUBTARGETINFO_HEADER
22385e930d55f3ecd3c9538823dfa5896a12461845Evan Cheng#include "XCoreGenSubtargetInfo.inc"
2394214703d97d8d9dfca88174ffc7e94820a85e62Evan Cheng
24b25baef26f03b9909b65dd5f762b38f93000445dRichard Osbornenamespace llvm {
250ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Chengclass StringRef;
26b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
2794214703d97d8d9dfca88174ffc7e94820a85e62Evan Chengclass XCoreSubtarget : public XCoreGenSubtargetInfo {
282d24e2a396a1d211baaeedf32148a3b657240170David Blaikie  virtual void anchor();
29b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
30b25baef26f03b9909b65dd5f762b38f93000445dRichard Osbornepublic:
31b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne  /// This constructor initializes the data members to match that
323be03406c9c3b2075d5ae416499af2f15f703d6fDaniel Dunbar  /// of the specified triple.
33b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne  ///
34276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng  XCoreSubtarget(const std::string &TT, const std::string &CPU,
35276365dd4bc0c2160f91fd8062ae1fc90c86c324Evan Cheng                 const std::string &FS);
36b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
37b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne  /// ParseSubtargetFeatures - Parses features string setting specified
38b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne  /// subtarget options.  Definition of function is auto generated by tblgen.
390ddff1b5359433faf2eb1c4ff5320ddcbd42f52fEvan Cheng  void ParseSubtargetFeatures(StringRef CPU, StringRef FS);
40b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne};
41b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne} // End llvm namespace
42b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne
43b25baef26f03b9909b65dd5f762b38f93000445dRichard Osborne#endif
44