1*c8dee2aaSAndroid Build Coastguard Worker 2*c8dee2aaSAndroid Build Coastguard Workeruniform mat2 testMatrix2x2; 3*c8dee2aaSAndroid Build Coastguard Workeruniform mat3 testMatrix3x3; 4*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 testInputs; 5*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorRed; 6*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorGreen; 7*c8dee2aaSAndroid Build Coastguard Workeruniform float unknownInput; 8*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xmat2_XX_Xvec2_Xb() { 9*c8dee2aaSAndroid Build Coastguard Worker vec2 v; 10*c8dee2aaSAndroid Build Coastguard Worker vec2 vv; 11*c8dee2aaSAndroid Build Coastguard Worker v = testInputs.xy; 12*c8dee2aaSAndroid Build Coastguard Worker v = testInputs.xy; 13*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs.xy) return false; 14*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs.xy) return false; 15*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs.xy; 16*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs.xy; 17*c8dee2aaSAndroid Build Coastguard Worker if (v != -testInputs.xy) return false; 18*c8dee2aaSAndroid Build Coastguard Worker vv = vec2(0.0); 19*c8dee2aaSAndroid Build Coastguard Worker vv = vec2(0.0); 20*c8dee2aaSAndroid Build Coastguard Worker return vv == vec2(0.0); 21*c8dee2aaSAndroid Build Coastguard Worker} 22*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xmat3_XX_Xvec3_Xb() { 23*c8dee2aaSAndroid Build Coastguard Worker vec3 v; 24*c8dee2aaSAndroid Build Coastguard Worker vec3 vv; 25*c8dee2aaSAndroid Build Coastguard Worker v = testInputs.xyz; 26*c8dee2aaSAndroid Build Coastguard Worker v = testInputs.xyz; 27*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs.xyz) return false; 28*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs.xyz) return false; 29*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs.xyz; 30*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs.xyz; 31*c8dee2aaSAndroid Build Coastguard Worker if (v != -testInputs.xyz) return false; 32*c8dee2aaSAndroid Build Coastguard Worker vv = vec3(0.0); 33*c8dee2aaSAndroid Build Coastguard Worker vv = vec3(0.0); 34*c8dee2aaSAndroid Build Coastguard Worker return vv == vec3(0.0); 35*c8dee2aaSAndroid Build Coastguard Worker} 36*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xmat4_XX_Xvec4_Xb() { 37*c8dee2aaSAndroid Build Coastguard Worker vec4 v; 38*c8dee2aaSAndroid Build Coastguard Worker vec4 vv; 39*c8dee2aaSAndroid Build Coastguard Worker v = testInputs; 40*c8dee2aaSAndroid Build Coastguard Worker v = testInputs; 41*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs) return false; 42*c8dee2aaSAndroid Build Coastguard Worker if (v != testInputs) return false; 43*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs; 44*c8dee2aaSAndroid Build Coastguard Worker v = -testInputs; 45*c8dee2aaSAndroid Build Coastguard Worker if (v != -testInputs) return false; 46*c8dee2aaSAndroid Build Coastguard Worker vv = vec4(0.0); 47*c8dee2aaSAndroid Build Coastguard Worker vv = vec4(0.0); 48*c8dee2aaSAndroid Build Coastguard Worker return vv == vec4(0.0); 49*c8dee2aaSAndroid Build Coastguard Worker} 50*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xvec2_XX_Xmat2_Xb() { 51*c8dee2aaSAndroid Build Coastguard Worker const vec2 n = vec2(-1.0); 52*c8dee2aaSAndroid Build Coastguard Worker const vec2 i = vec2(1.0); 53*c8dee2aaSAndroid Build Coastguard Worker const vec2 z = vec2(0.0); 54*c8dee2aaSAndroid Build Coastguard Worker vec2 v; 55*c8dee2aaSAndroid Build Coastguard Worker vec2 vv = vec2(0.0); 56*c8dee2aaSAndroid Build Coastguard Worker vv = vec2(0.0); 57*c8dee2aaSAndroid Build Coastguard Worker if (vv != z) return false; 58*c8dee2aaSAndroid Build Coastguard Worker v = i * testMatrix2x2; 59*c8dee2aaSAndroid Build Coastguard Worker if (v != vec2(3.0, 7.0)) return false; 60*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix2x2 * i; 61*c8dee2aaSAndroid Build Coastguard Worker if (v != vec2(4.0, 6.0)) return false; 62*c8dee2aaSAndroid Build Coastguard Worker v = n * testMatrix2x2; 63*c8dee2aaSAndroid Build Coastguard Worker if (v != vec2(-3.0, -7.0)) return false; 64*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix2x2 * n; 65*c8dee2aaSAndroid Build Coastguard Worker return v == vec2(-4.0, -6.0); 66*c8dee2aaSAndroid Build Coastguard Worker} 67*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xvec3_XX_Xmat3_Xb() { 68*c8dee2aaSAndroid Build Coastguard Worker const vec3 n = vec3(-1.0); 69*c8dee2aaSAndroid Build Coastguard Worker const vec3 i = vec3(1.0); 70*c8dee2aaSAndroid Build Coastguard Worker const vec3 z = vec3(0.0); 71*c8dee2aaSAndroid Build Coastguard Worker vec3 v; 72*c8dee2aaSAndroid Build Coastguard Worker vec3 vv = vec3(0.0); 73*c8dee2aaSAndroid Build Coastguard Worker vv = vec3(0.0); 74*c8dee2aaSAndroid Build Coastguard Worker if (vv != z) return false; 75*c8dee2aaSAndroid Build Coastguard Worker v = i * testMatrix3x3; 76*c8dee2aaSAndroid Build Coastguard Worker if (v != vec3(6.0, 15.0, 24.0)) return false; 77*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix3x3 * i; 78*c8dee2aaSAndroid Build Coastguard Worker if (v != vec3(12.0, 15.0, 18.0)) return false; 79*c8dee2aaSAndroid Build Coastguard Worker v = n * testMatrix3x3; 80*c8dee2aaSAndroid Build Coastguard Worker if (v != vec3(-6.0, -15.0, -24.0)) return false; 81*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix3x3 * n; 82*c8dee2aaSAndroid Build Coastguard Worker return v == vec3(-12.0, -15.0, -18.0); 83*c8dee2aaSAndroid Build Coastguard Worker} 84*c8dee2aaSAndroid Build Coastguard Workerbool test_Xno_Xop_Xvec4_XX_Xmat4_Xb() { 85*c8dee2aaSAndroid Build Coastguard Worker const vec4 n = vec4(-1.0); 86*c8dee2aaSAndroid Build Coastguard Worker const vec4 i = vec4(1.0); 87*c8dee2aaSAndroid Build Coastguard Worker const vec4 z = vec4(0.0); 88*c8dee2aaSAndroid Build Coastguard Worker mat4 testMatrix4x4 = mat4(testMatrix2x2[0], testMatrix2x2[1], testMatrix2x2[0], testMatrix2x2[1], testMatrix2x2[0], testMatrix2x2[1], testMatrix2x2[0], testMatrix2x2[1]); 89*c8dee2aaSAndroid Build Coastguard Worker vec4 v; 90*c8dee2aaSAndroid Build Coastguard Worker vec4 vv = vec4(0.0); 91*c8dee2aaSAndroid Build Coastguard Worker vv = vec4(0.0); 92*c8dee2aaSAndroid Build Coastguard Worker if (vv != z) return false; 93*c8dee2aaSAndroid Build Coastguard Worker v = i * testMatrix4x4; 94*c8dee2aaSAndroid Build Coastguard Worker if (v != vec4(10.0)) return false; 95*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix4x4 * i; 96*c8dee2aaSAndroid Build Coastguard Worker if (v != vec4(4.0, 8.0, 12.0, 16.0)) return false; 97*c8dee2aaSAndroid Build Coastguard Worker v = n * testMatrix4x4; 98*c8dee2aaSAndroid Build Coastguard Worker if (v != vec4(-10.0)) return false; 99*c8dee2aaSAndroid Build Coastguard Worker v = testMatrix4x4 * n; 100*c8dee2aaSAndroid Build Coastguard Worker return v == vec4(-4.0, -8.0, -12.0, -16.0); 101*c8dee2aaSAndroid Build Coastguard Worker} 102*c8dee2aaSAndroid Build Coastguard Workervec4 main() { 103*c8dee2aaSAndroid Build Coastguard Worker return ((((test_Xno_Xop_Xmat2_XX_Xvec2_Xb() && test_Xno_Xop_Xmat3_XX_Xvec3_Xb()) && test_Xno_Xop_Xmat4_XX_Xvec4_Xb()) && test_Xno_Xop_Xvec2_XX_Xmat2_Xb()) && test_Xno_Xop_Xvec3_XX_Xmat3_Xb()) && test_Xno_Xop_Xvec4_XX_Xmat4_Xb() ? colorGreen : colorRed; 104*c8dee2aaSAndroid Build Coastguard Worker} 105