1*c8dee2aaSAndroid Build Coastguard Worker/*#pragma settings DebugTrace*/ 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Workeruniform float u1[4]; 4*c8dee2aaSAndroid Build Coastguard Workerfloat index_by_literal() { 5*c8dee2aaSAndroid Build Coastguard Worker return u1[0]; 6*c8dee2aaSAndroid Build Coastguard Worker} 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Workeruniform float u2[4]; 9*c8dee2aaSAndroid Build Coastguard Workerfloat index_by_loop() { 10*c8dee2aaSAndroid Build Coastguard Worker float sum = 0; 11*c8dee2aaSAndroid Build Coastguard Worker for (int i = 3; i >= 0; --i) { 12*c8dee2aaSAndroid Build Coastguard Worker sum += u2[i]; 13*c8dee2aaSAndroid Build Coastguard Worker } 14*c8dee2aaSAndroid Build Coastguard Worker return sum; 15*c8dee2aaSAndroid Build Coastguard Worker} 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Workeruniform float u3[4]; 18*c8dee2aaSAndroid Build Coastguard Workerfloat index_by_complex_loop() { 19*c8dee2aaSAndroid Build Coastguard Worker float prod = 1; 20*c8dee2aaSAndroid Build Coastguard Worker for (int i = 0; i < 4; ++i) { 21*c8dee2aaSAndroid Build Coastguard Worker prod *= u3[i < 2 ? 0 : i]; 22*c8dee2aaSAndroid Build Coastguard Worker } 23*c8dee2aaSAndroid Build Coastguard Worker return prod; 24*c8dee2aaSAndroid Build Coastguard Worker} 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Workeruniform float u4[16]; 27*c8dee2aaSAndroid Build Coastguard Workerfloat index_out_of_bounds_checked() { 28*c8dee2aaSAndroid Build Coastguard Worker float sum = 0; 29*c8dee2aaSAndroid Build Coastguard Worker for (float f = -2.3; f < 17.0; f += 3.7) { 30*c8dee2aaSAndroid Build Coastguard Worker if (f > 0 && f < 16) { 31*c8dee2aaSAndroid Build Coastguard Worker sum -= u4[int(f)]; 32*c8dee2aaSAndroid Build Coastguard Worker } 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker return sum; 35*c8dee2aaSAndroid Build Coastguard Worker} 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Workerfloat4 main(float2 xy) { 38*c8dee2aaSAndroid Build Coastguard Worker return float4( 39*c8dee2aaSAndroid Build Coastguard Worker index_by_literal(), 40*c8dee2aaSAndroid Build Coastguard Worker index_by_loop(), 41*c8dee2aaSAndroid Build Coastguard Worker index_by_complex_loop(), 42*c8dee2aaSAndroid Build Coastguard Worker index_out_of_bounds_checked()); 43*c8dee2aaSAndroid Build Coastguard Worker} 44