54 lines
1014 B
Plaintext
54 lines
1014 B
Plaintext
|
#include <metal_stdlib>
|
||
|
#include <simd/simd.h>
|
||
|
|
||
|
using namespace metal;
|
||
|
|
||
|
struct M0
|
||
|
{
|
||
|
long v;
|
||
|
long2 b[2];
|
||
|
ulong c;
|
||
|
ulong d[5];
|
||
|
};
|
||
|
|
||
|
struct SSBO0
|
||
|
{
|
||
|
long4 a;
|
||
|
M0 m0;
|
||
|
};
|
||
|
|
||
|
struct SSBO1
|
||
|
{
|
||
|
ulong4 b;
|
||
|
M0 m0;
|
||
|
};
|
||
|
|
||
|
struct SSBO2
|
||
|
{
|
||
|
long a[4];
|
||
|
long2 b[4];
|
||
|
};
|
||
|
|
||
|
struct SSBO3
|
||
|
{
|
||
|
long a[4];
|
||
|
long2 b[4];
|
||
|
};
|
||
|
|
||
|
kernel void main0(device SSBO0& ssbo_0 [[buffer(0)]], device SSBO1& ssbo_1 [[buffer(1)]], device SSBO2& ssbo_2 [[buffer(2)]], device SSBO3& ssbo_3 [[buffer(3)]])
|
||
|
{
|
||
|
ssbo_0.a += long4(10l, 20l, 30l, 40l);
|
||
|
ssbo_1.b += ulong4(999999999999999999ul, 8888888888888888ul, 77777777777777777ul, 6666666666666666ul);
|
||
|
ssbo_0.a += long4(20l);
|
||
|
ssbo_0.a = abs(ssbo_0.a + long4(ssbo_1.b));
|
||
|
ssbo_0.a += long4(1l);
|
||
|
ssbo_1.b += ulong4(long4(1l));
|
||
|
ssbo_0.a -= long4(1l);
|
||
|
ssbo_1.b -= ulong4(long4(1l));
|
||
|
ssbo_1.b = as_type<ulong4>(as_type<double4>(ssbo_0.a));
|
||
|
ssbo_0.a = as_type<long4>(as_type<double4>(ssbo_1.b));
|
||
|
ssbo_2.a[0] += 1l;
|
||
|
ssbo_3.a[0] += 2l;
|
||
|
}
|
||
|
|