TargetOptions.h revision f7ac0f19a1c8d0ad14bcf6456ce368b830fea886
1//===- TargetOptions.h ----------------------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9#ifndef MCLD_TARGET_OPTIONS_H 10#define MCLD_TARGET_OPTIONS_H 11#ifdef ENABLE_UNITTEST 12#include <gtest.h> 13#endif 14 15#include <llvm/ADT/Triple.h> 16 17#include <string> 18 19namespace mcld { 20 21/** \class TargetOptions 22 * \brief TargetOptions collects the options that dependent on a target 23 * backend. 24 */ 25class TargetOptions 26{ 27public: 28 enum Endian { 29 Little, 30 Big, 31 Unknown 32 }; 33 34public: 35 TargetOptions(); 36 37 TargetOptions(const std::string& pTriple); 38 39 ~TargetOptions(); 40 41 const llvm::Triple& triple() const { return m_Triple; } 42 43 void setTriple(const std::string& pTriple); 44 45 void setTriple(const llvm::Triple& pTriple); 46 47 const std::string& getTargetCPU() const { return m_TargetCPU; } 48 49 void setTargetCPU(const std::string& pCPU); 50 51 const std::string& getTargetFeatureString() const { return m_TargetFS; } 52 53 void setTargetFeatureString(const std::string& pFS); 54 55 Endian endian() const { return m_Endian; } 56 57 void setEndian(Endian pEndian) { m_Endian = pEndian; } 58 59 bool isLittleEndian() const { return (Little == m_Endian); } 60 bool isBigEndian () const { return (Big == m_Endian); } 61 62 unsigned int bitclass() const { return m_BitClass; } 63 64 void setBitClass(unsigned int pBitClass) { m_BitClass = pBitClass; } 65 66 bool is32Bits() const { return (32 == m_BitClass); } 67 bool is64Bits() const { return (64 == m_BitClass); } 68 69private: 70 llvm::Triple m_Triple; 71 std::string m_TargetCPU; 72 std::string m_TargetFS; 73 Endian m_Endian; 74 unsigned int m_BitClass; 75 76}; 77 78} // namespace of mcld 79 80#endif 81 82