================
@@ -0,0 +1,68 @@
+// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
+// RUN:   spirv-unknown-vulkan-compute %s -emit-llvm -disable-llvm-passes \
+// RUN:   -o - | FileCheck %s
+
+template<class T, uint64_t Size>
+using Array = vk::SpirvOpaqueType</* OpTypeArray */ 28, T, 
vk::integral_constant<uint64_t, Size>>;
+
+template<uint64_t Size>
+using ArrayBuffer = Array<RWBuffer<float>, Size>;
+
+typedef vk::SpirvType</* OpTypeInt */ 21, 4, 32, 
vk::Literal<vk::integral_constant<uint, 32>>, 
vk::Literal<vk::integral_constant<bool, false>>> Int;
+
+typedef Array<Int, 5> ArrayInt;
+
+// CHECK: %struct.S = type { target("spirv.Type", target("spirv.Image", float, 
5, 2, 0, 0, 2, 0), target("spirv.IntegralConstant", i64, 4), 28, 0, 0), 
target("spirv.Type", target("spirv.Literal", 32), target("spirv.Literal", 0), 
21, 4, 32) }
+struct S {
+    ArrayBuffer<4> b;
+    Int i;
+};
+
+// CHECK: define spir_func target("spirv.Type", target("spirv.Image", float, 
5, 2, 0, 0, 2, 0), target("spirv.IntegralConstant", i64, 4), 28, 0, 0) 
@_Z14getArrayBufferu17spirv_type_28_0_0U5_TypeN4hlsl8RWBufferIfEEU6_ConstLm4E(target("spirv.Type",
 target("spirv.Image", float, 5, 2, 0, 0, 2, 0), 
target("spirv.IntegralConstant", i64, 4), 28, 0, 0) %v) #0
+ArrayBuffer<4> getArrayBuffer(ArrayBuffer<4> v) {
+    return v;
+}
+
+// CHECK: define spir_func target("spirv.Type", target("spirv.Literal", 32), 
target("spirv.Literal", 0), 21, 4, 32) 
@_Z6getIntu18spirv_type_21_4_32U4_LitLi32EU4_LitLi0E(target("spirv.Type", 
target("spirv.Literal", 32), target("spirv.Literal", 0), 21, 4, 32) %v) #0
+Int getInt(Int v) {
+    return v;
+}
+
+// TODO: uncomment and test once CBuffer handles are implemented for SPIR-V
+// ArrayBuffer<4> g_buffers;
+// Int g_word;
+
+[numthreads(1, 1, 1)]
+void main() {
+    // CHECK: %buffers = alloca target("spirv.Type", target("spirv.Image", 
float, 5, 2, 0, 0, 2, 0), target("spirv.IntegralConstant", i64, 4), 28, 0, 0), 
align 4
----------------
cassiebeckley wrote:

I've replaced the names with `.*`.

https://github.com/llvm/llvm-project/pull/134034
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to