// RUN: %dxc /Tps_6_2 /Emain  %s | FileCheck %s
// CHECK: define void @main()
// CHECK: %{{[a-z0-9]+}} = call half @dx.op.loadInput.f16(i32 4, i32 3, i32 0, i8 0, i32 undef)
// CHECK: %{{[a-z0-9]+}} = call half @dx.op.loadInput.f16(i32 4, i32 2, i32 0, i8 0, i32 undef)
// CHECK: %{{[a-z0-9]+}} = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)
// CHECK: %{{[a-z0-9]+}} = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
// CHECK: entry

float4 foo(float v0, float v1, float v2, float v3) { return float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
half4 foo(half v0, half v1, half v2, half v3) { return half4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
min16float4 foo(min16float v0, min16float v1, min16float v2, min16float v3) { return min16float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
min10float4 foo(min10float v0, min10float v1, min10float v2, min10float v3) { return min10float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }

[RootSignature("")]
float4 main(float vf
                                : A, half vh
                                : B, min16float vm16
                                : C, min10float vm10
                                : D) : SV_Target {
  return foo(vf, vf, vf, vf) + foo(vh, vh, vh, vh) + foo(vm16, vm16, vm16, vm16) + foo(vm10, vm10, vm10, vm10);
}