function_overload_floats.hlsl 1.3 KB

123456789101112131415161718192021
  1. // RUN: %dxc /Tps_6_2 /Emain > %s | FileCheck %s
  2. // CHECK: define void @main()
  3. // CHECK: %{{[a-z0-9]+}} = call half @dx.op.loadInput.f16(i32 4, i32 3, i32 0, i8 0, i32 undef)
  4. // CHECK: %{{[a-z0-9]+}} = call half @dx.op.loadInput.f16(i32 4, i32 2, i32 0, i8 0, i32 undef)
  5. // CHECK: %{{[a-z0-9]+}} = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)
  6. // CHECK: %{{[a-z0-9]+}} = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)
  7. // CHECK: entry
  8. float4 foo(float v0, float v1, float v2, float v3) { return float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
  9. half4 foo(half v0, half v1, half v2, half v3) { return half4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
  10. min16float4 foo(min16float v0, min16float v1, min16float v2, min16float v3) { return min16float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
  11. min10float4 foo(min10float v0, min10float v1, min10float v2, min10float v3) { return min10float4(v0, v0 * v1, v0 * v1 * v2, v0 * v1 * v2 * v3); }
  12. [RootSignature("")]
  13. float4 main(float vf
  14. : A, half vh
  15. : B, min16float vm16
  16. : C, min10float vm10
  17. : D) : SV_Target {
  18. return foo(vf, vf, vf, vf) + foo(vh, vh, vh, vh) + foo(vm16, vm16, vm16, vm16) + foo(vm10, vm10, vm10, vm10);
  19. }