xref: /freebsd/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/CSKY.h (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
181ad6265SDimitry Andric //===--- CSKY.h - CSKY-specific Tool Helpers ------------------*- C++ -*-===//
281ad6265SDimitry Andric //
381ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
481ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
581ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
681ad6265SDimitry Andric //
781ad6265SDimitry Andric //===----------------------------------------------------------------------===//
881ad6265SDimitry Andric 
981ad6265SDimitry Andric #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
1081ad6265SDimitry Andric #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
1181ad6265SDimitry Andric 
1281ad6265SDimitry Andric #include "clang/Driver/Driver.h"
1381ad6265SDimitry Andric #include "llvm/ADT/StringRef.h"
1481ad6265SDimitry Andric #include "llvm/Option/ArgList.h"
1581ad6265SDimitry Andric #include "llvm/Option/Option.h"
1681ad6265SDimitry Andric #include <string>
1781ad6265SDimitry Andric #include <vector>
1881ad6265SDimitry Andric 
1981ad6265SDimitry Andric namespace clang {
2081ad6265SDimitry Andric namespace driver {
2181ad6265SDimitry Andric namespace tools {
2281ad6265SDimitry Andric namespace csky {
2381ad6265SDimitry Andric 
2481ad6265SDimitry Andric enum class FloatABI {
2581ad6265SDimitry Andric   Invalid,
2681ad6265SDimitry Andric   Soft,
2781ad6265SDimitry Andric   SoftFP,
2881ad6265SDimitry Andric   Hard,
2981ad6265SDimitry Andric };
3081ad6265SDimitry Andric 
3181ad6265SDimitry Andric FloatABI getCSKYFloatABI(const Driver &D, const llvm::opt::ArgList &Args);
3281ad6265SDimitry Andric 
3381ad6265SDimitry Andric void getCSKYTargetFeatures(const Driver &D, const llvm::Triple &Triple,
3481ad6265SDimitry Andric                            const llvm::opt::ArgList &Args,
3581ad6265SDimitry Andric                            llvm::opt::ArgStringList &CmdArgs,
3681ad6265SDimitry Andric                            std::vector<llvm::StringRef> &Features);
3781ad6265SDimitry Andric 
38*bdd1243dSDimitry Andric std::optional<llvm::StringRef> getCSKYArchName(const Driver &D,
3981ad6265SDimitry Andric                                                const llvm::opt::ArgList &Args,
4081ad6265SDimitry Andric                                                const llvm::Triple &Triple);
4181ad6265SDimitry Andric 
4281ad6265SDimitry Andric } // end namespace csky
4381ad6265SDimitry Andric } // namespace tools
4481ad6265SDimitry Andric } // end namespace driver
4581ad6265SDimitry Andric } // end namespace clang
4681ad6265SDimitry Andric 
4781ad6265SDimitry Andric #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_ARCH_CSKY_H
48