summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-06-13 16:29:58 -0700
committerGitHub <noreply@github.com>2024-06-13 16:29:58 -0700
commitcfef0c6f66c9d36ae2899c8c2790c3fe422a7700 (patch)
tree0e116769009ae7e4b3b16d2ef28f275bea5e1fd7 /tests
parent2407966e899f9e4f490b23a92fc06d5da20544cc (diff)
Metal: misc fixes and enable more tests. (#4374)
* Fix and enable tests for metal. * Fix. * Fix. * Fix tests. * Fix warnings. * Fix. --------- Co-authored-by: Yong He <yonghe@Yongs-Mac-mini.local>
Diffstat (limited to 'tests')
-rw-r--r--tests/autodiff-dstdlib/determinant.slang1
-rw-r--r--tests/autodiff-dstdlib/dstdlib-mul-mat-mat.slang1
-rw-r--r--tests/autodiff-dstdlib/dstdlib-mul-mat-vec.slang1
-rw-r--r--tests/autodiff-dstdlib/dstdlib-mul-vec-mat.slang1
-rw-r--r--tests/autodiff-dstdlib/dstdlib-sqrt.slang1
-rw-r--r--tests/autodiff/custom-intrinsic.slang4
-rw-r--r--tests/autodiff/reverse-matrix-ops.slang1
-rw-r--r--tests/bindings/nested-parameter-block-2.slang1
-rw-r--r--tests/bugs/negative-literal.slang1
-rw-r--r--tests/bugs/op-assignment-unify-mat.slang2
-rw-r--r--tests/compute/byte-address-buffer.slang1
-rw-r--r--tests/compute/cbuffer-legalize.slang1
-rw-r--r--tests/compute/frem.slang1
-rw-r--r--tests/compute/matrix-layout-structured-buffer.slang1
-rw-r--r--tests/compute/non-square-column-major.slang8
-rw-r--r--tests/compute/non-square-row-major.slang19
-rw-r--r--tests/compute/non-square-row-major.slang.expected.txt3
-rw-r--r--tests/compute/structured-buffer-of-matrices.slang2
-rw-r--r--tests/compute/texture-simple.slang1
-rw-r--r--tests/hlsl-intrinsic/bit-cast.slang2
-rw-r--r--tests/hlsl-intrinsic/f16tof32.slang1
-rw-r--r--tests/hlsl-intrinsic/f32tof16.slang1
-rw-r--r--tests/hlsl-intrinsic/scalar-float.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/align-of-2.slang2
-rw-r--r--tests/hlsl-intrinsic/size-of/align-of-3.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/align-of-generic.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/align-of.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/size-of-2.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/size-of-3.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/size-of-generic.slang1
-rw-r--r--tests/hlsl-intrinsic/size-of/size-of.slang1
-rw-r--r--tests/hlsl-intrinsic/vector-float.slang1
-rw-r--r--tests/hlsl/packoffset.slang2
-rw-r--r--tests/ir/scalar-truncate.slang1
-rw-r--r--tests/language-feature/bit-cast/struct-bit-cast.slang1
-rw-r--r--tests/language-feature/bitfield/sizeof.slang3
-rw-r--r--tests/metal/stage-in.slang4
37 files changed, 33 insertions, 44 deletions
diff --git a/tests/autodiff-dstdlib/determinant.slang b/tests/autodiff-dstdlib/determinant.slang
index 86c7e4de7..d2e699551 100644
--- a/tests/autodiff-dstdlib/determinant.slang
+++ b/tests/autodiff-dstdlib/determinant.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/autodiff-dstdlib/dstdlib-mul-mat-mat.slang b/tests/autodiff-dstdlib/dstdlib-mul-mat-mat.slang
index 266e0e633..6419e92aa 100644
--- a/tests/autodiff-dstdlib/dstdlib-mul-mat-mat.slang
+++ b/tests/autodiff-dstdlib/dstdlib-mul-mat-mat.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/autodiff-dstdlib/dstdlib-mul-mat-vec.slang b/tests/autodiff-dstdlib/dstdlib-mul-mat-vec.slang
index 23313b99c..23ec9cabb 100644
--- a/tests/autodiff-dstdlib/dstdlib-mul-mat-vec.slang
+++ b/tests/autodiff-dstdlib/dstdlib-mul-mat-vec.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/autodiff-dstdlib/dstdlib-mul-vec-mat.slang b/tests/autodiff-dstdlib/dstdlib-mul-vec-mat.slang
index 21313b5ba..a4e86091a 100644
--- a/tests/autodiff-dstdlib/dstdlib-mul-vec-mat.slang
+++ b/tests/autodiff-dstdlib/dstdlib-mul-vec-mat.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/autodiff-dstdlib/dstdlib-sqrt.slang b/tests/autodiff-dstdlib/dstdlib-sqrt.slang
index 894c83e23..ee3fb94b7 100644
--- a/tests/autodiff-dstdlib/dstdlib-sqrt.slang
+++ b/tests/autodiff-dstdlib/dstdlib-sqrt.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/autodiff/custom-intrinsic.slang b/tests/autodiff/custom-intrinsic.slang
index 7d82887e2..2ebd01099 100644
--- a/tests/autodiff/custom-intrinsic.slang
+++ b/tests/autodiff/custom-intrinsic.slang
@@ -1,6 +1,5 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
@@ -17,6 +16,7 @@ namespace myintrinsiclib
__target_intrinsic(cuda, "$P_exp($0)")
__target_intrinsic(cpp, "$P_exp($0)")
__target_intrinsic(spirv, "12 resultType resultId glsl450 27 _0")
+ __target_intrinsic(metal, "exp($0)")
[ForwardDerivative(d_myexp<T>)]
T myexp(T x);
@@ -33,6 +33,7 @@ namespace myintrinsiclib
__generic<T : IDFloat>
__target_intrinsic(hlsl, "sin($0)")
__target_intrinsic(glsl, "sin($0)")
+ __target_intrinsic(metal, "sin($0)")
__target_intrinsic(cuda, "$P_sin($0)")
__target_intrinsic(cpp, "$P_sin($0)")
__target_intrinsic(spirv, "12 resultType resultId glsl450 13 _0")
@@ -51,6 +52,7 @@ namespace myintrinsiclib
__generic<T : IDFloat>
__target_intrinsic(hlsl, "cos($0)")
__target_intrinsic(glsl, "cos($0)")
+ __target_intrinsic(metal, "cos($0)")
__target_intrinsic(cuda, "$P_cos($0)")
__target_intrinsic(cpp, "$P_cos($0)")
__target_intrinsic(spirv, "12 resultType resultId glsl450 14 _0")
diff --git a/tests/autodiff/reverse-matrix-ops.slang b/tests/autodiff/reverse-matrix-ops.slang
index 4f4a6f675..e7be41811 100644
--- a/tests/autodiff/reverse-matrix-ops.slang
+++ b/tests/autodiff/reverse-matrix-ops.slang
@@ -1,6 +1,5 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/bindings/nested-parameter-block-2.slang b/tests/bindings/nested-parameter-block-2.slang
index 0ef42bcd1..38ce9232e 100644
--- a/tests/bindings/nested-parameter-block-2.slang
+++ b/tests/bindings/nested-parameter-block-2.slang
@@ -1,7 +1,6 @@
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -d3d12 -use-dxil -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
// nested-parameter-block-2.slang
struct CB
diff --git a/tests/bugs/negative-literal.slang b/tests/bugs/negative-literal.slang
index afb7d604a..66fc90edf 100644
--- a/tests/bugs/negative-literal.slang
+++ b/tests/bugs/negative-literal.slang
@@ -2,7 +2,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/bugs/op-assignment-unify-mat.slang b/tests/bugs/op-assignment-unify-mat.slang
index 317170687..5ee3897c3 100644
--- a/tests/bugs/op-assignment-unify-mat.slang
+++ b/tests/bugs/op-assignment-unify-mat.slang
@@ -1,4 +1,4 @@
-// We can't test on VK, as currently we don't support integer matrix types
+// We can't test on VK or metal, as currently we don't support integer matrix types
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -vk
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -cpu
diff --git a/tests/compute/byte-address-buffer.slang b/tests/compute/byte-address-buffer.slang
index 80a1e8e16..65356ec22 100644
--- a/tests/compute/byte-address-buffer.slang
+++ b/tests/compute/byte-address-buffer.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-d3d12 -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
// Confirm cross-compilation of `(RW)ByteAddressBuffer`
//
diff --git a/tests/compute/cbuffer-legalize.slang b/tests/compute/cbuffer-legalize.slang
index 5da305eab..d0c0a8777 100644
--- a/tests/compute/cbuffer-legalize.slang
+++ b/tests/compute/cbuffer-legalize.slang
@@ -1,6 +1,5 @@
//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
//TEST(compute):COMPARE_COMPUTE:-shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT: uniform(data=[1 2 3 4]):name=C.p.c
//TEST_INPUT: Texture2D(size=4, content = one):name=C.p.t
diff --git a/tests/compute/frem.slang b/tests/compute/frem.slang
index 8d6551e79..893f29794 100644
--- a/tests/compute/frem.slang
+++ b/tests/compute/frem.slang
@@ -3,7 +3,6 @@
//TEST(compute):COMPARE_COMPUTE: -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj -output-using-type
//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj -emit-spirv-directly -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
// Test uses of floating-point `%` operator.
diff --git a/tests/compute/matrix-layout-structured-buffer.slang b/tests/compute/matrix-layout-structured-buffer.slang
index 588c93685..8ef7077f8 100644
--- a/tests/compute/matrix-layout-structured-buffer.slang
+++ b/tests/compute/matrix-layout-structured-buffer.slang
@@ -10,6 +10,7 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj -dx12
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-column-major -shaderobj -dx12
+
//TEST_INPUT:ubuffer(data=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23], stride=48):name=gMatrices
RWStructuredBuffer<int3x4> gMatrices;
diff --git a/tests/compute/non-square-column-major.slang b/tests/compute/non-square-column-major.slang
index 09ed8e1c2..fd3ce6406 100644
--- a/tests/compute/non-square-column-major.slang
+++ b/tests/compute/non-square-column-major.slang
@@ -8,7 +8,7 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -xslang -matrix-layout-column-major -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -xslang -matrix-layout-column-major -shaderobj
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -xslang -matrix-layout-column-major -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=METAL):-slang -output-using-type -shaderobj -mtl
// matrix<R, C>
//TEST_INPUT:cbuffer(data=[1.0 0.0 10.0 0.0 0.0 1.0 20.0 0.0]):name matrixBuffer
@@ -26,6 +26,12 @@ void computeMain(uint3 tid : SV_DispatchThreadID)
float2 r = mul(v, M);
+ // Metal always uses scalar layout + row major, so it is computing
+ // [1 0]
+ // [ 1 2 1] * [10 0] = [ 21 1 ]
+ // [0 1]
+ // METAL: 21
+ // METAL: 1
output[0] = r.x;
output[1] = r.y;
}
diff --git a/tests/compute/non-square-row-major.slang b/tests/compute/non-square-row-major.slang
index b9a9c2fbb..867231cd3 100644
--- a/tests/compute/non-square-row-major.slang
+++ b/tests/compute/non-square-row-major.slang
@@ -3,16 +3,16 @@
// Note! This test doesn't work on CUDA or CPU targets, because both these targets
// assume matrices are tightly packed, whereas GPU targets align rows to 16 bytes.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -output-using-type -compile-arg -O3 -xslang -matrix-layout-row-major -shaderobj
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -output-using-type -xslang -matrix-layout-row-major -shaderobj
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=PACKED):-cpu -compute -output-using-type -compile-arg -O3 -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=ALIGNED):-slang -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=ALIGNED):-slang -compute -dx12 -output-using-type -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=ALIGNED):-vk -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=PACKED):-cuda -compute -output-using-type -xslang -matrix-layout-row-major -shaderobj
+//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=PACKED): -slang -output-using-type -shaderobj -mtl
// matrix<R, C>
-//TEST_INPUT:cbuffer(data=[1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 10.0 20.0 0.0 0.0 ]):name matrixBuffer
+//TEST_INPUT:cbuffer(data=[1.0 2.0 3.0 4.0 5.0 6.0 0.0 0.0 10.0 20.0 0.0 0.0 ]):name matrixBuffer
ConstantBuffer<float3x2> matrixBuffer;
//TEST_INPUT:ubuffer(data=[0 0], stride=4):out,name output
@@ -27,6 +27,11 @@ void computeMain(uint3 tid : SV_DispatchThreadID)
float2 r = mul(v, M);
+ // ALIGNED: 21
+ // ALIGNED: 34
+
+ // PACKED: 12
+ // PACKED: 16
output[0] = r.x;
output[1] = r.y;
}
diff --git a/tests/compute/non-square-row-major.slang.expected.txt b/tests/compute/non-square-row-major.slang.expected.txt
deleted file mode 100644
index df7317d53..000000000
--- a/tests/compute/non-square-row-major.slang.expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-type: float
-11.000000
-22.000000
diff --git a/tests/compute/structured-buffer-of-matrices.slang b/tests/compute/structured-buffer-of-matrices.slang
index 507611d5a..f2afd4fae 100644
--- a/tests/compute/structured-buffer-of-matrices.slang
+++ b/tests/compute/structured-buffer-of-matrices.slang
@@ -15,7 +15,7 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -xslang -matrix-layout-row-major -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -xslang -matrix-layout-row-major -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -matrix-layout-row-major -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+
// Note: we are using a buffer of floating-point matrices, but fill it with integer
// data, to allow this test to work on the Vulkan targets, which do not currently
diff --git a/tests/compute/texture-simple.slang b/tests/compute/texture-simple.slang
index b06be9a49..efa83edfb 100644
--- a/tests/compute/texture-simple.slang
+++ b/tests/compute/texture-simple.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -use-dxil -shaderobj -output-using-type
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type -render-feature hardware-device
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
// Doesn't work on CUDA, not clear why yet
//DISABLE_TEST_INPUT: Texture1D(format=R_Float32, size=4, content = one, mipMaps=1):name tLoad1D
diff --git a/tests/hlsl-intrinsic/bit-cast.slang b/tests/hlsl-intrinsic/bit-cast.slang
index 7d78c7f5a..e2726239b 100644
--- a/tests/hlsl-intrinsic/bit-cast.slang
+++ b/tests/hlsl-intrinsic/bit-cast.slang
@@ -3,7 +3,7 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+//TEST(compute):COMPARE_COMPUTE_EX:-mtl -compute -shaderobj
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/f16tof32.slang b/tests/hlsl-intrinsic/f16tof32.slang
index c98db9b61..adfab41c9 100644
--- a/tests/hlsl-intrinsic/f16tof32.slang
+++ b/tests/hlsl-intrinsic/f16tof32.slang
@@ -3,7 +3,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features half
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float> outputBuffer;
diff --git a/tests/hlsl-intrinsic/f32tof16.slang b/tests/hlsl-intrinsic/f32tof16.slang
index 244d82837..3360fed3b 100644
--- a/tests/hlsl-intrinsic/f32tof16.slang
+++ b/tests/hlsl-intrinsic/f32tof16.slang
@@ -3,7 +3,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features half
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<uint> outputBuffer;
diff --git a/tests/hlsl-intrinsic/scalar-float.slang b/tests/hlsl-intrinsic/scalar-float.slang
index 2b143dcd0..4623d4835 100644
--- a/tests/hlsl-intrinsic/scalar-float.slang
+++ b/tests/hlsl-intrinsic/scalar-float.slang
@@ -4,7 +4,6 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//DISABLED_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<int> outputBuffer;
diff --git a/tests/hlsl-intrinsic/size-of/align-of-2.slang b/tests/hlsl-intrinsic/size-of/align-of-2.slang
index cc56bd782..7b973eab3 100644
--- a/tests/hlsl-intrinsic/size-of/align-of-2.slang
+++ b/tests/hlsl-intrinsic/size-of/align-of-2.slang
@@ -4,7 +4,7 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/align-of-3.slang b/tests/hlsl-intrinsic/size-of/align-of-3.slang
index f053224b9..064ea48e3 100644
--- a/tests/hlsl-intrinsic/size-of/align-of-3.slang
+++ b/tests/hlsl-intrinsic/size-of/align-of-3.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/align-of-generic.slang b/tests/hlsl-intrinsic/size-of/align-of-generic.slang
index 0fbeacbad..60851dec5 100644
--- a/tests/hlsl-intrinsic/size-of/align-of-generic.slang
+++ b/tests/hlsl-intrinsic/size-of/align-of-generic.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/align-of.slang b/tests/hlsl-intrinsic/size-of/align-of.slang
index 76b433d15..c5be345c8 100644
--- a/tests/hlsl-intrinsic/size-of/align-of.slang
+++ b/tests/hlsl-intrinsic/size-of/align-of.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/size-of-2.slang b/tests/hlsl-intrinsic/size-of/size-of-2.slang
index b82c04cb1..e91e46746 100644
--- a/tests/hlsl-intrinsic/size-of/size-of-2.slang
+++ b/tests/hlsl-intrinsic/size-of/size-of-2.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/size-of-3.slang b/tests/hlsl-intrinsic/size-of/size-of-3.slang
index 7b6640ebc..26ef3f861 100644
--- a/tests/hlsl-intrinsic/size-of/size-of-3.slang
+++ b/tests/hlsl-intrinsic/size-of/size-of-3.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/size-of-generic.slang b/tests/hlsl-intrinsic/size-of/size-of-generic.slang
index c98f5f371..ea448710f 100644
--- a/tests/hlsl-intrinsic/size-of/size-of-generic.slang
+++ b/tests/hlsl-intrinsic/size-of/size-of-generic.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/size-of/size-of.slang b/tests/hlsl-intrinsic/size-of/size-of.slang
index 205a6e360..fc531bc4e 100644
--- a/tests/hlsl-intrinsic/size-of/size-of.slang
+++ b/tests/hlsl-intrinsic/size-of/size-of.slang
@@ -4,7 +4,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
diff --git a/tests/hlsl-intrinsic/vector-float.slang b/tests/hlsl-intrinsic/vector-float.slang
index 357ad5a84..fcf9649c2 100644
--- a/tests/hlsl-intrinsic/vector-float.slang
+++ b/tests/hlsl-intrinsic/vector-float.slang
@@ -3,7 +3,6 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -output-using-type -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -output-using-type -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute -output-using-type -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
RWStructuredBuffer<float4> outputBuffer;
diff --git a/tests/hlsl/packoffset.slang b/tests/hlsl/packoffset.slang
index 0097604a1..2acbb5ff8 100644
--- a/tests/hlsl/packoffset.slang
+++ b/tests/hlsl/packoffset.slang
@@ -2,6 +2,8 @@
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
//TEST:SIMPLE(filecheck=HLSL): -target hlsl -profile cs_5_0 -entry computeMain -line-directive-mode none
//TEST:SIMPLE(filecheck=GLSL): -target glsl -profile glsl_450 -stage compute -entry computeMain -line-directive-mode none
+
+// Metal does not support custom data layout.
//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
diff --git a/tests/ir/scalar-truncate.slang b/tests/ir/scalar-truncate.slang
index ebe8c15f4..ca1c5243c 100644
--- a/tests/ir/scalar-truncate.slang
+++ b/tests/ir/scalar-truncate.slang
@@ -1,6 +1,5 @@
//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<uint> outputBuffer;
diff --git a/tests/language-feature/bit-cast/struct-bit-cast.slang b/tests/language-feature/bit-cast/struct-bit-cast.slang
index de92ac8b0..630efb1e0 100644
--- a/tests/language-feature/bit-cast/struct-bit-cast.slang
+++ b/tests/language-feature/bit-cast/struct-bit-cast.slang
@@ -1,7 +1,6 @@
// struct-bit-cast.slang
//TEST(compute):COMPARE_COMPUTE: -shaderobj
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
// Test that bit_cast works for bit-reinterpreting one struct type as another.
diff --git a/tests/language-feature/bitfield/sizeof.slang b/tests/language-feature/bitfield/sizeof.slang
index e3ada9566..da390e275 100644
--- a/tests/language-feature/bitfield/sizeof.slang
+++ b/tests/language-feature/bitfield/sizeof.slang
@@ -1,5 +1,6 @@
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -output-using-type
-//DISABLE_TEST(compute):COMPARE_COMPUTE:-slang -shaderobj -mtl
+//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-mtl -output-using-type
+
// CHECK: 1
// CHECK-NEXT: 1
diff --git a/tests/metal/stage-in.slang b/tests/metal/stage-in.slang
index ee586847e..d494a76e0 100644
--- a/tests/metal/stage-in.slang
+++ b/tests/metal/stage-in.slang
@@ -11,8 +11,8 @@
// CHECK: struct vertexInput{{.*}}
// CHECK-NEXT:{
-// CHECK-NEXT: float4 position{{.*}} {{\[\[}}attribute(0){{\]\]}} {{\[\[}}user(POSITION){{\]\]}};
-// CHECK-NEXT: float4 color{{.*}} {{\[\[}}attribute(1){{\]\]}} {{\[\[}}user(COLOR){{\]\]}};
+// CHECK-NEXT: float4 position{{.*}} {{\[\[}}attribute(0){{\]\]}};
+// CHECK-NEXT: float4 color{{.*}} {{\[\[}}attribute(1){{\]\]}};
// CHECK-NEXT:};
// CHECK: {{\[\[}}vertex{{\]\]}} VOut{{.*}} main_vertex(vertexInput{{.*}}{{\[\[}}stage_in{{\]\]}}, uint vid{{.*}}{{\[\[}}vertex_id{{\]\]}}, uint instanceID{{.*}} {{\[\[}}instance_id{{\]\]}})