143 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| // 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;
 | |
| }
 |