int zero = 0; // Although all of these variables have compile-time constant values, we expect them to be NOT // constant-folded as they are accessed by an index with a value determine at runtime. const half[2] globalArray = half[2](1, 1); const half2 globalVector = half2(1, 1); const half2x2 globalMatrix = half2x2(1, 1, 1, 1); half4 main(float2) { const half[2] localArray = half[2](0, 1); const half2 localVector = half2(1, 1); const half2x2 localMatrix = half2x2(0, 1, 2, 3); return half4(globalArray[zero] * localArray[zero], globalVector[zero] * localVector[zero], globalMatrix[zero] * localMatrix[zero]); }