1
//===- llvm/System/Host.h - Host machine characteristics --------*- C++ -*-===//
3
// The LLVM Compiler Infrastructure
5
// This file is distributed under the University of Illinois Open Source
6
// License. See LICENSE.TXT for details.
8
//===----------------------------------------------------------------------===//
10
// Methods for querying the nature of the host machine.
12
//===----------------------------------------------------------------------===//
14
#ifndef LLVM_SYSTEM_HOST_H
15
#define LLVM_SYSTEM_HOST_H
17
#include "llvm/ADT/StringMap.h"
23
inline bool isLittleEndianHost() {
32
inline bool isBigEndianHost() {
33
return !isLittleEndianHost();
36
/// getHostTriple() - Return the target triple of the running
39
/// The target triple is a string in the format of:
40
/// CPU_TYPE-VENDOR-OPERATING_SYSTEM
42
/// CPU_TYPE-VENDOR-KERNEL-OPERATING_SYSTEM
43
std::string getHostTriple();
45
/// getHostCPUName - Get the LLVM name for the host CPU. The particular format
46
/// of the name is target dependent, and suitable for passing as -mcpu to the
47
/// target which matches the host.
49
/// \return - The host CPU name, or empty if the CPU could not be determined.
50
std::string getHostCPUName();
52
/// getHostCPUFeatures - Get the LLVM names for the host CPU features.
53
/// The particular format of the names are target dependent, and suitable for
54
/// passing as -mattr to the target which matches the host.
56
/// \param Features - A string mapping feature names to either
57
/// true (if enabled) or false (if disabled). This routine makes no guarantees
58
/// about exactly which features may appear in this map, except that they are
59
/// all valid LLVM feature names.
61
/// \return - True on success.
62
bool getHostCPUFeatures(StringMap<bool> &Features);