Path: blob/main/contrib/llvm-project/clang/lib/Driver/ToolChains/HLSL.h
35269 views
//===--- HLSL.h - HLSL ToolChain Implementations ----------------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HLSL_H9#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HLSL_H1011#include "clang/Driver/Tool.h"12#include "clang/Driver/ToolChain.h"1314namespace clang {15namespace driver {1617namespace tools {1819namespace hlsl {20class LLVM_LIBRARY_VISIBILITY Validator : public Tool {21public:22Validator(const ToolChain &TC) : Tool("hlsl::Validator", "dxv", TC) {}2324bool hasIntegratedCPP() const override { return false; }2526void ConstructJob(Compilation &C, const JobAction &JA,27const InputInfo &Output, const InputInfoList &Inputs,28const llvm::opt::ArgList &TCArgs,29const char *LinkingOutput) const override;30};31} // namespace hlsl32} // namespace tools3334namespace toolchains {3536class LLVM_LIBRARY_VISIBILITY HLSLToolChain : public ToolChain {37public:38HLSLToolChain(const Driver &D, const llvm::Triple &Triple,39const llvm::opt::ArgList &Args);40Tool *getTool(Action::ActionClass AC) const override;4142bool isPICDefault() const override { return false; }43bool isPIEDefault(const llvm::opt::ArgList &Args) const override {44return false;45}46bool isPICDefaultForced() const override { return false; }4748llvm::opt::DerivedArgList *49TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch,50Action::OffloadKind DeviceOffloadKind) const override;51static std::optional<std::string> parseTargetProfile(StringRef TargetProfile);52bool requiresValidation(llvm::opt::DerivedArgList &Args) const;5354// Set default DWARF version to 4 for DXIL uses version 4.55unsigned GetDefaultDwarfVersion() const override { return 4; }5657private:58mutable std::unique_ptr<tools::hlsl::Validator> Validator;59};6061} // end namespace toolchains62} // end namespace driver63} // end namespace clang6465#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HLSL_H666768