| #include <metal_stdlib> |
| |
| using namespace metal; |
| struct tint_padded_array_element { |
| /* 0x0000 */ packed_float2 el; |
| /* 0x0008 */ int8_t tint_pad[8]; |
| }; |
| struct tint_array_wrapper { |
| /* 0x0000 */ tint_padded_array_element arr[2]; |
| }; |
| struct SSBO { |
| /* 0x0000 */ tint_array_wrapper m; |
| }; |
| |
| float2x2 arr_to_mat2x2_stride_16(tint_array_wrapper arr) { |
| return float2x2(arr.arr[0u].el, arr.arr[1u].el); |
| } |
| |
| tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 mat) { |
| tint_array_wrapper const tint_symbol = {.arr={{.el=mat[0u]}, {.el=mat[1u]}}}; |
| return tint_symbol; |
| } |
| |
| void f_1(device SSBO& ssbo) { |
| float2x2 const x_15 = arr_to_mat2x2_stride_16(ssbo.m); |
| ssbo.m = mat2x2_stride_16_to_arr(x_15); |
| return; |
| } |
| |
| kernel void f(device SSBO& ssbo [[buffer(0)]]) { |
| f_1(ssbo); |
| return; |
| } |
| |