2016-08-25 00:34:43 +00:00
|
|
|
// function selection under type conversion
|
2016-08-25 21:57:56 +00:00
|
|
|
void foo1(double a, bool b) {}
|
|
|
|
void foo1(double a, uint b) {}
|
|
|
|
void foo1(double a, int b) {}
|
|
|
|
void foo1(double a, float b) {}
|
2016-08-25 00:34:43 +00:00
|
|
|
void foo1(double a, double b){}
|
|
|
|
|
2016-08-25 16:49:21 +00:00
|
|
|
// uint -> int
|
2016-08-25 21:57:56 +00:00
|
|
|
void foo2(int a, bool b) {}
|
|
|
|
void foo2(int a, uint b) {}
|
|
|
|
void foo2(int a, int b) {}
|
|
|
|
void foo2(int a, float b) {}
|
2016-08-25 16:49:21 +00:00
|
|
|
void foo2(int a, double b){}
|
|
|
|
|
|
|
|
// everything can promote
|
2016-08-25 21:57:56 +00:00
|
|
|
void foo3(bool b) {}
|
|
|
|
void foo4(uint b) {}
|
|
|
|
void foo5(int b) {}
|
|
|
|
void foo6(float b) {}
|
2016-08-25 16:49:21 +00:00
|
|
|
void foo7(double b){}
|
|
|
|
|
|
|
|
// shorter forward chain better than longer or backward chain
|
2016-08-25 21:57:56 +00:00
|
|
|
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) {}
|
2016-08-25 16:49:21 +00:00
|
|
|
|
2016-08-25 00:34:43 +00:00
|
|
|
float4 PixelShaderFunction(float4 input) : COLOR0
|
|
|
|
{
|
2016-08-25 21:57:56 +00:00
|
|
|
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));
|
|
|
|
|
2016-08-25 00:34:43 +00:00
|
|
|
return input;
|
|
|
|
}
|