1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 I, N; 2*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed; 3*c8dee2aaSAndroid Build Coastguard Worker 4*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 xy) { 5*c8dee2aaSAndroid Build Coastguard Worker // Ensure that constant-evaluation is safe even when the expression cannot be optimized. 6*c8dee2aaSAndroid Build Coastguard Worker half expectedX = reflect(2245222*222*2, -2e34); 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker const half4 constI = half4(1, -2, 3, -4); 9*c8dee2aaSAndroid Build Coastguard Worker const half4 constN = half4(-5, 6, -7, 8); 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker expectedX = half (-49); 12*c8dee2aaSAndroid Build Coastguard Worker half2 expectedXY = half2(-169, 202); 13*c8dee2aaSAndroid Build Coastguard Worker half3 expectedXYZ = half3(-379, 454, -529); 14*c8dee2aaSAndroid Build Coastguard Worker half4 expectedXYZW = half4(-699, 838, -977, 1116); 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker return (reflect(I.x, N.x ) == expectedX && 17*c8dee2aaSAndroid Build Coastguard Worker reflect(I.xy, N.xy ) == expectedXY && 18*c8dee2aaSAndroid Build Coastguard Worker reflect(I.xyz, N.xyz ) == expectedXYZ && 19*c8dee2aaSAndroid Build Coastguard Worker reflect(I.xyzw, N.xyzw ) == expectedXYZW && 20*c8dee2aaSAndroid Build Coastguard Worker reflect(constI.x, constN.x ) == expectedX && 21*c8dee2aaSAndroid Build Coastguard Worker reflect(constI.xy, constN.xy ) == expectedXY && 22*c8dee2aaSAndroid Build Coastguard Worker reflect(constI.xyz, constN.xyz ) == expectedXYZ && 23*c8dee2aaSAndroid Build Coastguard Worker reflect(constI.xyzw, constN.xyzw) == expectedXYZW) ? colorGreen 24*c8dee2aaSAndroid Build Coastguard Worker : colorRed; 25*c8dee2aaSAndroid Build Coastguard Worker} 26