blob: 6292f5dba8c93601721688cd758b9698eb2ddb35 [file] [log] [blame]
dan sinclair575bb292023-11-26 23:28:41 +00001#include <metal_stdlib>
2using namespace metal;
James Price48be7e82024-06-19 22:38:07 +00003
dan sinclair575bb292023-11-26 23:28:41 +00004struct MyStruct {
5 float f1;
6};
James Price48be7e82024-06-19 22:38:07 +00007
dan sinclair575bb292023-11-26 23:28:41 +00008template<typename T, size_t N>
9struct tint_array {
10 const constant T& operator[](size_t i) const constant { return elements[i]; }
11 device T& operator[](size_t i) device { return elements[i]; }
12 const device T& operator[](size_t i) const device { return elements[i]; }
13 thread T& operator[](size_t i) thread { return elements[i]; }
14 const thread T& operator[](size_t i) const thread { return elements[i]; }
15 threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
16 const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
17 T elements[N];
18};
dan sinclairf1f381a2023-11-22 09:44:15 +000019
James Price02cf9112024-05-29 14:43:19 +000020struct tint_symbol_outputs {
21 float4 tint_symbol_1 [[color(0)]];
22};
dan sinclair575bb292023-11-26 23:28:41 +000023
24int ret_i32() {
25 return 1;
26}
James Price48be7e82024-06-19 22:38:07 +000027
dan sinclair575bb292023-11-26 23:28:41 +000028uint ret_u32() {
29 return 1u;
30}
James Price48be7e82024-06-19 22:38:07 +000031
dan sinclair575bb292023-11-26 23:28:41 +000032float ret_f32() {
33 return 1.0f;
34}
James Price48be7e82024-06-19 22:38:07 +000035
dan sinclair575bb292023-11-26 23:28:41 +000036MyStruct ret_MyStruct() {
37 return MyStruct{};
38}
James Price48be7e82024-06-19 22:38:07 +000039
dan sinclair575bb292023-11-26 23:28:41 +000040tint_array<float, 10> ret_MyArray() {
41 return tint_array<float, 10>{};
42}
James Price48be7e82024-06-19 22:38:07 +000043
dan sinclair575bb292023-11-26 23:28:41 +000044void let_decls() {
45 int const v1 = 1;
46 uint const v2 = 1u;
47 float const v3 = 1.0f;
48 int3 const v4 = int3(1);
49 uint3 const v5 = uint3(1u);
50 float3 const v6 = float3(1.0f);
51 float3x3 const v7 = float3x3(v6, v6, v6);
52 MyStruct const v8 = MyStruct{.f1=1.0f};
53 tint_array<float, 10> const v9 = tint_array<float, 10>{};
54 int const v10 = ret_i32();
55 uint const v11 = ret_u32();
56 float const v12 = ret_f32();
57 MyStruct const v13 = ret_MyStruct();
58 MyStruct const v14 = ret_MyStruct();
59 tint_array<float, 10> const v15 = ret_MyArray();
60}
James Price48be7e82024-06-19 22:38:07 +000061
James Price02cf9112024-05-29 14:43:19 +000062float4 tint_symbol_inner() {
dan sinclair575bb292023-11-26 23:28:41 +000063 return float4(0.0f);
64}
James Price48be7e82024-06-19 22:38:07 +000065
James Price02cf9112024-05-29 14:43:19 +000066fragment tint_symbol_outputs tint_symbol() {
James Price6d87fa62024-09-03 23:24:13 +000067 tint_symbol_outputs tint_wrapper_result = {};
68 tint_wrapper_result.tint_symbol_1 = tint_symbol_inner();
69 return tint_wrapper_result;
James Price02cf9112024-05-29 14:43:19 +000070}