i915g: loops not being unrolled
dEQP-GLES2.functional.shaders.discard.static_loop_always
is not being unrolled when it sure looks like it should be.
gl_FragColor = v_color;
for (int i = 0; i < 2; i++)
{
if (i > 0)
discard;
}
turns into
DCL IN[0], GENERIC[9], PERSPECTIVE
DCL OUT[0], COLOR
DCL TEMP[0..5]
IMM[0] UINT32 {1065353216, 0, 1073741824, 0}
0: MOV TEMP[1].x, IMM[0].xxxx
1: MOV TEMP[0].x, IMM[0].yyyy
2: BGNLOOP :0
3: SGE TEMP[3].x, TEMP[0].xxxx, IMM[0].zzzz
4: SLT TEMP[4].x, IMM[0].yyyy, TEMP[0].xxxx
5: CMP TEMP[5].x, -|TEMP[3].xxxx|, IMM[0].yyyy, TEMP[4].xxxx
6: KILL_IF -TEMP[5].xxxx
7: UIF TEMP[3].xxxx :9
8: BRK
9: ENDIF
10: ADD TEMP[2].x, TEMP[1].xxxx, IMM[0].xxxx
11: MOV TEMP[0].x, TEMP[1]
12: MOV TEMP[1].x, TEMP[2]
13: ENDLOOP :0
14: MOV OUT[0], IN[0]
15: END