xref: /openbsd-src/gnu/llvm/clang/lib/Driver/ToolChains/Arch/CSKY.h (revision 12c855180aad702bbcca06e0398d774beeafb155)
1*12c85518Srobert //===--- CSKY.h - CSKY-specific Tool Helpers ------------------*- C++ -*-===//
2*12c85518Srobert //
3*12c85518Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*12c85518Srobert // See https://llvm.org/LICENSE.txt for license information.
5*12c85518Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*12c85518Srobert //
7*12c85518Srobert //===----------------------------------------------------------------------===//
8*12c85518Srobert 
9*12c85518Srobert #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
10*12c85518Srobert #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
11*12c85518Srobert 
12*12c85518Srobert #include "clang/Driver/Driver.h"
13*12c85518Srobert #include "llvm/ADT/StringRef.h"
14*12c85518Srobert #include "llvm/Option/ArgList.h"
15*12c85518Srobert #include "llvm/Option/Option.h"
16*12c85518Srobert #include <string>
17*12c85518Srobert #include <vector>
18*12c85518Srobert 
19*12c85518Srobert namespace clang {
20*12c85518Srobert namespace driver {
21*12c85518Srobert namespace tools {
22*12c85518Srobert namespace csky {
23*12c85518Srobert 
24*12c85518Srobert enum class FloatABI {
25*12c85518Srobert   Invalid,
26*12c85518Srobert   Soft,
27*12c85518Srobert   SoftFP,
28*12c85518Srobert   Hard,
29*12c85518Srobert };
30*12c85518Srobert 
31*12c85518Srobert FloatABI getCSKYFloatABI(const Driver &D, const llvm::opt::ArgList &Args);
32*12c85518Srobert 
33*12c85518Srobert void getCSKYTargetFeatures(const Driver &D, const llvm::Triple &Triple,
34*12c85518Srobert                            const llvm::opt::ArgList &Args,
35*12c85518Srobert                            llvm::opt::ArgStringList &CmdArgs,
36*12c85518Srobert                            std::vector<llvm::StringRef> &Features);
37*12c85518Srobert 
38*12c85518Srobert std::optional<llvm::StringRef> getCSKYArchName(const Driver &D,
39*12c85518Srobert                                                const llvm::opt::ArgList &Args,
40*12c85518Srobert                                                const llvm::Triple &Triple);
41*12c85518Srobert 
42*12c85518Srobert } // end namespace csky
43*12c85518Srobert } // namespace tools
44*12c85518Srobert } // end namespace driver
45*12c85518Srobert } // end namespace clang
46*12c85518Srobert 
47*12c85518Srobert #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
48