void ShaderFunction(float inf) : COLOR0
{
    float3x4 m;

    // tests that convert to non-matrix swizzles

    m._34  = 1.0; // AST should have a normal component select
    m._m23 = 2.0; // same code
    m[2][3] = 2.0; // same code

    m._11_12_13_14 = float4(3.0);      // AST should have normal column selection (first row)
    m._m10_m11_m12_m13 = float4(3.0);  // AST should have normal column selection (second row)
    m[1] = float4(3.0);                // same code

    // tests that stay as matrix swizzles

    float3 f3;
    m._11_22_23 = f3;
    m._21_12_31 = float3(5.0);
    m._11_12_21 = 2 * f3;

    // r-value
    f3 = m._21_12_31;
}

float3x3 createMat3x3(float3 a, float3 b, float3 c)
{
    float3x3 m;
    m._11_21_31 = a;
    m._12_22_32 = b;
    m._13_23_33 = c;
    return m;
}
