#pragma clang diagnostic ignored "-Wmissing-prototypes" #include #include using namespace metal; struct ResType { half4 _m0; int4 _m1; }; struct main0_in { half v1 [[user(locn0)]]; half2 v2 [[user(locn1)]]; half3 v3 [[user(locn2)]]; half4 v4 [[user(locn3)]]; }; // Implementation of the GLSL mod() function, which is slightly different than Metal fmod() template inline Tx mod(Tx x, Ty y) { return x - y * floor(x / y); } // Implementation of the GLSL radians() function template inline T radians(T d) { return d * T(0.01745329251); } // Implementation of the GLSL degrees() function template inline T degrees(T r) { return r * T(57.2957795131); } inline half2x2 test_mat2(thread const half2& a, thread const half2& b, thread const half2& c, thread const half2& d) { return half2x2(half2(a), half2(b)) * half2x2(half2(c), half2(d)); } inline half3x3 test_mat3(thread const half3& a, thread const half3& b, thread const half3& c, thread const half3& d, thread const half3& e, thread const half3& f) { return half3x3(half3(a), half3(b), half3(c)) * half3x3(half3(d), half3(e), half3(f)); } inline void test_constants() { half a = half(1.0); half b = half(1.5); half c = half(-1.5); half d = half(0.0 / 0.0); half e = half(1.0 / 0.0); half f = half(-1.0 / 0.0); half g = half(1014.0); half h = half(9.5367431640625e-07); } inline half test_result() { return half(1.0); } inline void test_conversions() { half one = test_result(); int a = int(one); uint b = uint(one); bool c = one != half(0.0); float d = float(one); half a2 = half(a); half b2 = half(b); half c2 = half(c); half d2 = half(d); } inline void test_builtins(thread half4& v4, thread half3& v3, thread half& v1) { half4 res = radians(v4); res = degrees(v4); res = sin(v4); res = cos(v4); res = tan(v4); res = asin(v4); res = atan2(v4, v3.xyzz); res = atan(v4); res = sinh(v4); res = cosh(v4); res = tanh(v4); res = asinh(v4); res = acosh(v4); res = atanh(v4); res = pow(v4, v4); res = exp(v4); res = log(v4); res = exp2(v4); res = log2(v4); res = sqrt(v4); res = rsqrt(v4); res = abs(v4); res = sign(v4); res = floor(v4); res = trunc(v4); res = round(v4); res = rint(v4); res = ceil(v4); res = fract(v4); res = mod(v4, v4); half4 tmp; half4 _223 = modf(v4, tmp); res = _223; res = min(v4, v4); res = max(v4, v4); res = clamp(v4, v4, v4); res = mix(v4, v4, v4); res = select(v4, v4, v4 < v4); res = step(v4, v4); res = smoothstep(v4, v4, v4); bool4 btmp = isnan(v4); btmp = isinf(v4); res = fma(v4, v4, v4); ResType _267; _267._m0 = frexp(v4, _267._m1); int4 itmp = _267._m1; res = _267._m0; res = ldexp(res, itmp); uint pack0 = as_type(v4.xy); uint pack1 = as_type(v4.zw); res = half4(as_type(pack0), as_type(pack1)); half t0 = length(v4); t0 = distance(v4, v4); t0 = dot(v4, v4); half3 res3 = cross(v3, v3); res = normalize(v4); res = faceforward(v4, v4, v4); res = reflect(v4, v4); res = refract(v4, v4, v1); btmp = v4 < v4; btmp = v4 <= v4; btmp = v4 > v4; btmp = v4 >= v4; btmp = v4 == v4; btmp = v4 != v4; res = dfdx(v4); res = dfdy(v4); res = dfdx(v4); res = dfdy(v4); res = dfdx(v4); res = dfdy(v4); res = fwidth(v4); res = fwidth(v4); res = fwidth(v4); } fragment void main0(main0_in in [[stage_in]]) { half2 param = in.v2; half2 param_1 = in.v2; half2 param_2 = in.v3.xy; half2 param_3 = in.v3.xy; half2x2 m0 = test_mat2(param, param_1, param_2, param_3); half3 param_4 = in.v3; half3 param_5 = in.v3; half3 param_6 = in.v3; half3 param_7 = in.v4.xyz; half3 param_8 = in.v4.xyz; half3 param_9 = in.v4.yzw; half3x3 m1 = test_mat3(param_4, param_5, param_6, param_7, param_8, param_9); test_constants(); test_conversions(); test_builtins(in.v4, in.v3, in.v1); }