1cb93a386Sopenharmony_ciuniform half4 colorRed, colorGreen, testInputs; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cihalf fn(half4 v) { 4cb93a386Sopenharmony_ci // Add an un-inlinable construct to ensure that fn() remains a standalone function. 5cb93a386Sopenharmony_ci for (int x=1; x<=2; ++x) { 6cb93a386Sopenharmony_ci return v.x; 7cb93a386Sopenharmony_ci } 8cb93a386Sopenharmony_ci} 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_cihalf4 main(float2 coords) { 11cb93a386Sopenharmony_ci half4 v = testInputs; 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ci v = v.rgba; 14cb93a386Sopenharmony_ci v = v.rgb0.abgr; 15cb93a386Sopenharmony_ci v = v.rgba.00ra; 16cb93a386Sopenharmony_ci v = v.rgba.rrra.00ra.11ab; 17cb93a386Sopenharmony_ci v = v.abga.gb11; 18cb93a386Sopenharmony_ci v = v.abgr.abgr; 19cb93a386Sopenharmony_ci v = half4(v.rrrr.bb, 1, 1); 20cb93a386Sopenharmony_ci v = half4(v.ba.grgr); 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_ci // The swizzle will not be optimized away to avoid eliminating fn(). 23cb93a386Sopenharmony_ci v = half3(fn(v), 123, 456).yyzz; 24cb93a386Sopenharmony_ci v = half3(fn(v), half2(123, 456)).yyzz; 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ci // The swizzle will be optimized away because fn() can be reordered. 27cb93a386Sopenharmony_ci v = half3(fn(v), 123, 456).yzzx; 28cb93a386Sopenharmony_ci v = half3(fn(v), half2(123, 456)).yzzx; 29cb93a386Sopenharmony_ci 30cb93a386Sopenharmony_ci // The swizzle will not be optimized away to avoid duplicating fn(). 31cb93a386Sopenharmony_ci v = half3(fn(v), 123, 456).yxxz; 32cb93a386Sopenharmony_ci v = half3(fn(v), half2(123, 456)).yxxz; 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci // Swizzled constants. 35cb93a386Sopenharmony_ci v = half4(1, 2, 3, 4).xxyz; 36cb93a386Sopenharmony_ci 37cb93a386Sopenharmony_ci // Swizzled uniforms mixed with constants. 38cb93a386Sopenharmony_ci v = half4(1, colorRed.rgb).yzwx; 39cb93a386Sopenharmony_ci v = half4(1, colorRed.rgb).yxzw; 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci // Left-side swizzles. 42cb93a386Sopenharmony_ci v.rgba = v; 43cb93a386Sopenharmony_ci v.abgr = v; 44cb93a386Sopenharmony_ci v.rgba.ra = v.gb; 45cb93a386Sopenharmony_ci v.abgr.gba = v.aa1; 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci return v == half4(1) ? colorGreen : colorRed; 48cb93a386Sopenharmony_ci} 49