r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] 0: MOV OUT[0], IN[0] 1: MOV OUT[1], IN[1] 2: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'lower control flow opcodes' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Final vertex program code: 0: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: DRM version: 2.29.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: Initial vertex program VERT DCL IN[0] DCL OUT[0], POSITION DCL OUT[1], GENERIC[19] DCL CONST[0..7] DCL TEMP[0], LOCAL DCL TEMP[1..2], ARRAY(1), LOCAL DCL TEMP[3..4], ARRAY(2), LOCAL DCL TEMP[5], LOCAL DCL TEMP[6..7], ARRAY(3), LOCAL DCL TEMP[8..9], ARRAY(4), LOCAL DCL TEMP[10..11], LOCAL IMM[0] FLT32 { 1.0000, 2.0000, 3.0000, 4.0000} IMM[1] FLT32 { 5.0000, 6.0000, 7.0000, 8.0000} IMM[2] FLT32 { 9.0000, 10.0000, 11.0000, 12.0000} IMM[3] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MUL TEMP[0], CONST[4], IN[0].xxxx 1: MAD TEMP[0], CONST[5], IN[0].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[6], IN[0].zzzz, TEMP[0] 3: MAD TEMP[0], CONST[7], IN[0].wwww, TEMP[0] 4: MOV TEMP[1], IMM[0].xyxx 5: MOV TEMP[2], IMM[0].zwzz 6: MOV TEMP[3], TEMP[1].xyyy 7: MOV TEMP[4], TEMP[2].xyyy 8: SEQ TEMP[5].xy, CONST[3].xxxx, IMM[0].xyyy 9: MOV TEMP[6], IMM[1].xyxx 10: MOV TEMP[7], IMM[1].zwzz 11: CMP TEMP[3], -TEMP[5].xxxx, TEMP[6].xyyy, TEMP[3].xyyy 12: CMP TEMP[4], -TEMP[5].xxxx, TEMP[7].xyyy, TEMP[4].xyyy 13: MOV TEMP[8], IMM[2].xyxx 14: MOV TEMP[9], IMM[2].zwzz 15: CMP TEMP[3], -TEMP[5].yyyy, TEMP[8].xyyy, TEMP[3].xyyy 16: CMP TEMP[4], -TEMP[5].yyyy, TEMP[9].xyyy, TEMP[4].xyyy 17: SEQ TEMP[10].x, CONST[2].xxxx, IMM[0].xxxx 18: CMP TEMP[5].xy, -TEMP[10].xxxx, TEMP[4].xyxx, TEMP[3].xyyy 19: SEQ TEMP[10].xy, CONST[1].xxxx, IMM[3].xyyy 20: CMP TEMP[11].x, -TEMP[10].xxxx, TEMP[5].xxxx, TEMP[11].xxxx 21: CMP TEMP[11].x, -TEMP[10].yyyy, TEMP[5].yyyy, TEMP[11].xxxx 22: SEQ TEMP[5].x, TEMP[11].xxxx, CONST[0].xxxx 23: IF TEMP[5].xxxx :0 24: MOV TEMP[5], IMM[3].xyxy 25: ELSE :0 26: MOV TEMP[5], IMM[3].yxxy 27: ENDIF 28: MOV OUT[1], TEMP[5] 29: MOV OUT[0], TEMP[0] 30: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].xyxx; 5: MOV temp[2], const[8].zwzz; 6: MOV temp[3], temp[1].xyyy; 7: MOV temp[4], temp[2].xyyy; 8: SEQ temp[5].xy, const[3].xxxx, const[8].xyyy; 9: MOV temp[6], const[9].xyxx; 10: MOV temp[7], const[9].zwzz; 11: CMP temp[3], -temp[5].xxxx, temp[6].xyyy, temp[3].xyyy; 12: CMP temp[4], -temp[5].xxxx, temp[7].xyyy, temp[4].xyyy; 13: MOV temp[8], const[10].xyxx; 14: MOV temp[9], const[10].zwzz; 15: CMP temp[3], -temp[5].yyyy, temp[8].xyyy, temp[3].xyyy; 16: CMP temp[4], -temp[5].yyyy, temp[9].xyyy, temp[4].xyyy; 17: SEQ temp[10].x, const[2].xxxx, const[8].xxxx; 18: CMP temp[5].xy, -temp[10].xxxx, temp[4].xyxx, temp[3].xyyy; 19: SEQ temp[10].xy, const[1].xxxx, temp[0].0111; 20: CMP temp[11].x, -temp[10].xxxx, temp[5].xxxx, temp[11].xxxx; 21: CMP temp[11].x, -temp[10].yyyy, temp[5].yyyy, temp[11].xxxx; 22: SEQ temp[5].x, temp[11].xxxx, const[0].xxxx; 23: IF temp[5].xxxx; 24: MOV temp[5], temp[0].0101; 25: ELSE; 26: MOV temp[5], temp[0].1001; 27: ENDIF; 28: MOV output[1], temp[5]; 29: MOV temp[12], temp[0]; 30: MOV output[0], temp[12]; 31: MOV output[2], temp[12]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].xyxx; 5: MOV temp[2], const[8].zwzz; 6: MOV temp[3], temp[1].xyyy; 7: MOV temp[4], temp[2].xyyy; 8: SEQ temp[5].xy, const[3].xxxx, const[8].xyyy; 9: MOV temp[6], const[9].xyxx; 10: MOV temp[7], const[9].zwzz; 11: CMP temp[3], -temp[5].xxxx, temp[6].xyyy, temp[3].xyyy; 12: CMP temp[4], -temp[5].xxxx, temp[7].xyyy, temp[4].xyyy; 13: MOV temp[8], const[10].xyxx; 14: MOV temp[9], const[10].zwzz; 15: CMP temp[3], -temp[5].yyyy, temp[8].xyyy, temp[3].xyyy; 16: CMP temp[4], -temp[5].yyyy, temp[9].xyyy, temp[4].xyyy; 17: SEQ temp[10].x, const[2].xxxx, const[8].xxxx; 18: CMP temp[5].xy, -temp[10].xxxx, temp[4].xyxx, temp[3].xyyy; 19: SEQ temp[10].xy, const[1].xxxx, temp[0].0111; 20: CMP temp[11].x, -temp[10].xxxx, temp[5].xxxx, temp[11].xxxx; 21: CMP temp[11].x, -temp[10].yyyy, temp[5].yyyy, temp[11].xxxx; 22: SEQ temp[5].x, temp[11].xxxx, const[0].xxxx; 23: IF temp[5].xxxx; 24: MOV temp[5], temp[0].0101; 25: ELSE; 26: MOV temp[5], temp[0].1001; 27: ENDIF; 28: MOV output[1], temp[5]; 29: MOV temp[12], temp[0]; 30: MOV output[0], temp[12]; 31: MOV output[2], temp[12]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].xyxx; 5: MOV temp[2], const[8].zwzz; 6: MOV temp[3], temp[1].xyyy; 7: MOV temp[4], temp[2].xyyy; 8: SEQ temp[5].xy, const[3].xxxx, const[8].xyyy; 9: MOV temp[6], const[9].xyxx; 10: MOV temp[7], const[9].zwzz; 11: SLT temp[13], -temp[5].xxxx, none.0000; 12: ADD temp[14], temp[6].xyyy, -temp[3].xyyy; 13: MAD temp[3], temp[13], temp[14], temp[3].xyyy; 14: SLT temp[15], -temp[5].xxxx, none.0000; 15: ADD temp[16], temp[7].xyyy, -temp[4].xyyy; 16: MAD temp[4], temp[15], temp[16], temp[4].xyyy; 17: MOV temp[8], const[10].xyxx; 18: MOV temp[9], const[10].zwzz; 19: SLT temp[17], -temp[5].yyyy, none.0000; 20: ADD temp[18], temp[8].xyyy, -temp[3].xyyy; 21: MAD temp[3], temp[17], temp[18], temp[3].xyyy; 22: SLT temp[19], -temp[5].yyyy, none.0000; 23: ADD temp[20], temp[9].xyyy, -temp[4].xyyy; 24: MAD temp[4], temp[19], temp[20], temp[4].xyyy; 25: SEQ temp[10].x, const[2].xxxx, const[8].xxxx; 26: SLT temp[5].xy, -temp[10].xxxx, none.0000; 27: ADD temp[21].xy, temp[4].xyxx, -temp[3].xyyy; 28: MAD temp[5].xy, temp[5], temp[21], temp[3].xyyy; 29: SEQ temp[10].xy, const[1].xxxx, temp[0].0111; 30: SLT temp[22].x, -temp[10].xxxx, none.0000; 31: ADD temp[23].x, temp[5].xxxx, -temp[11].xxxx; 32: MAD temp[11].x, temp[22], temp[23], temp[11].xxxx; 33: SLT temp[24].x, -temp[10].yyyy, none.0000; 34: ADD temp[25].x, temp[5].yyyy, -temp[11].xxxx; 35: MAD temp[11].x, temp[24], temp[25], temp[11].xxxx; 36: SEQ temp[5].x, temp[11].xxxx, const[0].xxxx; 37: IF temp[5].xxxx; 38: MOV temp[5], temp[0].0101; 39: ELSE; 40: MOV temp[5], temp[0].1001; 41: ENDIF; 42: MOV output[1], temp[5]; 43: MOV temp[12], temp[0]; 44: MOV output[0], temp[12]; 45: MOV output[2], temp[12]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1].xy, const[8].xy__; 5: MOV temp[2].xy, const[8].zw__; 6: MOV temp[3].xy, temp[1].xy__; 7: MOV temp[4].xy, temp[2].xy__; 8: SEQ temp[5].xy, const[3].xx__, const[8].xy__; 9: MOV temp[6].xy, const[9].xy__; 10: MOV temp[7].xy, const[9].zw__; 11: SLT temp[13].xy, -temp[5].xx__, none.00__; 12: ADD temp[14].xy, temp[6].xy__, -temp[3].xy__; 13: MAD temp[3].xy, temp[13].xy__, temp[14].xy__, temp[3].xy__; 14: SLT temp[15].xy, -temp[5].xx__, none.00__; 15: ADD temp[16].xy, temp[7].xy__, -temp[4].xy__; 16: MAD temp[4].xy, temp[15].xy__, temp[16].xy__, temp[4].xy__; 17: MOV temp[8].xy, const[10].xy__; 18: MOV temp[9].xy, const[10].zw__; 19: SLT temp[17].xy, -temp[5].yy__, none.00__; 20: ADD temp[18].xy, temp[8].xy__, -temp[3].xy__; 21: MAD temp[3].xy, temp[17].xy__, temp[18].xy__, temp[3].xy__; 22: SLT temp[19].xy, -temp[5].yy__, none.00__; 23: ADD temp[20].xy, temp[9].xy__, -temp[4].xy__; 24: MAD temp[4].xy, temp[19].xy__, temp[20].xy__, temp[4].xy__; 25: SEQ temp[10].x, const[2].x___, const[8].x___; 26: SLT temp[5].xy, -temp[10].xx__, none.00__; 27: ADD temp[21].xy, temp[4].xy__, -temp[3].xy__; 28: MAD temp[5].xy, temp[5].xy__, temp[21].xy__, temp[3].xy__; 29: SEQ temp[10].xy, const[1].xx__, temp[0].01__; 30: SLT temp[22].x, -temp[10].x___, none.0___; 31: ADD temp[23].x, temp[5].x___, -temp[11].x___; 32: MAD temp[11].x, temp[22].x___, temp[23].x___, temp[11].x___; 33: SLT temp[24].x, -temp[10].y___, none.0___; 34: ADD temp[25].x, temp[5].y___, -temp[11].x___; 35: MAD temp[11].x, temp[24].x___, temp[25].x___, temp[11].x___; 36: SEQ temp[5].x, temp[11].x___, const[0].x___; 37: IF temp[5].x___; 38: MOV temp[5], temp[0].0101; 39: ELSE; 40: MOV temp[5], temp[0].1001; 41: ENDIF; 42: MOV output[1], temp[5]; 43: MOV temp[12], temp[0]; 44: MOV output[0], temp[12]; 45: MOV output[2], temp[12]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: SEQ temp[5].xy, const[3].xx__, const[8].1y__; 5: SLT temp[13].xy, -temp[5].xx__, none.00__; 6: ADD temp[14].xy, const[9].xy__, -const[8].1y__; 7: MAD temp[3].xy, temp[13].xy__, temp[14].xy__, const[8].1y__; 8: SLT temp[15].xy, -temp[5].xx__, none.00__; 9: ADD temp[16].xy, const[9].zw__, -const[8].zw__; 10: MAD temp[4].xy, temp[15].xy__, temp[16].xy__, const[8].zw__; 11: SLT temp[17].xy, -temp[5].yy__, none.00__; 12: ADD temp[18].xy, const[10].xy__, -temp[3].xy__; 13: MAD temp[3].xy, temp[17].xy__, temp[18].xy__, temp[3].xy__; 14: SLT temp[19].xy, -temp[5].yy__, none.00__; 15: ADD temp[20].xy, const[10].zw__, -temp[4].xy__; 16: MAD temp[4].xy, temp[19].xy__, temp[20].xy__, temp[4].xy__; 17: SEQ temp[10].x, const[2].x___, none.1___; 18: SLT temp[5].xy, -temp[10].xx__, none.00__; 19: ADD temp[21].xy, temp[4].xy__, -temp[3].xy__; 20: MAD temp[5].xy, temp[5].xy__, temp[21].xy__, temp[3].xy__; 21: SEQ temp[10].xy, const[1].xx__, none.01__; 22: SLT temp[22].x, -temp[10].x___, none.0___; 23: ADD temp[23].x, temp[5].x___, -temp[11].x___; 24: MAD temp[11].x, temp[22].x___, temp[23].x___, temp[11].x___; 25: SLT temp[24].x, -temp[10].y___, none.0___; 26: ADD temp[25].x, temp[5].y___, -temp[11].x___; 27: MAD temp[11].x, temp[24].x___, temp[25].x___, temp[11].x___; 28: SEQ temp[5].x, temp[11].x___, const[0].x___; 29: IF temp[5].x___; 30: MOV temp[5], none.0101; 31: ELSE; 32: MOV temp[5], none.1001; 33: ENDIF; 34: MOV output[1], temp[5]; 35: MOV output[0], temp[0]; 36: MOV output[2], temp[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].1y__; 5: SEQ temp[5].xy, const[3].xx__, temp[1]; 6: SLT temp[13].xy, -temp[5].xx__, none.00__; 7: MOV temp[2], -const[8].1y__; 8: ADD temp[14].xy, const[9].xy__, temp[2]; 9: MAD temp[3].xy, temp[13].xy__, temp[14].xy__, const[8].1y__; 10: SLT temp[15].xy, -temp[5].xx__, none.00__; 11: MOV temp[6], -const[8].zw__; 12: ADD temp[16].xy, const[9].zw__, temp[6]; 13: MAD temp[4].xy, temp[15].xy__, temp[16].xy__, const[8].zw__; 14: SLT temp[17].xy, -temp[5].yy__, none.00__; 15: ADD temp[18].xy, const[10].xy__, -temp[3].xy__; 16: MAD temp[3].xy, temp[17].xy__, temp[18].xy__, temp[3].xy__; 17: SLT temp[19].xy, -temp[5].yy__, none.00__; 18: ADD temp[20].xy, const[10].zw__, -temp[4].xy__; 19: MAD temp[4].xy, temp[19].xy__, temp[20].xy__, temp[4].xy__; 20: SEQ temp[10].x, const[2].x___, none.1___; 21: SLT temp[5].xy, -temp[10].xx__, none.00__; 22: ADD temp[21].xy, temp[4].xy__, -temp[3].xy__; 23: MAD temp[5].xy, temp[5].xy__, temp[21].xy__, temp[3].xy__; 24: SEQ temp[10].xy, const[1].xx__, none.01__; 25: SLT temp[22].x, -temp[10].x___, none.0___; 26: ADD temp[23].x, temp[5].x___, -temp[11].x___; 27: MAD temp[11].x, temp[22].x___, temp[23].x___, temp[11].x___; 28: SLT temp[24].x, -temp[10].y___, none.0___; 29: ADD temp[25].x, temp[5].y___, -temp[11].x___; 30: MAD temp[11].x, temp[24].x___, temp[25].x___, temp[11].x___; 31: SEQ temp[5].x, temp[11].x___, const[0].x___; 32: IF temp[5].x___; 33: MOV temp[5], none.0101; 34: ELSE; 35: MOV temp[5], none.1001; 36: ENDIF; 37: MOV output[1], temp[5]; 38: MOV output[0], temp[0]; 39: MOV output[2], temp[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].1y__; 5: SEQ temp[1].xy, const[3].xx__, temp[1]; 6: SLT temp[2].xy, -temp[1].xx__, none.00__; 7: MOV temp[3], -const[8].1y__; 8: ADD temp[3].xy, const[9].xy__, temp[3]; 9: MAD temp[2].xy, temp[2].xy__, temp[3].xy__, const[8].1y__; 10: SLT temp[3].xy, -temp[1].xx__, none.00__; 11: MOV temp[4], -const[8].zw__; 12: ADD temp[4].xy, const[9].zw__, temp[4]; 13: MAD temp[3].xy, temp[3].xy__, temp[4].xy__, const[8].zw__; 14: SLT temp[4].xy, -temp[1].yy__, none.00__; 15: ADD temp[5].xy, const[10].xy__, -temp[2].xy__; 16: MAD temp[2].xy, temp[4].xy__, temp[5].xy__, temp[2].xy__; 17: SLT temp[4].xy, -temp[1].yy__, none.00__; 18: ADD temp[5].xy, const[10].zw__, -temp[3].xy__; 19: MAD temp[3].xy, temp[4].xy__, temp[5].xy__, temp[3].xy__; 20: SEQ temp[4].x, const[2].x___, none.1___; 21: SLT temp[1].xy, -temp[4].xx__, none.00__; 22: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 23: MAD temp[1].xy, temp[1].xy__, temp[3].xy__, temp[2].xy__; 24: SEQ temp[4].xy, const[1].xx__, none.01__; 25: SLT temp[2].x, -temp[4].x___, none.0___; 26: ADD temp[3].x, temp[1].x___, -temp[0].x___; 27: MAD temp[2].x, temp[2].x___, temp[3].x___, temp[0].x___; 28: SLT temp[3].x, -temp[4].y___, none.0___; 29: ADD temp[4].x, temp[1].y___, -temp[2].x___; 30: MAD temp[2].x, temp[3].x___, temp[4].x___, temp[2].x___; 31: SEQ temp[1].x, temp[2].x___, const[0].x___; 32: IF temp[1].x___; 33: MOV temp[1], none.0101; 34: ELSE; 35: MOV temp[1], none.1001; 36: ENDIF; 37: MOV output[1], temp[1]; 38: MOV output[0], temp[0]; 39: MOV output[2], temp[0]; CONST[8] = { 1.0000 2.0000 3.0000 4.0000 } CONST[9] = { 5.0000 6.0000 7.0000 8.0000 } CONST[10] = { 9.0000 10.0000 11.0000 12.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].1y__; 5: SEQ temp[1].xy, const[3].xx__, temp[1]; 6: SLT temp[2].xy, -temp[1].xx__, none.00__; 7: MOV temp[3], -const[8].1y__; 8: ADD temp[3].xy, const[9].xy__, temp[3]; 9: MAD temp[2].xy, temp[2].xy__, temp[3].xy__, const[8].1y__; 10: SLT temp[3].xy, -temp[1].xx__, none.00__; 11: MOV temp[4], -const[8].zw__; 12: ADD temp[4].xy, const[9].zw__, temp[4]; 13: MAD temp[3].xy, temp[3].xy__, temp[4].xy__, const[8].zw__; 14: SLT temp[4].xy, -temp[1].yy__, none.00__; 15: ADD temp[5].xy, const[10].xy__, -temp[2].xy__; 16: MAD temp[2].xy, temp[4].xy__, temp[5].xy__, temp[2].xy__; 17: SLT temp[4].xy, -temp[1].yy__, none.00__; 18: ADD temp[5].xy, const[10].zw__, -temp[3].xy__; 19: MAD temp[3].xy, temp[4].xy__, temp[5].xy__, temp[3].xy__; 20: SEQ temp[4].x, const[2].x___, none.1___; 21: SLT temp[1].xy, -temp[4].xx__, none.00__; 22: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 23: MAD temp[1].xy, temp[1].xy__, temp[3].xy__, temp[2].xy__; 24: SEQ temp[4].xy, const[1].xx__, none.01__; 25: SLT temp[2].x, -temp[4].x___, none.0___; 26: ADD temp[3].x, temp[1].x___, -temp[0].x___; 27: MAD temp[2].x, temp[2].x___, temp[3].x___, temp[0].x___; 28: SLT temp[3].x, -temp[4].y___, none.0___; 29: ADD temp[4].x, temp[1].y___, -temp[2].x___; 30: MAD temp[2].x, temp[3].x___, temp[4].x___, temp[2].x___; 31: SEQ temp[1].x, temp[2].x___, const[0].x___; 32: IF temp[1].x___; 33: MOV temp[1], none.0101; 34: ELSE; 35: MOV temp[1], none.1001; 36: ENDIF; 37: MOV output[1], temp[1]; 38: MOV output[0], temp[0]; 39: MOV output[2], temp[0]; Vertex Program: after 'lower control flow opcodes' # Radeon Compiler Program 0: MUL temp[0], const[4], input[0].xxxx; 1: MAD temp[0], const[5], input[0].yyyy, temp[0]; 2: MAD temp[0], const[6], input[0].zzzz, temp[0]; 3: MAD temp[0], const[7], input[0].wwww, temp[0]; 4: MOV temp[1], const[8].1y__; 5: SEQ temp[1].xy, const[3].xx__, temp[1]; 6: SLT temp[2].xy, -temp[1].xx__, none.00__; 7: MOV temp[3], -const[8].1y__; 8: ADD temp[3].xy, const[9].xy__, temp[3]; 9: MAD temp[2].xy, temp[2].xy__, temp[3].xy__, const[8].1y__; 10: SLT temp[3].xy, -temp[1].xx__, none.00__; 11: MOV temp[4], -const[8].zw__; 12: ADD temp[4].xy, const[9].zw__, temp[4]; 13: MAD temp[3].xy, temp[3].xy__, temp[4].xy__, const[8].zw__; 14: SLT temp[4].xy, -temp[1].yy__, none.00__; 15: ADD temp[5].xy, const[10].xy__, -temp[2].xy__; 16: MAD temp[2].xy, temp[4].xy__, temp[5].xy__, temp[2].xy__; 17: SLT temp[4].xy, -temp[1].yy__, none.00__; 18: ADD temp[5].xy, const[10].zw__, -temp[3].xy__; 19: MAD temp[3].xy, temp[4].xy__, temp[5].xy__, temp[3].xy__; 20: SEQ temp[4].x, const[2].x___, none.1___; 21: SLT temp[1].xy, -temp[4].xx__, none.00__; 22: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 23: MAD temp[1].xy, temp[1].xy__, temp[3].xy__, temp[2].xy__; 24: SEQ temp[4].xy, const[1].xx__, none.01__; 25: SLT temp[2].x, -temp[4].x___, none.0___; 26: ADD temp[3].x, temp[1].x___, -temp[0].x___; 27: MAD temp[2].x, temp[2].x___, temp[3].x___, temp[0].x___; 28: SLT temp[3].x, -temp[4].y___, none.0___; 29: ADD temp[4].x, temp[1].y___, -temp[2].x___; 30: MAD temp[2].x, temp[3].x___, temp[4].x___, temp[2].x___; 31: SEQ temp[1].x, temp[2].x___, const[0].x___; 32: ME_PRED_SNEQ temp[6].w, temp[1].x___; 33: MOV temp[1], none.0101; PRED_SET 34: ME_PRED_SET_INV temp[6].w, temp[6].___w; 35: MOV temp[1], none.1001; PRED_SET 36: ME_PRED_SET_POP temp[6].w, temp[6].___w; 37: MOV output[1], temp[1]; 38: MOV output[0], temp[0]; 39: MOV output[2], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10082 reg: 4c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d100a2 reg: 5c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d100c2 reg: 6c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 3: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d100e2 reg: 7c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f02003 dst: 1t op: VE_ADD src0: 0x01f9a102 reg: 8c swiz: 1/ Y/ U/ U src1: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 5: op: 0x0030201b dst: 1t op: VE_SET_EQUAL src0: 0x01f80062 reg: 3c swiz: X/ X/ U/ U src1: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 6: op: 0x0030400a dst: 2t op: VE_SET_LESS_THAN src0: 0x1ff80020 reg: 1t swiz: -X/-X/-U/-U src1: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 7: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x1ff9a102 reg: 8c swiz: -1/-Y/-U/-U src1: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 8: op: 0x00306003 dst: 3t op: VE_ADD src0: 0x01f90122 reg: 9c swiz: X/ Y/ U/ U src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 9: op: 0x00304004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01f9a102 reg: 8c swiz: 1/ Y/ U/ U 10: op: 0x0030600a dst: 3t op: VE_SET_LESS_THAN src0: 0x1ff80020 reg: 1t swiz: -X/-X/-U/-U src1: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 11: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x1ffb4102 reg: 8c swiz: -Z/-W/-U/-U src1: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 12: op: 0x00308003 dst: 4t op: VE_ADD src0: 0x01fb4122 reg: 9c swiz: Z/ W/ U/ U src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 13: op: 0x00306004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src2: 0x01fb4102 reg: 8c swiz: Z/ W/ U/ U 14: op: 0x0030800a dst: 4t op: VE_SET_LESS_THAN src0: 0x1ff92020 reg: 1t swiz: -Y/-Y/-U/-U src1: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 15: op: 0x0030a003 dst: 5t op: VE_ADD src0: 0x01f90142 reg: 10c swiz: X/ Y/ U/ U src1: 0x1ff90040 reg: 2t swiz: -X/-Y/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 16: op: 0x00304080 dst: 2t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U 17: op: 0x0030800a dst: 4t op: VE_SET_LESS_THAN src0: 0x1ff92020 reg: 1t swiz: -Y/-Y/-U/-U src1: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 18: op: 0x0030a003 dst: 5t op: VE_ADD src0: 0x01fb4142 reg: 10c swiz: Z/ W/ U/ U src1: 0x1ff90060 reg: 3t swiz: -X/-Y/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x00306080 dst: 3t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U 20: op: 0x0010801b dst: 4t op: VE_SET_EQUAL src0: 0x01ff0042 reg: 2c swiz: X/ U/ U/ U src1: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x0030200a dst: 1t op: VE_SET_LESS_THAN src0: 0x1ff80080 reg: 4t swiz: -X/-X/-U/-U src1: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00306003 dst: 3t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x1ff90040 reg: 2t swiz: -X/-Y/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 23: op: 0x00302080 dst: 1t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U 24: op: 0x0030801b dst: 4t op: VE_SET_EQUAL src0: 0x01f80022 reg: 1c swiz: X/ X/ U/ U src1: 0x01fd8000 reg: 0t swiz: 0/ 1/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 25: op: 0x0010400a dst: 2t op: VE_SET_LESS_THAN src0: 0x1fff0080 reg: 4t swiz: -X/-U/-U/-U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 26: op: 0x00106003 dst: 3t op: VE_ADD src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x1fff0000 reg: 0t swiz: -X/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 27: op: 0x00104080 dst: 2t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0060 reg: 3t swiz: X/ U/ U/ U src2: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U 28: op: 0x0010600a dst: 3t op: VE_SET_LESS_THAN src0: 0x1fff2080 reg: 4t swiz: -Y/-U/-U/-U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 29: op: 0x00108003 dst: 4t op: VE_ADD src0: 0x01ff2020 reg: 1t swiz: Y/ U/ U/ U src1: 0x1fff0040 reg: 2t swiz: -X/-U/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x00104080 dst: 2t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff0060 reg: 3t swiz: X/ U/ U/ U src1: 0x01ff0080 reg: 4t swiz: X/ U/ U/ U src2: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U 31: op: 0x0010201b dst: 1t op: VE_SET_EQUAL src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0002 reg: 0c swiz: X/ U/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 32: op: 0x0080c058 dst: 6t op: ME_PRED_SET_NEQ src0: 0x00000020 reg: 1t swiz: X/ X/ X/ X src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 33: op: 0x0cf02003 dst: 1t op: PRED 1 VE_ADD src0: 0x01658000 reg: 0t swiz: 0/ 1/ 0/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 34: op: 0x0080c05a dst: 6t op: ME_PRED_SET_INV src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x0cf02003 dst: 1t op: PRED 1 VE_ADD src0: 0x0164a000 reg: 0t swiz: 1/ 0/ 0/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 36: op: 0x0080c05b dst: 6t op: ME_PRED_SET_POP src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 37: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 38: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 39: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[19], PERSPECTIVE DCL OUT[0], COLOR 0: MOV_SAT OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program fallback: no matching format for GL_RGB, GL_FLOAT FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 Probe at (10,10) Expected: 0.000000 1.000000 0.000000 Observed: 0.450980 0.549020 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (10,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (25,10) Expected: 0.000000 1.000000 0.000000 Observed: 0.450980 0.549020 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (25,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (50,10) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (50,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (65,10) Expected: 0.000000 1.000000 0.000000 Observed: 0.549020 0.450980 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (65,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (90,10) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (90,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (105,10) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 fallback: no matching format for GL_RGB, GL_FLOAT Probe at (105,25) Expected: 0.000000 1.000000 0.000000 Observed: 1.000000 0.000000 0.000000 PIGLIT: {'result': 'fail' }