SKIP: FAILED

struct Outputs {
  float16_t a;
  vector<float16_t, 4> b;
};
struct tint_symbol_1 {
  float16_t loc1 : TEXCOORD1;
  vector<float16_t, 4> loc2 : TEXCOORD2;
};
struct tint_symbol_2 {
  float16_t a : SV_Target1;
  vector<float16_t, 4> b : SV_Target2;
};

Outputs frag_main_inner(float16_t loc1, vector<float16_t, 4> loc2) {
  Outputs tint_symbol_3 = {(loc1 * float16_t(2.0h)), (loc2 * float16_t(3.0h))};
  return tint_symbol_3;
}

tint_symbol_2 frag_main(tint_symbol_1 tint_symbol) {
  Outputs inner_result = frag_main_inner(tint_symbol.loc1, tint_symbol.loc2);
  tint_symbol_2 wrapper_result = (tint_symbol_2)0;
  wrapper_result.a = inner_result.a;
  wrapper_result.b = inner_result.b;
  return wrapper_result;
}
