• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#pragma clang diagnostic ignored "-Wunused-variable"
2
3#include <metal_stdlib>
4#include <simd/simd.h>
5#include <metal_atomic>
6
7using namespace metal;
8
9struct SSBO
10{
11    float4 in_data[1];
12};
13
14struct SSBO2
15{
16    float4 out_data[1];
17};
18
19struct SSBO3
20{
21    uint counter;
22};
23
24constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
25
26kernel void main0(const device SSBO& _23 [[buffer(0)]], device SSBO2& _45 [[buffer(1)]], device SSBO3& _48 [[buffer(2)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
27{
28    float4 _29 = _23.in_data[gl_GlobalInvocationID.x];
29    if (dot(_29, float4(1.0, 5.0, 6.0, 2.0)) > 8.19999980926513671875)
30    {
31        uint _52 = atomic_fetch_add_explicit((device atomic_uint*)&_48.counter, 1u, memory_order_relaxed);
32        _45.out_data[_52] = _29;
33    }
34}
35
36