diff options
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-compiler.cpp | 48 | ||||
| -rw-r--r-- | source/slang/slang-emit-cpp.cpp | 4 | ||||
| -rw-r--r-- | source/slang/slang-emit.cpp | 4 | ||||
| -rw-r--r-- | source/slang/slang-module-library.h | 3 | ||||
| -rw-r--r-- | source/slang/slang-options.cpp | 17 | ||||
| -rw-r--r-- | source/slang/slang-parameter-binding.cpp | 6 | ||||
| -rw-r--r-- | source/slang/slang-type-layout.cpp | 4 | ||||
| -rw-r--r-- | source/slang/slang.cpp | 6 |
8 files changed, 44 insertions, 48 deletions
diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp index 8205bcf36..361f92525 100644 --- a/source/slang/slang-compiler.cpp +++ b/source/slang/slang-compiler.cpp @@ -13,7 +13,11 @@ #include "slang-compiler.h" #include "../compiler-core/slang-lexer.h" -#include "../compiler-core/slang-artifact.h" + +// Artifact +#include "../compiler-core/slang-artifact-desc-util.h" +#include "../compiler-core/slang-artifact-representation-impl.h" +#include "../compiler-core/slang-artifact-impl.h" #include "slang-lower-to-ir.h" #include "slang-mangle.h" @@ -28,7 +32,6 @@ #include "slang-serialize-container.h" // - // Includes to allow us to control console // output when writing assembly dumps. #include <fcntl.h> @@ -53,32 +56,18 @@ namespace Slang { - // !!!!!!!!!!!!!!!!!!!!!! free functions for DiagnosicSink !!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// !!!!!!!!!!!!!!!!!!!!!! free functions for DiagnosicSink !!!!!!!!!!!!!!!!!!!!!!!!!!!!! -bool isHeterogeneousTarget(CodeGenTarget target) -{ - return ArtifactDesc::makeFromCompileTarget(asExternal(target)).style == ArtifactStyle::Host; -} - -void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) + bool isHeterogeneousTarget(CodeGenTarget target) { - switch (val) - { - default: - sb << "<unknown>"; - break; + return ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)).style == ArtifactStyle::Host; + } - #define CASE(TAG, STR) case CodeGenTarget::TAG: sb << STR; break - CASE(GLSL, "glsl"); - CASE(HLSL, "hlsl"); - CASE(SPIRV, "spirv"); - CASE(SPIRVAssembly, "spriv-assembly"); - CASE(DXBytecode, "dxbc"); - CASE(DXBytecodeAssembly, "dxbc-assembly"); - CASE(DXIL, "dxil"); - CASE(DXILAssembly, "dxil-assembly"); - #undef CASE - } + void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) + { + UnownedStringSlice name = TypeTextUtil::getCompileTargetName(asExternal(val)); + name = name.getLength() ? name : toSlice("<unknown>"); + sb << name; } void printDiagnosticArg(StringBuilder& sb, PassThroughMode val) @@ -86,7 +75,6 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) sb << TypeTextUtil::getPassThroughName(SlangPassThrough(val)); } - // !!!!!!!!!!!!!!!!!!!!!!!!!!!! CompileResult !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! SlangResult CompileResult::getSharedLibrary(ComPtr<ISlangSharedLibrary>& outSharedLibrary) @@ -997,7 +985,7 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) static bool _isCPUHostTarget(CodeGenTarget target) { - auto desc = ArtifactDesc::makeFromCompileTarget(asExternal(target)); + auto desc = ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)); return desc.style == ArtifactStyle::Host; } @@ -1303,7 +1291,7 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) // If we aren't using LLVM 'host callable', we want downstream compile to produce a shared library if (compilerType != PassThroughMode::LLVM && - ArtifactDesc::makeFromCompileTarget(asExternal(target)).kind == ArtifactKind::HostCallable) + ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)).kind == ArtifactKind::HostCallable) { target = CodeGenTarget::ShaderSharedLibrary; } @@ -1804,7 +1792,7 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) ComPtr<ISlangBlob> blob; if (SLANG_FAILED(result.getBlob(blob))) { - if (ArtifactDesc::makeFromCompileTarget(asExternal(targetReq->getTarget())).kind == ArtifactKind::HostCallable) + if (ArtifactDescUtil::makeDescFromCompileTarget(asExternal(targetReq->getTarget())).kind == ArtifactKind::HostCallable) { // Some HostCallable are not directly representable as a 'binary'. // So here, we just ignore if that appears the case, and don't output an unexpected error. @@ -2448,7 +2436,7 @@ void printDiagnosticArg(StringBuilder& sb, CodeGenTarget val) return; auto target = getTargetFormat(); - const auto desc = ArtifactDesc::makeFromCompileTarget(asExternal(target)); + const auto desc = ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)); if (desc.kind == ArtifactKind::Text) { diff --git a/source/slang/slang-emit-cpp.cpp b/source/slang/slang-emit-cpp.cpp index 5df13cbde..3cfe4d8d4 100644 --- a/source/slang/slang-emit-cpp.cpp +++ b/source/slang/slang-emit-cpp.cpp @@ -8,6 +8,8 @@ #include "slang-ir-clone.h" +#include "../compiler-core/slang-artifact-desc-util.h" + #include <assert.h> /* @@ -1653,7 +1655,7 @@ CPPSourceEmitter::CPPSourceEmitter(const Desc& desc): //m_semanticUsedFlags = SemanticUsedFlag::GroupID | SemanticUsedFlag::GroupThreadID | SemanticUsedFlag::DispatchThreadID; - const auto artifactDesc = ArtifactDesc::makeFromCompileTarget(asExternal(getTarget())); + const auto artifactDesc = ArtifactDescUtil::makeDescFromCompileTarget(asExternal(getTarget())); // If we have runtime library we can convert to a terminated string slice m_hasString = (artifactDesc.style == ArtifactStyle::Host); diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index 1ded8668f..21073f4c8 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -66,6 +66,8 @@ #include "slang-emit-cpp.h" #include "slang-emit-cuda.h" +#include "../compiler-core/slang-artifact-desc-util.h" + #include <assert.h> Slang::String get_slang_cpp_host_prelude(); @@ -180,7 +182,7 @@ Result linkAndOptimizeIR( auto targetRequest = codeGenContext->getTargetReq(); // Get the artifact desc for the target - const auto artifactDesc = ArtifactDesc::makeFromCompileTarget(asExternal(target)); + const auto artifactDesc = ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)); // We start out by performing "linking" at the level of the IR. // This step will create a fresh IR module to be used for diff --git a/source/slang/slang-module-library.h b/source/slang/slang-module-library.h index 58d10bfc3..40e655e85 100644 --- a/source/slang/slang-module-library.h +++ b/source/slang/slang-module-library.h @@ -2,7 +2,7 @@ #ifndef SLANG_MODULE_LIBRARY_H #define SLANG_MODULE_LIBRARY_H -#include "../compiler-core/slang-artifact.h" +#include "../compiler-core/slang-artifact-representation.h" #include "slang-compiler.h" @@ -13,7 +13,6 @@ namespace Slang class ModuleLibrary : public ComObject, public IArtifactRepresentation { public: - SLANG_COM_OBJECT_IUNKNOWN_ALL SLANG_CLASS_GUID(0x2f7412bd, 0x6154, 0x40a9, { 0x89, 0xb3, 0x62, 0xe0, 0x24, 0x17, 0x24, 0xa1 }); diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp index ab658fe18..5b14ca24f 100644 --- a/source/slang/slang-options.cpp +++ b/source/slang/slang-options.cpp @@ -10,7 +10,10 @@ #include "slang-compiler.h" #include "slang-profile.h" -#include "../compiler-core/slang-artifact.h" +#include "../compiler-core/slang-artifact-desc-util.h" + +#include "../compiler-core/slang-artifact-impl.h" +#include "../compiler-core/slang-artifact-representation-impl.h" #include "slang-repro.h" #include "slang-serialize-ir.h" @@ -20,7 +23,7 @@ #include "../core/slang-hex-dump-util.h" #include "../compiler-core/slang-command-line-args.h" -#include "../compiler-core/slang-artifact-info.h" +#include "../compiler-core/slang-artifact-desc-util.h" #include "../compiler-core/slang-core-diagnostics.h" #include <assert.h> @@ -1458,7 +1461,7 @@ struct OptionsParser const auto path = referenceModuleName.value; - auto desc = ArtifactInfoUtil::getDescFromPath(path.getUnownedSlice()); + auto desc = ArtifactDescUtil::getDescFromPath(path.getUnownedSlice()); if (desc.kind == ArtifactKind::Unknown) { @@ -1467,18 +1470,18 @@ struct OptionsParser } // If it's a GPU binary, then we'll assume it's a library - if (ArtifactInfoUtil::isGpuUsable(desc)) + if (ArtifactDescUtil::isGpuUsable(desc)) { desc.kind = ArtifactKind::Library; } - if (!ArtifactInfoUtil::isLinkable(desc)) + if (!ArtifactDescUtil::isLinkable(desc)) { sink->diagnose(referenceModuleName.loc, Diagnostics::kindNotLinkable, Path::getPathExt(path)); return SLANG_FAIL; } - const String name = ArtifactInfoUtil::getBaseNameFromPath(desc, path.getUnownedSlice()); + const String name = ArtifactDescUtil::getBaseNameFromPath(desc, path.getUnownedSlice()); // Create the artifact ComPtr<IArtifact> artifact(new Artifact(desc, name)); @@ -2042,7 +2045,7 @@ struct OptionsParser // and output type is callable, add an empty' rawOutput. if (rawOutputs.getCount() == 0 && rawTargets.getCount() == 1 && - ArtifactDesc::makeFromCompileTarget(asExternal(rawTargets[0].format)).kind == ArtifactKind::HostCallable) + ArtifactDescUtil::makeDescFromCompileTarget(asExternal(rawTargets[0].format)).kind == ArtifactKind::HostCallable) { RawOutput rawOutput; rawOutput.impliedFormat = rawTargets[0].format; diff --git a/source/slang/slang-parameter-binding.cpp b/source/slang/slang-parameter-binding.cpp index 220cfb992..0a5df003a 100644 --- a/source/slang/slang-parameter-binding.cpp +++ b/source/slang/slang-parameter-binding.cpp @@ -5,7 +5,7 @@ #include "slang-compiler.h" #include "slang-type-layout.h" -#include "../compiler-core/slang-artifact-info.h" +#include "../compiler-core/slang-artifact-desc-util.h" #include "slang-ir-string-hash.h" @@ -3031,8 +3031,8 @@ static int _calcTotalNumUsedRegistersForLayoutResourceKind(ParameterBindingConte static bool _isCPUTarget(CodeGenTarget target) { - const auto desc = ArtifactDesc::makeFromCompileTarget(asExternal(target)); - return ArtifactInfoUtil::isCpuLikeTarget(desc); + const auto desc = ArtifactDescUtil::makeDescFromCompileTarget(asExternal(target)); + return ArtifactDescUtil::isCpuLikeTarget(desc); } static bool _isPTXTarget(CodeGenTarget target) diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp index cde70d488..22af19271 100644 --- a/source/slang/slang-type-layout.cpp +++ b/source/slang/slang-type-layout.cpp @@ -4,7 +4,7 @@ #include "slang-syntax.h" #include "slang-ir-insts.h" -#include "../compiler-core/slang-artifact-info.h" +#include "../compiler-core/slang-artifact-desc-util.h" #include <assert.h> @@ -1606,7 +1606,7 @@ bool isKhronosTarget(TargetRequest* targetReq) bool isCPUTarget(TargetRequest* targetReq) { - return ArtifactInfoUtil::isCpuLikeTarget(ArtifactDesc::makeFromCompileTarget(asExternal(targetReq->getTarget()))); + return ArtifactDescUtil::isCpuLikeTarget(ArtifactDescUtil::makeDescFromCompileTarget(asExternal(targetReq->getTarget()))); } bool isCUDATarget(TargetRequest* targetReq) diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index dd53c98bf..f74a4a5d6 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -7,7 +7,9 @@ #include "../core/slang-type-text-util.h" #include "../core/slang-type-convert-util.h" -#include "../compiler-core/slang-artifact.h" +// Artifact +#include "../compiler-core/slang-artifact-impl.h" +#include "../compiler-core/slang-artifact-desc-util.h" #include "slang-module-library.h" @@ -729,7 +731,7 @@ SlangPassThrough Session::getDownstreamCompilerForTransition(SlangCompileTarget return (SlangPassThrough)m_codeGenTransitionMap.getTransition(source, target); } - const auto desc = ArtifactDesc::makeFromCompileTarget(inTarget); + const auto desc = ArtifactDescUtil::makeDescFromCompileTarget(inTarget); // Special case host-callable if ((desc.kind == ArtifactKind::HostCallable) && |
