summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-emit-c-like.cpp10
-rw-r--r--tests/expected-failure-github.txt2
-rw-r--r--tests/language-feature/swizzles/matrix-swizzle-write-array.slang2
-rw-r--r--tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang2
4 files changed, 6 insertions, 10 deletions
diff --git a/source/slang/slang-emit-c-like.cpp b/source/slang/slang-emit-c-like.cpp
index 790162c5b..f10147f0d 100644
--- a/source/slang/slang-emit-c-like.cpp
+++ b/source/slang/slang-emit-c-like.cpp
@@ -1661,7 +1661,7 @@ bool CLikeSourceEmitter::shouldFoldInstIntoUseSites(IRInst* inst)
}
}
- // For cuda and cpu targets don't support swizzle on the left-hand-side
+ // The cpp, cuda and wgsl targets don't support swizzle on the left-hand-side
// variable, e.g. vec4.xy = vec2 is not allowed.
// Therefore, we don't want to fold the right-hand-side expression.
// Instead, the right-hand-side expression should be generated as a separable
@@ -1669,7 +1669,8 @@ bool CLikeSourceEmitter::shouldFoldInstIntoUseSites(IRInst* inst)
// variable per element. E.g. vec4.x = vec2.x; vec4.y = vec2.y.
if (as<IRSwizzledStore>(user))
{
- if (isCPUTarget(getTargetReq()) || isCUDATarget(getTargetReq()))
+ if (isCPUTarget(getTargetReq()) || isCUDATarget(getTargetReq()) ||
+ isWGPUTarget(getTargetReq()))
return false;
}
@@ -3123,9 +3124,10 @@ void CLikeSourceEmitter::_emitInst(IRInst* inst)
case kIROp_SwizzledStore:
{
- // cpp and cuda target don't support swizzle on the left handside, so we
+ // cpp, cuda and wgsl targets don't support swizzle on the left handside, so we
// have to assign the element one by one.
- if (isCPUTarget(getTargetReq()) || isCUDATarget(getTargetReq()))
+ if (isCPUTarget(getTargetReq()) || isCUDATarget(getTargetReq()) ||
+ isWGPUTarget(getTargetReq()))
{
_emitSwizzleStorePerElement(inst);
}
diff --git a/tests/expected-failure-github.txt b/tests/expected-failure-github.txt
index 862f3528e..df8962382 100644
--- a/tests/expected-failure-github.txt
+++ b/tests/expected-failure-github.txt
@@ -17,5 +17,3 @@ tests/language-feature/enums/strongly-typed-id.slang.1 syn (wgpu)
tests/language-feature/generics/tuple.slang.1 syn (wgpu)
tests/language-feature/generics/variadic-0.slang.4 syn (wgpu)
tests/language-feature/shader-params/interface-shader-param-ordinary.slang.4 syn (wgpu)
-tests/language-feature/swizzles/matrix-swizzle-write-array.slang.3 syn (wgpu)
-tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang.3 syn (wgpu)
diff --git a/tests/language-feature/swizzles/matrix-swizzle-write-array.slang b/tests/language-feature/swizzles/matrix-swizzle-write-array.slang
index ea3fd2ffa..616a19b19 100644
--- a/tests/language-feature/swizzles/matrix-swizzle-write-array.slang
+++ b/tests/language-feature/swizzles/matrix-swizzle-write-array.slang
@@ -1,8 +1,6 @@
//TEST(compute):COMPARE_COMPUTE: -compute -shaderobj -output-using-type
//TEST(compute, vulkan):COMPARE_COMPUTE: -vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl -output-using-type
-// WGSL: Assign to swizzle expression not allowed #5603
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-wgpu
// Test that matrix swizzle writes work correctly
// Matrix swizzles can either be one or zero indexed
diff --git a/tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang b/tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang
index 1adde39dd..f1ad7bc6a 100644
--- a/tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang
+++ b/tests/language-feature/swizzles/matrix-swizzle-write-swizzle.slang
@@ -1,8 +1,6 @@
//TEST(compute):COMPARE_COMPUTE: -compute -shaderobj -output-using-type
//TEST(compute, vulkan):COMPARE_COMPUTE: -vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl -output-using-type
-// WGSL: Assign to swizzle expression not allowed #5603
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-wgpu
// Test that writing to swizzles of matrix swizzles works correctly