1*c8dee2aaSAndroid Build Coastguard Workerstruct S 2*c8dee2aaSAndroid Build Coastguard Worker{ 3*c8dee2aaSAndroid Build Coastguard Worker float x; 4*c8dee2aaSAndroid Build Coastguard Worker int y; 5*c8dee2aaSAndroid Build Coastguard Worker}; 6*c8dee2aaSAndroid Build Coastguard Worker 7*c8dee2aaSAndroid Build Coastguard Workerstruct Nested 8*c8dee2aaSAndroid Build Coastguard Worker{ 9*c8dee2aaSAndroid Build Coastguard Worker S a; 10*c8dee2aaSAndroid Build Coastguard Worker S b; 11*c8dee2aaSAndroid Build Coastguard Worker}; 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Workerstruct Compound 14*c8dee2aaSAndroid Build Coastguard Worker{ 15*c8dee2aaSAndroid Build Coastguard Worker float4 f4; 16*c8dee2aaSAndroid Build Coastguard Worker int3 i3; 17*c8dee2aaSAndroid Build Coastguard Worker}; 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Workercbuffer _UniformBuffer : register(b0, space0) 20*c8dee2aaSAndroid Build Coastguard Worker{ 21*c8dee2aaSAndroid Build Coastguard Worker float4 _11_colorRed : packoffset(c0); 22*c8dee2aaSAndroid Build Coastguard Worker float4 _11_colorGreen : packoffset(c1); 23*c8dee2aaSAndroid Build Coastguard Worker}; 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker 26*c8dee2aaSAndroid Build Coastguard Workerstatic float4 sk_FragColor; 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Workerstruct SPIRV_Cross_Output 29*c8dee2aaSAndroid Build Coastguard Worker{ 30*c8dee2aaSAndroid Build Coastguard Worker float4 sk_FragColor : SV_Target0; 31*c8dee2aaSAndroid Build Coastguard Worker}; 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard WorkerS returns_a_struct_S() 34*c8dee2aaSAndroid Build Coastguard Worker{ 35*c8dee2aaSAndroid Build Coastguard Worker S s = { 0.0f, 0 }; 36*c8dee2aaSAndroid Build Coastguard Worker s.x = 1.0f; 37*c8dee2aaSAndroid Build Coastguard Worker s.y = 2; 38*c8dee2aaSAndroid Build Coastguard Worker return s; 39*c8dee2aaSAndroid Build Coastguard Worker} 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Workerfloat accepts_a_struct_fS(S _44) 42*c8dee2aaSAndroid Build Coastguard Worker{ 43*c8dee2aaSAndroid Build Coastguard Worker return _44.x + float(_44.y); 44*c8dee2aaSAndroid Build Coastguard Worker} 45*c8dee2aaSAndroid Build Coastguard Worker 46*c8dee2aaSAndroid Build Coastguard Workervoid modifies_a_struct_vS(inout S _53) 47*c8dee2aaSAndroid Build Coastguard Worker{ 48*c8dee2aaSAndroid Build Coastguard Worker _53.x += 1.0f; 49*c8dee2aaSAndroid Build Coastguard Worker _53.y++; 50*c8dee2aaSAndroid Build Coastguard Worker} 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard WorkerS constructs_a_struct_S() 53*c8dee2aaSAndroid Build Coastguard Worker{ 54*c8dee2aaSAndroid Build Coastguard Worker S _42 = { 2.0f, 3 }; 55*c8dee2aaSAndroid Build Coastguard Worker return _42; 56*c8dee2aaSAndroid Build Coastguard Worker} 57*c8dee2aaSAndroid Build Coastguard Worker 58*c8dee2aaSAndroid Build Coastguard Workerfloat4 main(float2 _62) 59*c8dee2aaSAndroid Build Coastguard Worker{ 60*c8dee2aaSAndroid Build Coastguard Worker S _65 = returns_a_struct_S(); 61*c8dee2aaSAndroid Build Coastguard Worker S s = _65; 62*c8dee2aaSAndroid Build Coastguard Worker S _67 = _65; 63*c8dee2aaSAndroid Build Coastguard Worker float x = accepts_a_struct_fS(_67); 64*c8dee2aaSAndroid Build Coastguard Worker S _69 = _65; 65*c8dee2aaSAndroid Build Coastguard Worker modifies_a_struct_vS(_69); 66*c8dee2aaSAndroid Build Coastguard Worker s = _69; 67*c8dee2aaSAndroid Build Coastguard Worker S expected = constructs_a_struct_S(); 68*c8dee2aaSAndroid Build Coastguard Worker Nested n1 = { { 0.0f, 0 }, { 0.0f, 0 } }; 69*c8dee2aaSAndroid Build Coastguard Worker n1.a = returns_a_struct_S(); 70*c8dee2aaSAndroid Build Coastguard Worker n1.b = n1.a; 71*c8dee2aaSAndroid Build Coastguard Worker Nested n2 = n1; 72*c8dee2aaSAndroid Build Coastguard Worker Nested n3 = n1; 73*c8dee2aaSAndroid Build Coastguard Worker S _87 = n3.b; 74*c8dee2aaSAndroid Build Coastguard Worker modifies_a_struct_vS(_87); 75*c8dee2aaSAndroid Build Coastguard Worker n3.b = _87; 76*c8dee2aaSAndroid Build Coastguard Worker Compound _101 = { float4(1.0f, 2.0f, 3.0f, 4.0f), int3(5, 6, 7) }; 77*c8dee2aaSAndroid Build Coastguard Worker Compound c1 = _101; 78*c8dee2aaSAndroid Build Coastguard Worker float4 _107 = float4(_11_colorGreen.y, 2.0f, 3.0f, 4.0f); 79*c8dee2aaSAndroid Build Coastguard Worker Compound _108 = { _107, int3(5, 6, 7) }; 80*c8dee2aaSAndroid Build Coastguard Worker Compound c2 = _108; 81*c8dee2aaSAndroid Build Coastguard Worker float4 _113 = float4(_11_colorGreen.x, 2.0f, 3.0f, 4.0f); 82*c8dee2aaSAndroid Build Coastguard Worker Compound _114 = { _113, int3(5, 6, 7) }; 83*c8dee2aaSAndroid Build Coastguard Worker Compound c3 = _114; 84*c8dee2aaSAndroid Build Coastguard Worker bool _126 = false; 85*c8dee2aaSAndroid Build Coastguard Worker if (x == 3.0f) 86*c8dee2aaSAndroid Build Coastguard Worker { 87*c8dee2aaSAndroid Build Coastguard Worker _126 = s.x == 2.0f; 88*c8dee2aaSAndroid Build Coastguard Worker } 89*c8dee2aaSAndroid Build Coastguard Worker else 90*c8dee2aaSAndroid Build Coastguard Worker { 91*c8dee2aaSAndroid Build Coastguard Worker _126 = false; 92*c8dee2aaSAndroid Build Coastguard Worker } 93*c8dee2aaSAndroid Build Coastguard Worker bool _132 = false; 94*c8dee2aaSAndroid Build Coastguard Worker if (_126) 95*c8dee2aaSAndroid Build Coastguard Worker { 96*c8dee2aaSAndroid Build Coastguard Worker _132 = s.y == 3; 97*c8dee2aaSAndroid Build Coastguard Worker } 98*c8dee2aaSAndroid Build Coastguard Worker else 99*c8dee2aaSAndroid Build Coastguard Worker { 100*c8dee2aaSAndroid Build Coastguard Worker _132 = false; 101*c8dee2aaSAndroid Build Coastguard Worker } 102*c8dee2aaSAndroid Build Coastguard Worker bool _144 = false; 103*c8dee2aaSAndroid Build Coastguard Worker if (_132) 104*c8dee2aaSAndroid Build Coastguard Worker { 105*c8dee2aaSAndroid Build Coastguard Worker _144 = (s.y == expected.y) && (s.x == expected.x); 106*c8dee2aaSAndroid Build Coastguard Worker } 107*c8dee2aaSAndroid Build Coastguard Worker else 108*c8dee2aaSAndroid Build Coastguard Worker { 109*c8dee2aaSAndroid Build Coastguard Worker _144 = false; 110*c8dee2aaSAndroid Build Coastguard Worker } 111*c8dee2aaSAndroid Build Coastguard Worker bool _154 = false; 112*c8dee2aaSAndroid Build Coastguard Worker if (_144) 113*c8dee2aaSAndroid Build Coastguard Worker { 114*c8dee2aaSAndroid Build Coastguard Worker S _148 = { 2.0f, 3 }; 115*c8dee2aaSAndroid Build Coastguard Worker _154 = (s.y == 3) && (s.x == 2.0f); 116*c8dee2aaSAndroid Build Coastguard Worker } 117*c8dee2aaSAndroid Build Coastguard Worker else 118*c8dee2aaSAndroid Build Coastguard Worker { 119*c8dee2aaSAndroid Build Coastguard Worker _154 = false; 120*c8dee2aaSAndroid Build Coastguard Worker } 121*c8dee2aaSAndroid Build Coastguard Worker bool _166 = false; 122*c8dee2aaSAndroid Build Coastguard Worker if (_154) 123*c8dee2aaSAndroid Build Coastguard Worker { 124*c8dee2aaSAndroid Build Coastguard Worker S _158 = returns_a_struct_S(); 125*c8dee2aaSAndroid Build Coastguard Worker _166 = (s.y != _158.y) || (s.x != _158.x); 126*c8dee2aaSAndroid Build Coastguard Worker } 127*c8dee2aaSAndroid Build Coastguard Worker else 128*c8dee2aaSAndroid Build Coastguard Worker { 129*c8dee2aaSAndroid Build Coastguard Worker _166 = false; 130*c8dee2aaSAndroid Build Coastguard Worker } 131*c8dee2aaSAndroid Build Coastguard Worker bool _190 = false; 132*c8dee2aaSAndroid Build Coastguard Worker if (_166) 133*c8dee2aaSAndroid Build Coastguard Worker { 134*c8dee2aaSAndroid Build Coastguard Worker _190 = ((n1.b.y == n2.b.y) && (n1.b.x == n2.b.x)) && ((n1.a.y == n2.a.y) && (n1.a.x == n2.a.x)); 135*c8dee2aaSAndroid Build Coastguard Worker } 136*c8dee2aaSAndroid Build Coastguard Worker else 137*c8dee2aaSAndroid Build Coastguard Worker { 138*c8dee2aaSAndroid Build Coastguard Worker _190 = false; 139*c8dee2aaSAndroid Build Coastguard Worker } 140*c8dee2aaSAndroid Build Coastguard Worker bool _214 = false; 141*c8dee2aaSAndroid Build Coastguard Worker if (_190) 142*c8dee2aaSAndroid Build Coastguard Worker { 143*c8dee2aaSAndroid Build Coastguard Worker _214 = ((n1.b.y != n3.b.y) || (n1.b.x != n3.b.x)) || ((n1.a.y != n3.a.y) || (n1.a.x != n3.a.x)); 144*c8dee2aaSAndroid Build Coastguard Worker } 145*c8dee2aaSAndroid Build Coastguard Worker else 146*c8dee2aaSAndroid Build Coastguard Worker { 147*c8dee2aaSAndroid Build Coastguard Worker _214 = false; 148*c8dee2aaSAndroid Build Coastguard Worker } 149*c8dee2aaSAndroid Build Coastguard Worker bool _234 = false; 150*c8dee2aaSAndroid Build Coastguard Worker if (_214) 151*c8dee2aaSAndroid Build Coastguard Worker { 152*c8dee2aaSAndroid Build Coastguard Worker S _218 = { 1.0f, 2 }; 153*c8dee2aaSAndroid Build Coastguard Worker S _219 = { 2.0f, 3 }; 154*c8dee2aaSAndroid Build Coastguard Worker Nested _220 = { _218, _219 }; 155*c8dee2aaSAndroid Build Coastguard Worker _234 = ((n3.b.y == 3) && (n3.b.x == 2.0f)) && ((n3.a.y == 2) && (n3.a.x == 1.0f)); 156*c8dee2aaSAndroid Build Coastguard Worker } 157*c8dee2aaSAndroid Build Coastguard Worker else 158*c8dee2aaSAndroid Build Coastguard Worker { 159*c8dee2aaSAndroid Build Coastguard Worker _234 = false; 160*c8dee2aaSAndroid Build Coastguard Worker } 161*c8dee2aaSAndroid Build Coastguard Worker bool _242 = false; 162*c8dee2aaSAndroid Build Coastguard Worker if (_234) 163*c8dee2aaSAndroid Build Coastguard Worker { 164*c8dee2aaSAndroid Build Coastguard Worker _242 = true && all(bool4(float4(1.0f, 2.0f, 3.0f, 4.0f).x == _107.x, float4(1.0f, 2.0f, 3.0f, 4.0f).y == _107.y, float4(1.0f, 2.0f, 3.0f, 4.0f).z == _107.z, float4(1.0f, 2.0f, 3.0f, 4.0f).w == _107.w)); 165*c8dee2aaSAndroid Build Coastguard Worker } 166*c8dee2aaSAndroid Build Coastguard Worker else 167*c8dee2aaSAndroid Build Coastguard Worker { 168*c8dee2aaSAndroid Build Coastguard Worker _242 = false; 169*c8dee2aaSAndroid Build Coastguard Worker } 170*c8dee2aaSAndroid Build Coastguard Worker bool _248 = false; 171*c8dee2aaSAndroid Build Coastguard Worker if (_242) 172*c8dee2aaSAndroid Build Coastguard Worker { 173*c8dee2aaSAndroid Build Coastguard Worker _248 = false || any(bool4(_107.x != _113.x, _107.y != _113.y, _107.z != _113.z, _107.w != _113.w)); 174*c8dee2aaSAndroid Build Coastguard Worker } 175*c8dee2aaSAndroid Build Coastguard Worker else 176*c8dee2aaSAndroid Build Coastguard Worker { 177*c8dee2aaSAndroid Build Coastguard Worker _248 = false; 178*c8dee2aaSAndroid Build Coastguard Worker } 179*c8dee2aaSAndroid Build Coastguard Worker bool valid = _248; 180*c8dee2aaSAndroid Build Coastguard Worker float4 _249 = 0.0f.xxxx; 181*c8dee2aaSAndroid Build Coastguard Worker if (_248) 182*c8dee2aaSAndroid Build Coastguard Worker { 183*c8dee2aaSAndroid Build Coastguard Worker _249 = _11_colorGreen; 184*c8dee2aaSAndroid Build Coastguard Worker } 185*c8dee2aaSAndroid Build Coastguard Worker else 186*c8dee2aaSAndroid Build Coastguard Worker { 187*c8dee2aaSAndroid Build Coastguard Worker _249 = _11_colorRed; 188*c8dee2aaSAndroid Build Coastguard Worker } 189*c8dee2aaSAndroid Build Coastguard Worker return _249; 190*c8dee2aaSAndroid Build Coastguard Worker} 191*c8dee2aaSAndroid Build Coastguard Worker 192*c8dee2aaSAndroid Build Coastguard Workervoid frag_main() 193*c8dee2aaSAndroid Build Coastguard Worker{ 194*c8dee2aaSAndroid Build Coastguard Worker float2 _21 = 0.0f.xx; 195*c8dee2aaSAndroid Build Coastguard Worker sk_FragColor = main(_21); 196*c8dee2aaSAndroid Build Coastguard Worker} 197*c8dee2aaSAndroid Build Coastguard Worker 198*c8dee2aaSAndroid Build Coastguard WorkerSPIRV_Cross_Output main() 199*c8dee2aaSAndroid Build Coastguard Worker{ 200*c8dee2aaSAndroid Build Coastguard Worker frag_main(); 201*c8dee2aaSAndroid Build Coastguard Worker SPIRV_Cross_Output stage_output; 202*c8dee2aaSAndroid Build Coastguard Worker stage_output.sk_FragColor = sk_FragColor; 203*c8dee2aaSAndroid Build Coastguard Worker return stage_output; 204*c8dee2aaSAndroid Build Coastguard Worker} 205