//
// fragment_main
//
#include <metal_stdlib>

using namespace metal;
half3 subgroupShuffle_821df9() {
  half3 res = simd_shuffle(half3(1.0h),1);
  return res;
}

fragment void fragment_main(device packed_half3* tint_symbol [[buffer(0)]]) {
  *(tint_symbol) = packed_half3(subgroupShuffle_821df9());
  return;
}

//
// compute_main
//
#include <metal_stdlib>

using namespace metal;
half3 subgroupShuffle_821df9() {
  half3 res = simd_shuffle(half3(1.0h),1);
  return res;
}

kernel void compute_main(device packed_half3* tint_symbol [[buffer(0)]]) {
  *(tint_symbol) = packed_half3(subgroupShuffle_821df9());
  return;
}

