summaryrefslogtreecommitdiffstats
path: root/source/slang
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/slang-compiler.cpp48
-rw-r--r--source/slang/slang-emit-cpp.cpp4
-rw-r--r--source/slang/slang-emit.cpp4
-rw-r--r--source/slang/slang-module-library.h3
-rw-r--r--source/slang/slang-options.cpp17
-rw-r--r--source/slang/slang-parameter-binding.cpp6
-rw-r--r--source/slang/slang-type-layout.cpp4
-rw-r--r--source/slang/slang.cpp6
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) &&