summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-emit-metal.cpp8
-rw-r--r--tests/hlsl-intrinsic/countbits8.slang4
-rw-r--r--tests/metal/8bit-vector-types.slang24
-rw-r--r--tests/metal/byte-address-buffer.slang2
4 files changed, 33 insertions, 5 deletions
diff --git a/source/slang/slang-emit-metal.cpp b/source/slang/slang-emit-metal.cpp
index 9858e51a1..b19e85044 100644
--- a/source/slang/slang-emit-metal.cpp
+++ b/source/slang/slang-emit-metal.cpp
@@ -1071,9 +1071,7 @@ void MetalSourceEmitter::emitSimpleTypeImpl(IRType* type)
{
case kIROp_VoidType:
case kIROp_BoolType:
- case kIROp_Int8Type:
case kIROp_IntType:
- case kIROp_UInt8Type:
case kIROp_UIntType:
case kIROp_FloatType:
case kIROp_HalfType:
@@ -1081,6 +1079,12 @@ void MetalSourceEmitter::emitSimpleTypeImpl(IRType* type)
m_writer->emit(getDefaultBuiltinTypeName(type->getOp()));
return;
}
+ case kIROp_Int8Type:
+ m_writer->emit("char");
+ return;
+ case kIROp_UInt8Type:
+ m_writer->emit("uchar");
+ return;
case kIROp_Int64Type:
m_writer->emit("long");
return;
diff --git a/tests/hlsl-intrinsic/countbits8.slang b/tests/hlsl-intrinsic/countbits8.slang
index 0426b5682..c73d815a5 100644
--- a/tests/hlsl-intrinsic/countbits8.slang
+++ b/tests/hlsl-intrinsic/countbits8.slang
@@ -1,8 +1,8 @@
//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -compute -cpu
//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -vk -compute
//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -cuda -compute
-//TODO: metal is currently failing even with emulation, investigate.
-//DISABLE_TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -mtl -compute -profile metallib_2_4
+//TODO: metal was previously failing but should work now after fixing vector type names
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-slang -mtl -compute -profile metallib_2_4
// Not testing the following:
// -dx12/hlsl, No support for uint8_t with hlsl
// -wgpu, only has 32-bit support
diff --git a/tests/metal/8bit-vector-types.slang b/tests/metal/8bit-vector-types.slang
new file mode 100644
index 000000000..8bfb65fc8
--- /dev/null
+++ b/tests/metal/8bit-vector-types.slang
@@ -0,0 +1,24 @@
+//TEST:SIMPLE(filecheck=CHECK): -target metal -stage compute -entry computeMain
+
+RWStructuredBuffer<uint> outputBuffer;
+
+uint8_t2 createUChar2()
+{
+ return uint8_t2(1, 2);
+}
+
+int8_t2 createChar2()
+{
+ return int8_t2(3, 4);
+}
+
+[numthreads(1, 1, 1)]
+void computeMain()
+{
+ // CHECK: uchar2
+ // CHECK: char2
+ uint8_t2 u8v2 = createUChar2();
+ int8_t2 i8v2 = createChar2();
+
+ outputBuffer[0] = u8v2.x + i8v2.x;
+} \ No newline at end of file
diff --git a/tests/metal/byte-address-buffer.slang b/tests/metal/byte-address-buffer.slang
index 8514dafe6..c0fb6b6b2 100644
--- a/tests/metal/byte-address-buffer.slang
+++ b/tests/metal/byte-address-buffer.slang
@@ -18,7 +18,7 @@ struct TestStruct
void main_kernel(uint3 tid: SV_DispatchThreadID)
{
// CHECK: uint [[WORD0:[a-zA-Z0-9_]+]] = as_type<uint>({{.*}}[(0U)>>2]);
- // CHECK: uint8_t [[A:[a-zA-Z0-9_]+]] = uint8_t(([[WORD0]] >> 0U) & 255U);
+ // CHECK: uchar [[A:[a-zA-Z0-9_]+]] = uchar(([[WORD0]] >> 0U) & 255U);
// CHECK: uint [[WORD1:[a-zA-Z0-9_]+]] = as_type<uint>({{.*}}[(0U)>>2]);
// CHECK: half [[H:[a-zA-Z0-9_]+]] = as_type<half>(ushort(([[WORD1]] >> 16U) & 65535U));