uniform half4 colorGreen;
uniform half unknownInput;
uniform half2x2 testMatrix2x2;

struct S {
    half4 ah4[1];
    half ah[1];
    half4 h4;
    half h;
};

struct S4 {
    half a, b, c, d;
};

struct S5 {
    half a, b, c, d, e;
};

// Each helper function needs to reference the variable multiple times, because if it's only read
// from once, it is inlined directly whether or not it is trivial.
half4 funcb(bool b) {
    return half4(b, b, b, !b);
}

half4 func1(half h) {
    return h.xxxx * h.xxxx;
}

half4 func2(half2 h2) {
    return h2.xyxy * h2.yxyx;
}

half4 func3(half3 h3) {
    return h3.xyzx * h3.xyzx;
}

half4 func4(half4 h4) {
    return h4 * h4;
}

half2x2 func2x2(half2x2 m) {
    return m * m[0][0];
}

half4 funcS4(S4 s) {
    return half4(s.a, s.b, s.c, 1) * s.d;
}

half4 funcS5(S5 s) {
    return half4(s.a, s.b, s.c, s.d) * s.e;
}

half4 main(float2 coords) {
    S s;
    s.ah4[0] = half4(unknownInput);
    s.ah[0] = unknownInput;
    s.h4 = half4(unknownInput);
    s.h = unknownInput;

    S as[1];
    as[0].ah4[0] = half4(unknownInput);

    bool b = bool(unknownInput);
    int i = int(unknownInput);
    int4 i4 = i.xxxx;

    // These expressions are considered "trivial" and will be cloned directly into the inlined
    // function without a temporary variable.
    half4 var;
    half2x2 mat;
    var = func1(+s.h);                    // field access (unary + is optimized away)
    var = funcb(b);                       // variable reference
    var = func2(s.ah4[0].yw);             // var, field access, array index, swizzle
    var = func2(as[0].ah4[0].xy);         // var, array index, field access, array index, swizzle
    var = func3(s.h4.zzz);                // var, field access, swizzle
    var = func3(colorGreen.xyz);          // var, swizzle
    var = func3(s.h.xxx);                 // var, field access, splat ctor (from scalar swizzle)
    var = func4(half4(s.h));              // var, splat, field access
    var = func4(s.ah4[0].xxxy);           // var, field access, array index, swizzle
    var = func4(colorGreen);              // variable reference
    var = func4(half4(1, 2, 3, 4));       // compound ctor, compile-time constant
    var = func1(half(i));                 // scalar-cast ctor, variable
    var = func4(half4(i4));               // compound-cast ctor, variable
    var = funcS4(S4(1, 2, 3, 4));         // struct with slotCount <= 4
    mat = func2x2(half2x2(unknownInput)); // diagonal matrix, variable reference

    // These expressions are considered "non-trivial" and will be placed in a temporary variable
    // when inlining occurs.
    var = func4(half4(testMatrix2x2));             // compound ctor, not compile-time constant
    mat = func2x2(half2x2(colorGreen));            // compound ctor, not compile-time constant
    mat = func2x2(half2x2(half3x3(unknownInput))); // matrix resize, diagonal matrix, var
    var = func4(half4(1, 2, 3, unknownInput));     // compound ctor, not compile-time constant
    var = funcS5(S5(1, 2, 3, 4, 5));               // struct with slotCount > 4
    var = func1(-s.h);                             // unary minus, var, field access
    var = funcb(!b);                               // prefix expression, var
//  var = func2(as[i].h4.yw);                      // (non-constant array index disallowed in ES2)
    var = func3(s.h4.yyy + s.h4.zzz);              // binary expression
    var = func4(s.h4.y001);                        // compound ctor, not compile-time constant

    return colorGreen;
}
