summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit.cpp
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2025-01-30 00:59:49 -0800
committerGitHub <noreply@github.com>2025-01-30 00:59:49 -0800
commitba9b2785c69c1b8c6d2b4103267b5281815f9f23 (patch)
treee4ba4ca76c6592b90764a0a7ac32502639dc93aa /source/slang/slang-emit.cpp
parent2ae194d51e15c064c3d905e628f7335de7504e32 (diff)
Support cooperative vector (#6223)
* Support cooperative vector without Vulkan-header update Adding a Slang support for cooperative vector. But this commit doesn't have Vulkan-header update.
Diffstat (limited to 'source/slang/slang-emit.cpp')
-rw-r--r--source/slang/slang-emit.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index cf4070df4..d8594ffdd 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -66,6 +66,7 @@
#include "slang-ir-lower-bit-cast.h"
#include "slang-ir-lower-buffer-element-type.h"
#include "slang-ir-lower-combined-texture-sampler.h"
+#include "slang-ir-lower-coopvec.h"
#include "slang-ir-lower-dynamic-resource-heap.h"
#include "slang-ir-lower-generics.h"
#include "slang-ir-lower-glsl-ssbo-types.h"
@@ -1016,6 +1017,16 @@ Result linkAndOptimizeIR(
#endif
validateIRModuleIfEnabled(codeGenContext, irModule);
+ switch (target)
+ {
+ case CodeGenTarget::SPIRV:
+ case CodeGenTarget::SPIRVAssembly:
+ case CodeGenTarget::HLSL:
+ break;
+ default:
+ lowerCooperativeVectors(irModule, sink);
+ }
+
// Inline calls to any functions marked with [__unsafeInlineEarly] or [ForceInline].
performForceInlining(irModule);
@@ -1476,14 +1487,15 @@ Result linkAndOptimizeIR(
{
default:
break;
+ case CodeGenTarget::HLSL:
case CodeGenTarget::GLSL:
case CodeGenTarget::WGSL:
- moveGlobalVarInitializationToEntryPoints(irModule);
+ moveGlobalVarInitializationToEntryPoints(irModule, targetProgram);
break;
// For SPIR-V to SROA across 2 entry-points a value must not be a global
case CodeGenTarget::SPIRV:
case CodeGenTarget::SPIRVAssembly:
- moveGlobalVarInitializationToEntryPoints(irModule);
+ moveGlobalVarInitializationToEntryPoints(irModule, targetProgram);
if (targetProgram->getOptionSet().getBoolOption(
CompilerOptionName::EnableExperimentalPasses))
introduceExplicitGlobalContext(irModule, target);
@@ -1494,7 +1506,7 @@ Result linkAndOptimizeIR(
case CodeGenTarget::Metal:
case CodeGenTarget::CPPSource:
case CodeGenTarget::CUDASource:
- moveGlobalVarInitializationToEntryPoints(irModule);
+ moveGlobalVarInitializationToEntryPoints(irModule, targetProgram);
introduceExplicitGlobalContext(irModule, target);
if (target == CodeGenTarget::CPPSource)
{