| uniform half4 colorGreen, colorRed; |
| uniform float[5] testArray, testArrayNegative; |
| |
| struct S { |
| int x, y; |
| }; |
| |
| half4 main(float2 coords) { |
| float f1[5] = float[5](1, 2, 3, 4, 5); |
| float f2[5] = float[5](1, 2, 3, 4, 5); |
| float[5] f3 = float[5](1, 2, 3, -4, 5); |
| |
| int3 v1[2] = int3[2](int3(1, 2, 3), int3(4, 5, 6)); |
| int3[2] v2 = int3[2](int3(1, 2, 3), int3(4, 5, 6)); |
| int3 v3[2] = int3[2](int3(1, 2, 3), int3(4, 5, -6)); |
| |
| half2x2[3] m1 = half2x2[3](half2x2(1), half2x2(2), half2x2(3, 4, 5, 6)); |
| half2x2 m2[3] = half2x2[3](half2x2(1), half2x2(2), half2x2(3, 4, 5, 6)); |
| half2x2 m3[3] = half2x2[3](half2x2(1), half2x2(2, 3, 4, 5), half2x2(6)); |
| |
| S s1[3] = S[3](S(1, 2), S(3, 4), S(5, 6)); |
| S[3] s2 = S[3](S(1, 2), S(0, 0), S(5, 6)); |
| S s3[3] = S[3](S(1, 2), S(3, 4), S(5, 6)); |
| |
| return // same address space (function) |
| (f1 == f2) && (f1 != f3) && |
| // same address space (uniform) |
| (testArray != testArrayNegative) && |
| // mixed address space |
| (testArray == f1) && (testArray != f3) && |
| // mixed address space, reverse argument order |
| (f1 == testArray) && (f3 != testArray) && |
| (v1 == v2) && (v1 != v3) && |
| (m1 == m2) && (m1 != m3) && |
| (s1 != s2) && (s3 == s1) ? colorGreen : colorRed; |
| } |