| // function selection under type conversion |
| void foo1(double a, bool b) {} |
| void foo1(double a, uint b) {} |
| void foo1(double a, int b) {} |
| void foo1(double a, float b) {} |
| void foo1(double a, double b){} |
| |
| // uint -> int |
| void foo2(int a, bool b) {} |
| void foo2(int a, uint b) {} |
| void foo2(int a, int b) {} |
| void foo2(int a, float b) {} |
| void foo2(int a, double b){} |
| |
| // everything can promote |
| void foo3(bool b) {} |
| void foo4(uint b) {} |
| void foo5(int b) {} |
| void foo6(float b) {} |
| void foo7(double b){} |
| |
| // shorter forward chain better than longer or backward chain |
| void foo8(float) {} |
| void foo8(double) {} |
| void foo9(int) {} |
| void foo9(uint) {} |
| void foo10(bool) {} |
| void foo10(int) {} |
| |
| // shape change is worse |
| void foo11(float3) {} |
| void foo11(double) {} |
| void foo11(int3) {} |
| void foo11(uint) {} |
| void foo12(float1) {} |
| void foo12(double3) {} |
| void foo16(uint) {} |
| void foo16(uint2) {} |
| |
| // shape change |
| void foo13(float3) {} |
| void foo14(int1) {} |
| void foo15(bool1) {} |
| |
| float4 PixelShaderFunction(float4 input) : COLOR0 |
| { |
| bool b; |
| double d; |
| uint u; |
| int i; |
| float f; |
| |
| foo1(d, b); |
| foo1(d, d); |
| foo1(d, u); |
| foo1(d, i); |
| foo1(d, f); |
| |
| foo1(f, b); |
| foo1(f, d); |
| foo1(f, u); |
| foo1(f, i); |
| foo1(f, f); |
| |
| foo1(u, b); |
| foo1(u, d); |
| foo1(u, u); |
| foo1(u, i); |
| foo1(u, f); |
| |
| foo1(i, b); |
| foo1(i, d); |
| foo1(i, u); |
| foo1(i, i); |
| foo1(i, f); |
| |
| foo2(u, b); |
| foo2(u, d); |
| foo2(u, u); |
| foo2(u, i); |
| foo2(u, f); |
| |
| foo2(i, b); |
| foo2(i, d); |
| foo2(i, u); |
| foo2(i, i); |
| foo2(i, f); |
| |
| foo3(b); |
| foo3(d); |
| foo3(u); |
| foo3(i); |
| foo3(f); |
| |
| foo4(b); |
| foo4(d); |
| foo4(u); |
| foo4(i); |
| foo4(f); |
| |
| foo5(b); |
| foo5(d); |
| foo5(u); |
| foo5(i); |
| foo5(f); |
| |
| foo6(b); |
| foo6(d); |
| foo6(u); |
| foo6(i); |
| foo6(f); |
| |
| foo7(b); |
| foo7(d); |
| foo7(u); |
| foo7(i); |
| foo7(f); |
| |
| foo8(b); |
| foo8(u); |
| foo8(i); |
| |
| foo9(b); |
| foo9(f); |
| foo9(d); |
| |
| foo10(u); |
| foo10(f); |
| foo10(d); |
| |
| foo11(b); |
| foo11(f); |
| foo12(float3(f)); |
| foo16(int2(i,i)); |
| |
| foo13(f); |
| foo14(int4(i)); |
| foo15(b); |
| foo15(bool3(b)); |
| |
| return input; |
| } |