1//===--- PPC.h - PPC-specific Tool Helpers ----------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_PPC_H 10#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_PPC_H 11 12#include "clang/Driver/Driver.h" 13#include "llvm/ADT/StringRef.h" 14#include "llvm/Option/Option.h" 15#include <string> 16#include <vector> 17 18namespace clang { 19namespace driver { 20namespace tools { 21namespace ppc { 22 23bool hasPPCAbiArg(const llvm::opt::ArgList &Args, const char *Value); 24 25enum class FloatABI { 26 Invalid, 27 Soft, 28 Hard, 29}; 30 31enum class ReadGOTPtrMode { 32 Bss, 33 SecurePlt, 34}; 35 36FloatABI getPPCFloatABI(const Driver &D, const llvm::opt::ArgList &Args); 37 38std::string getPPCTargetCPU(const llvm::opt::ArgList &Args); 39const char *getPPCAsmModeForCPU(StringRef Name); 40ReadGOTPtrMode getPPCReadGOTPtrMode(const Driver &D, const llvm::Triple &Triple, 41 const llvm::opt::ArgList &Args); 42 43void getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple, 44 const llvm::opt::ArgList &Args, 45 std::vector<llvm::StringRef> &Features); 46 47} // end namespace ppc 48} // end namespace target 49} // end namespace driver 50} // end namespace clang 51 52#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_PPC_H 53