Fragment Program: Initial program: # Fragment Program/Shader 35 0: ADD TEMP[12].xy, INPUT[4], STATE[0]; 1: ADD TEMP[11].xy, INPUT[4], STATE[1]; 2: ADD TEMP[10].xy, INPUT[4], STATE[2]; 3: ADD TEMP[9].xy, INPUT[4], STATE[3]; 4: ADD TEMP[8].xy, INPUT[4], STATE[4]; 5: ADD TEMP[7].xy, INPUT[4], STATE[5]; 6: ADD TEMP[6].xy, INPUT[4], STATE[5].-x-y-z-w; 7: ADD TEMP[5].xy, INPUT[4], STATE[4].-x-y-z-w; 8: ADD TEMP[4].xy, INPUT[4], STATE[3].-x-y-z-w; 9: ADD TEMP[3].xy, INPUT[4], STATE[2].-x-y-z-w; 10: TEX TEMP[13], TEMP[12], texture[0], 2D; 11: TEX TEMP[12], TEMP[11], texture[0], 2D; 12: TEX TEMP[11], TEMP[10], texture[0], 2D; 13: TEX TEMP[10], TEMP[9], texture[0], 2D; 14: TEX TEMP[9], TEMP[8], texture[0], 2D; 15: TEX TEMP[8], TEMP[7], texture[0], 2D; 16: TEX TEMP[7], INPUT[4], texture[0], 2D; 17: TEX TEMP[6], TEMP[6], texture[0], 2D; 18: TEX TEMP[5], TEMP[5], texture[0], 2D; 19: TEX TEMP[4], TEMP[4], texture[0], 2D; 20: TEX TEMP[3], TEMP[3], texture[0], 2D; 21: MUL TEMP[13].xyz, TEMP[13], STATE[1].zzzz; 22: MAD TEMP[12].xyz, TEMP[12], STATE[1].wwww, TEMP[13]; 23: MAD TEMP[11].xyz, TEMP[11], STATE[0].zzzz, TEMP[12]; 24: MAD TEMP[10].xyz, TEMP[10], STATE[0].wwww, TEMP[11]; 25: MAD TEMP[9].xyz, TEMP[9], STATE[2].zzzz, TEMP[10]; 26: MAD TEMP[8].xyz, TEMP[8], STATE[2].wwww, TEMP[9]; 27: MAD TEMP[7].xyz, TEMP[7], STATE[3].zzzz, TEMP[8]; 28: MAD TEMP[6].xyz, TEMP[6], STATE[2].wwww, TEMP[7]; 29: MAD TEMP[5].xyz, TEMP[5], STATE[2].zzzz, TEMP[6]; 30: MAD TEMP[4].xyz, TEMP[4], STATE[0].wwww, TEMP[5]; 31: MAD TEMP[5].xyz, TEMP[3], STATE[0].zzzz, TEMP[4]; 32: ADD TEMP[4].xy, INPUT[4], STATE[0].-x-y-z-w; 33: ADD TEMP[3].xy, INPUT[4], STATE[1].-x-y-z-w; 34: TEX TEMP[4], TEMP[4], texture[0], 2D; 35: TEX TEMP[3], TEMP[3], texture[0], 2D; 36: MAD TEMP[4].xyz, TEMP[4], STATE[1].zzzz, TEMP[5]; 37: MAD TEMP[3].xyz, TEMP[3], STATE[1].wwww, TEMP[4]; 38: MOV TEMP[3].w, STATE[3].wwww; 39: MOV OUTPUT[1], TEMP[3]; 40: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[12].xy, input[4], const[0]; 1: ADD temp[11].xy, input[4], const[1]; 2: ADD temp[10].xy, input[4], const[2]; 3: ADD temp[9].xy, input[4], const[3]; 4: ADD temp[8].xy, input[4], const[4]; 5: ADD temp[7].xy, input[4], const[5]; 6: ADD temp[6].xy, input[4], -const[5]; 7: ADD temp[5].xy, input[4], -const[4]; 8: ADD temp[4].xy, input[4], -const[3]; 9: ADD temp[3].xy, input[4], -const[2]; 10: TEX temp[13], temp[12], 2D[0]; 11: TEX temp[12], temp[11], 2D[0]; 12: TEX temp[11], temp[10], 2D[0]; 13: TEX temp[10], temp[9], 2D[0]; 14: TEX temp[9], temp[8], 2D[0]; 15: TEX temp[8], temp[7], 2D[0]; 16: TEX temp[7], input[4], 2D[0]; 17: TEX temp[6], temp[6], 2D[0]; 18: TEX temp[5], temp[5], 2D[0]; 19: TEX temp[4], temp[4], 2D[0]; 20: TEX temp[3], temp[3], 2D[0]; 21: MUL temp[13].xyz, temp[13], const[1].zzzz; 22: MAD temp[12].xyz, temp[12], const[1].wwww, temp[13]; 23: MAD temp[11].xyz, temp[11], const[0].zzzz, temp[12]; 24: MAD temp[10].xyz, temp[10], const[0].wwww, temp[11]; 25: MAD temp[9].xyz, temp[9], const[2].zzzz, temp[10]; 26: MAD temp[8].xyz, temp[8], const[2].wwww, temp[9]; 27: MAD temp[7].xyz, temp[7], const[3].zzzz, temp[8]; 28: MAD temp[6].xyz, temp[6], const[2].wwww, temp[7]; 29: MAD temp[5].xyz, temp[5], const[2].zzzz, temp[6]; 30: MAD temp[4].xyz, temp[4], const[0].wwww, temp[5]; 31: MAD temp[5].xyz, temp[3], const[0].zzzz, temp[4]; 32: ADD temp[4].xy, input[4], -const[0]; 33: ADD temp[3].xy, input[4], -const[1]; 34: TEX temp[4], temp[4], 2D[0]; 35: TEX temp[3], temp[3], 2D[0]; 36: MAD temp[4].xyz, temp[4], const[1].zzzz, temp[5]; 37: MAD temp[3].xyz, temp[3], const[1].wwww, temp[4]; 38: MOV temp[3].w, const[3].wwww; 39: MOV output[1], temp[3]; Fragment Program: after emulate branches # Radeon Compiler Program 0: ADD temp[12].xy, input[4], const[0]; 1: ADD temp[11].xy, input[4], const[1]; 2: ADD temp[10].xy, input[4], const[2]; 3: ADD temp[9].xy, input[4], const[3]; 4: ADD temp[8].xy, input[4], const[4]; 5: ADD temp[7].xy, input[4], const[5]; 6: ADD temp[6].xy, input[4], -const[5]; 7: ADD temp[5].xy, input[4], -const[4]; 8: ADD temp[4].xy, input[4], -const[3]; 9: ADD temp[3].xy, input[4], -const[2]; 10: TEX temp[13], temp[12], 2D[0]; 11: TEX temp[12], temp[11], 2D[0]; 12: TEX temp[11], temp[10], 2D[0]; 13: TEX temp[10], temp[9], 2D[0]; 14: TEX temp[9], temp[8], 2D[0]; 15: TEX temp[8], temp[7], 2D[0]; 16: TEX temp[7], input[4], 2D[0]; 17: TEX temp[6], temp[6], 2D[0]; 18: TEX temp[5], temp[5], 2D[0]; 19: TEX temp[4], temp[4], 2D[0]; 20: TEX temp[3], temp[3], 2D[0]; 21: MUL temp[13].xyz, temp[13], const[1].zzzz; 22: MAD temp[12].xyz, temp[12], const[1].wwww, temp[13]; 23: MAD temp[11].xyz, temp[11], const[0].zzzz, temp[12]; 24: MAD temp[10].xyz, temp[10], const[0].wwww, temp[11]; 25: MAD temp[9].xyz, temp[9], const[2].zzzz, temp[10]; 26: MAD temp[8].xyz, temp[8], const[2].wwww, temp[9]; 27: MAD temp[7].xyz, temp[7], const[3].zzzz, temp[8]; 28: MAD temp[6].xyz, temp[6], const[2].wwww, temp[7]; 29: MAD temp[5].xyz, temp[5], const[2].zzzz, temp[6]; 30: MAD temp[4].xyz, temp[4], const[0].wwww, temp[5]; 31: MAD temp[5].xyz, temp[3], const[0].zzzz, temp[4]; 32: ADD temp[4].xy, input[4], -const[0]; 33: ADD temp[3].xy, input[4], -const[1]; 34: TEX temp[4], temp[4], 2D[0]; 35: TEX temp[3], temp[3], 2D[0]; 36: MAD temp[4].xyz, temp[4], const[1].zzzz, temp[5]; 37: MAD temp[3].xyz, temp[3], const[1].wwww, temp[4]; 38: MOV temp[3].w, const[3].wwww; 39: MOV output[1], temp[3]; Fragment Program: after native rewrite part 1 # Radeon Compiler Program 0: ADD temp[12].xy, input[4], const[0]; 1: ADD temp[11].xy, input[4], const[1]; 2: ADD temp[10].xy, input[4], const[2]; 3: ADD temp[9].xy, input[4], const[3]; 4: ADD temp[8].xy, input[4], const[4]; 5: ADD temp[7].xy, input[4], const[5]; 6: ADD temp[6].xy, input[4], -const[5]; 7: ADD temp[5].xy, input[4], -const[4]; 8: ADD temp[4].xy, input[4], -const[3]; 9: ADD temp[3].xy, input[4], -const[2]; 10: TEX temp[13], temp[12], 2D[0]; 11: TEX temp[12], temp[11], 2D[0]; 12: TEX temp[11], temp[10], 2D[0]; 13: TEX temp[10], temp[9], 2D[0]; 14: TEX temp[9], temp[8], 2D[0]; 15: TEX temp[8], temp[7], 2D[0]; 16: TEX temp[7], input[4], 2D[0]; 17: TEX temp[6], temp[6], 2D[0]; 18: TEX temp[5], temp[5], 2D[0]; 19: TEX temp[4], temp[4], 2D[0]; 20: TEX temp[3], temp[3], 2D[0]; 21: MUL temp[13].xyz, temp[13], const[1].zzzz; 22: MAD temp[12].xyz, temp[12], const[1].wwww, temp[13]; 23: MAD temp[11].xyz, temp[11], const[0].zzzz, temp[12]; 24: MAD temp[10].xyz, temp[10], const[0].wwww, temp[11]; 25: MAD temp[9].xyz, temp[9], const[2].zzzz, temp[10]; 26: MAD temp[8].xyz, temp[8], const[2].wwww, temp[9]; 27: MAD temp[7].xyz, temp[7], const[3].zzzz, temp[8]; 28: MAD temp[6].xyz, temp[6], const[2].wwww, temp[7]; 29: MAD temp[5].xyz, temp[5], const[2].zzzz, temp[6]; 30: MAD temp[4].xyz, temp[4], const[0].wwww, temp[5]; 31: MAD temp[5].xyz, temp[3], const[0].zzzz, temp[4]; 32: ADD temp[4].xy, input[4], -const[0]; 33: ADD temp[3].xy, input[4], -const[1]; 34: TEX temp[4], temp[4], 2D[0]; 35: TEX temp[3], temp[3], 2D[0]; 36: MAD temp[4].xyz, temp[4], const[1].zzzz, temp[5]; 37: MAD temp[3].xyz, temp[3], const[1].wwww, temp[4]; 38: MOV temp[3].w, const[3].wwww; 39: MOV output[1], temp[3]; Fragment Program: after native rewrite part 2 # Radeon Compiler Program 0: ADD temp[12].xy, input[4], const[0]; 1: ADD temp[11].xy, input[4], const[1]; 2: ADD temp[10].xy, input[4], const[2]; 3: ADD temp[9].xy, input[4], const[3]; 4: ADD temp[8].xy, input[4], const[4]; 5: ADD temp[7].xy, input[4], const[5]; 6: ADD temp[6].xy, input[4], -const[5]; 7: ADD temp[5].xy, input[4], -const[4]; 8: ADD temp[4].xy, input[4], -const[3]; 9: ADD temp[3].xy, input[4], -const[2]; 10: TEX temp[13], temp[12], 2D[0]; 11: TEX temp[12], temp[11], 2D[0]; 12: TEX temp[11], temp[10], 2D[0]; 13: TEX temp[10], temp[9], 2D[0]; 14: TEX temp[9], temp[8], 2D[0]; 15: TEX temp[8], temp[7], 2D[0]; 16: TEX temp[7], input[4], 2D[0]; 17: TEX temp[6], temp[6], 2D[0]; 18: TEX temp[5], temp[5], 2D[0]; 19: TEX temp[4], temp[4], 2D[0]; 20: TEX temp[3], temp[3], 2D[0]; 21: MUL temp[13].xyz, temp[13], const[1].zzzz; 22: MAD temp[12].xyz, temp[12], const[1].wwww, temp[13]; 23: MAD temp[11].xyz, temp[11], const[0].zzzz, temp[12]; 24: MAD temp[10].xyz, temp[10], const[0].wwww, temp[11]; 25: MAD temp[9].xyz, temp[9], const[2].zzzz, temp[10]; 26: MAD temp[8].xyz, temp[8], const[2].wwww, temp[9]; 27: MAD temp[7].xyz, temp[7], const[3].zzzz, temp[8]; 28: MAD temp[6].xyz, temp[6], const[2].wwww, temp[7]; 29: MAD temp[5].xyz, temp[5], const[2].zzzz, temp[6]; 30: MAD temp[4].xyz, temp[4], const[0].wwww, temp[5]; 31: MAD temp[5].xyz, temp[3], const[0].zzzz, temp[4]; 32: ADD temp[4].xy, input[4], -const[0]; 33: ADD temp[3].xy, input[4], -const[1]; 34: TEX temp[4], temp[4], 2D[0]; 35: TEX temp[3], temp[3], 2D[0]; 36: MAD temp[4].xyz, temp[4], const[1].zzzz, temp[5]; 37: MAD temp[3].xyz, temp[3], const[1].wwww, temp[4]; 38: MOV temp[3].w, const[3].wwww; 39: MOV output[1], temp[3]; Fragment Program: after deadcode # Radeon Compiler Program 0: ADD temp[12].xy, input[4].xy__, const[0].xy__; 1: ADD temp[11].xy, input[4].xy__, const[1].xy__; 2: ADD temp[10].xy, input[4].xy__, const[2].xy__; 3: ADD temp[9].xy, input[4].xy__, const[3].xy__; 4: ADD temp[8].xy, input[4].xy__, const[4].xy__; 5: ADD temp[7].xy, input[4].xy__, const[5].xy__; 6: ADD temp[6].xy, input[4].xy__, -const[5].xy__; 7: ADD temp[5].xy, input[4].xy__, -const[4].xy__; 8: ADD temp[4].xy, input[4].xy__, -const[3].xy__; 9: ADD temp[3].xy, input[4].xy__, -const[2].xy__; 10: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 11: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 12: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 13: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 14: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 15: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 16: TEX temp[7].xyz, input[4].xy__, 2D[0]; 17: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 18: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 19: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 20: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 21: MUL temp[13].xyz, temp[13].xyz_, const[1].zzz_; 22: MAD temp[12].xyz, temp[12].xyz_, const[1].www_, temp[13].xyz_; 23: MAD temp[11].xyz, temp[11].xyz_, const[0].zzz_, temp[12].xyz_; 24: MAD temp[10].xyz, temp[10].xyz_, const[0].www_, temp[11].xyz_; 25: MAD temp[9].xyz, temp[9].xyz_, const[2].zzz_, temp[10].xyz_; 26: MAD temp[8].xyz, temp[8].xyz_, const[2].www_, temp[9].xyz_; 27: MAD temp[7].xyz, temp[7].xyz_, const[3].zzz_, temp[8].xyz_; 28: MAD temp[6].xyz, temp[6].xyz_, const[2].www_, temp[7].xyz_; 29: MAD temp[5].xyz, temp[5].xyz_, const[2].zzz_, temp[6].xyz_; 30: MAD temp[4].xyz, temp[4].xyz_, const[0].www_, temp[5].xyz_; 31: MAD temp[5].xyz, temp[3].xyz_, const[0].zzz_, temp[4].xyz_; 32: ADD temp[4].xy, input[4].xy__, -const[0].xy__; 33: ADD temp[3].xy, input[4].xy__, -const[1].xy__; 34: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 35: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 36: MAD temp[4].xyz, temp[4].xyz_, const[1].zzz_, temp[5].xyz_; 37: MAD temp[3].xyz, temp[3].xyz_, const[1].www_, temp[4].xyz_; 38: MOV temp[3].w, const[3].___w; 39: MOV output[1], temp[3]; Fragment Program: after dataflow optimize # Radeon Compiler Program 0: ADD temp[12].xy, input[4].xy__, const[0].xy__; 1: ADD temp[11].xy, input[4].xy__, const[1].xy__; 2: ADD temp[10].xy, input[4].xy__, const[2].xy__; 3: ADD temp[9].xy, input[4].xy__, const[3].xy__; 4: ADD temp[8].xy, input[4].xy__, const[4].xy__; 5: ADD temp[7].xy, input[4].xy__, const[5].xy__; 6: ADD temp[6].xy, input[4].xy__, -const[5].xy__; 7: ADD temp[5].xy, input[4].xy__, -const[4].xy__; 8: ADD temp[4].xy, input[4].xy__, -const[3].xy__; 9: ADD temp[3].xy, input[4].xy__, -const[2].xy__; 10: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 11: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 12: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 13: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 14: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 15: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 16: TEX temp[7].xyz, input[4].xy__, 2D[0]; 17: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 18: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 19: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 20: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 21: MUL temp[13].xyz, temp[13].xyz_, const[1].zzz_; 22: MAD temp[12].xyz, temp[12].xyz_, const[1].www_, temp[13].xyz_; 23: MAD temp[11].xyz, temp[11].xyz_, const[0].zzz_, temp[12].xyz_; 24: MAD temp[10].xyz, temp[10].xyz_, const[0].www_, temp[11].xyz_; 25: MAD temp[9].xyz, temp[9].xyz_, const[2].zzz_, temp[10].xyz_; 26: MAD temp[8].xyz, temp[8].xyz_, const[2].www_, temp[9].xyz_; 27: MAD temp[7].xyz, temp[7].xyz_, const[3].zzz_, temp[8].xyz_; 28: MAD temp[6].xyz, temp[6].xyz_, const[2].www_, temp[7].xyz_; 29: MAD temp[5].xyz, temp[5].xyz_, const[2].zzz_, temp[6].xyz_; 30: MAD temp[4].xyz, temp[4].xyz_, const[0].www_, temp[5].xyz_; 31: MAD temp[5].xyz, temp[3].xyz_, const[0].zzz_, temp[4].xyz_; 32: ADD temp[4].xy, input[4].xy__, -const[0].xy__; 33: ADD temp[3].xy, input[4].xy__, -const[1].xy__; 34: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 35: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 36: MAD temp[4].xyz, temp[4].xyz_, const[1].zzz_, temp[5].xyz_; 37: MAD temp[3].xyz, temp[3].xyz_, const[1].www_, temp[4].xyz_; 38: MOV temp[3].w, const[3].___w; 39: MOV output[1], temp[3]; Fragment Program: after dataflow passes # Radeon Compiler Program 0: ADD temp[12].xy, input[4].xy__, const[0].xy__; 1: ADD temp[11].xy, input[4].xy__, const[1].xy__; 2: ADD temp[10].xy, input[4].xy__, const[2].xy__; 3: ADD temp[9].xy, input[4].xy__, const[3].xy__; 4: ADD temp[8].xy, input[4].xy__, const[4].xy__; 5: ADD temp[7].xy, input[4].xy__, const[5].xy__; 6: ADD temp[6].xy, input[4].xy__, -const[5].xy__; 7: ADD temp[5].xy, input[4].xy__, -const[4].xy__; 8: ADD temp[4].xy, input[4].xy__, -const[3].xy__; 9: ADD temp[3].xy, input[4].xy__, -const[2].xy__; 10: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 11: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 12: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 13: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 14: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 15: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 16: TEX temp[7].xyz, input[4].xy__, 2D[0]; 17: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 18: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 19: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 20: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 21: MUL temp[13].xyz, temp[13].xyz_, const[1].zzz_; 22: MAD temp[12].xyz, temp[12].xyz_, const[1].www_, temp[13].xyz_; 23: MAD temp[11].xyz, temp[11].xyz_, const[0].zzz_, temp[12].xyz_; 24: MAD temp[10].xyz, temp[10].xyz_, const[0].www_, temp[11].xyz_; 25: MAD temp[9].xyz, temp[9].xyz_, const[2].zzz_, temp[10].xyz_; 26: MAD temp[8].xyz, temp[8].xyz_, const[2].www_, temp[9].xyz_; 27: MAD temp[7].xyz, temp[7].xyz_, const[3].zzz_, temp[8].xyz_; 28: MAD temp[6].xyz, temp[6].xyz_, const[2].www_, temp[7].xyz_; 29: MAD temp[5].xyz, temp[5].xyz_, const[2].zzz_, temp[6].xyz_; 30: MAD temp[4].xyz, temp[4].xyz_, const[0].www_, temp[5].xyz_; 31: MAD temp[5].xyz, temp[3].xyz_, const[0].zzz_, temp[4].xyz_; 32: ADD temp[4].xy, input[4].xy__, -const[0].xy__; 33: ADD temp[3].xy, input[4].xy__, -const[1].xy__; 34: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 35: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 36: MAD temp[4].xyz, temp[4].xyz_, const[1].zzz_, temp[5].xyz_; 37: MAD temp[3].xyz, temp[3].xyz_, const[1].www_, temp[4].xyz_; 38: MOV temp[3].w, const[3].___w; 39: MOV output[1], temp[3]; Fragment Program: after pair translate # Radeon Compiler Program 0: src0.xyz = input[4], src1.xyz = const[0] MAD temp[12].xy, src0.xy_, src0.111, src1.xy_ 1: src0.xyz = input[4], src1.xyz = const[1] MAD temp[11].xy, src0.xy_, src0.111, src1.xy_ 2: src0.xyz = input[4], src1.xyz = const[2] MAD temp[10].xy, src0.xy_, src0.111, src1.xy_ 3: src0.xyz = input[4], src1.xyz = const[3] MAD temp[9].xy, src0.xy_, src0.111, src1.xy_ 4: src0.xyz = input[4], src1.xyz = const[4] MAD temp[8].xy, src0.xy_, src0.111, src1.xy_ 5: src0.xyz = input[4], src1.xyz = const[5] MAD temp[7].xy, src0.xy_, src0.111, src1.xy_ 6: src0.xyz = input[4], src1.xyz = const[5] MAD temp[6].xy, src0.xy_, src0.111, -src1.xy_ 7: src0.xyz = input[4], src1.xyz = const[4] MAD temp[5].xy, src0.xy_, src0.111, -src1.xy_ 8: src0.xyz = input[4], src1.xyz = const[3] MAD temp[4].xy, src0.xy_, src0.111, -src1.xy_ 9: src0.xyz = input[4], src1.xyz = const[2] MAD temp[3].xy, src0.xy_, src0.111, -src1.xy_ 10: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 11: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 12: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 13: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 14: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 15: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 16: TEX temp[7].xyz, input[4].xy__, 2D[0]; 17: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 18: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 19: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 20: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 21: src0.xyz = temp[13], src1.xyz = const[1] MAD temp[13].xyz, src0.xyz, src1.zzz, src0.000 22: src0.xyz = temp[12], src0.w = const[1], src1.xyz = temp[13] MAD temp[12].xyz, src0.xyz, src0.www, src1.xyz 23: src0.xyz = temp[11], src1.xyz = const[0], src2.xyz = temp[12] MAD temp[11].xyz, src0.xyz, src1.zzz, src2.xyz 24: src0.xyz = temp[10], src0.w = const[0], src1.xyz = temp[11] MAD temp[10].xyz, src0.xyz, src0.www, src1.xyz 25: src0.xyz = temp[9], src1.xyz = const[2], src2.xyz = temp[10] MAD temp[9].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[8], src0.w = const[2], src1.xyz = temp[9] MAD temp[8].xyz, src0.xyz, src0.www, src1.xyz 27: src0.xyz = temp[7], src1.xyz = const[3], src2.xyz = temp[8] MAD temp[7].xyz, src0.xyz, src1.zzz, src2.xyz 28: src0.xyz = temp[6], src0.w = const[2], src1.xyz = temp[7] MAD temp[6].xyz, src0.xyz, src0.www, src1.xyz 29: src0.xyz = temp[5], src1.xyz = const[2], src2.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.zzz, src2.xyz 30: src0.xyz = temp[4], src0.w = const[0], src1.xyz = temp[5] MAD temp[4].xyz, src0.xyz, src0.www, src1.xyz 31: src0.xyz = temp[3], src1.xyz = const[0], src2.xyz = temp[4] MAD temp[5].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.xyz = input[4], src1.xyz = const[0] MAD temp[4].xy, src0.xy_, src0.111, -src1.xy_ 33: src0.xyz = input[4], src1.xyz = const[1] MAD temp[3].xy, src0.xy_, src0.111, -src1.xy_ 34: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 35: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 36: src0.xyz = temp[4], src1.xyz = const[1], src2.xyz = temp[5] MAD temp[4].xyz, src0.xyz, src1.zzz, src2.xyz 37: src0.xyz = temp[3], src0.w = const[1], src1.xyz = temp[4] MAD temp[3].xyz, src0.xyz, src0.www, src1.xyz 38: src0.w = const[3] MAD temp[3].w, src0.w, src0.1, src0.0 39: src0.xyz = temp[3], src0.w = temp[3] 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[4], src0.w = const[3], src1.xyz = const[2] MAD temp[3].xy, src0.xy_, src0.111, -src1.xy_ MAD temp[3].w, src0.w, src0.1, src0.0 1: src0.xyz = input[4], src1.xyz = const[3] MAD temp[4].xy, src0.xy_, src0.111, -src1.xy_ 2: src0.xyz = input[4], src1.xyz = const[4] MAD temp[5].xy, src0.xy_, src0.111, -src1.xy_ 3: src0.xyz = input[4], src1.xyz = const[5] MAD temp[6].xy, src0.xy_, src0.111, -src1.xy_ 4: src0.xyz = input[4], src1.xyz = const[5] MAD temp[7].xy, src0.xy_, src0.111, src1.xy_ 5: src0.xyz = input[4], src1.xyz = const[4] MAD temp[8].xy, src0.xy_, src0.111, src1.xy_ 6: src0.xyz = input[4], src1.xyz = const[3] MAD temp[9].xy, src0.xy_, src0.111, src1.xy_ 7: src0.xyz = input[4], src1.xyz = const[2] MAD temp[10].xy, src0.xy_, src0.111, src1.xy_ 8: src0.xyz = input[4], src1.xyz = const[1] MAD temp[11].xy, src0.xy_, src0.111, src1.xy_ 9: src0.xyz = input[4], src1.xyz = const[0] MAD temp[12].xy, src0.xy_, src0.111, src1.xy_ 10: BEGIN_TEX; 11: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 12: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 13: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 14: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 15: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 16: src0.xyz = temp[13], src1.xyz = const[1] MAD temp[13].xyz, src0.xyz, src1.zzz, src0.000 17: BEGIN_TEX; 18: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 19: src0.xyz = temp[12], src0.w = const[1], src1.xyz = temp[13] MAD temp[12].xyz, src0.xyz, src0.www, src1.xyz 20: BEGIN_TEX; 21: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 22: src0.xyz = temp[11], src1.xyz = const[0], src2.xyz = temp[12] MAD temp[11].xyz, src0.xyz, src1.zzz, src2.xyz 23: BEGIN_TEX; 24: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 25: src0.xyz = temp[10], src0.w = const[0], src1.xyz = temp[11] MAD temp[10].xyz, src0.xyz, src0.www, src1.xyz 26: BEGIN_TEX; 27: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 28: src0.xyz = temp[9], src1.xyz = const[2], src2.xyz = temp[10] MAD temp[9].xyz, src0.xyz, src1.zzz, src2.xyz 29: BEGIN_TEX; 30: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 31: src0.xyz = temp[8], src0.w = const[2], src1.xyz = temp[9] MAD temp[8].xyz, src0.xyz, src0.www, src1.xyz 32: BEGIN_TEX; 33: TEX temp[7].xyz, input[4].xy__, 2D[0]; 34: src0.xyz = temp[7], src1.xyz = const[3], src2.xyz = temp[8] MAD temp[7].xyz, src0.xyz, src1.zzz, src2.xyz 35: src0.xyz = temp[6], src0.w = const[2], src1.xyz = temp[7] MAD temp[6].xyz, src0.xyz, src0.www, src1.xyz 36: src0.xyz = temp[5], src1.xyz = const[2], src2.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.zzz, src2.xyz 37: src0.xyz = temp[4], src0.w = const[0], src1.xyz = temp[5] MAD temp[4].xyz, src0.xyz, src0.www, src1.xyz 38: src0.xyz = temp[3], src1.xyz = const[0], src2.xyz = temp[4] MAD temp[5].xyz, src0.xyz, src1.zzz, src2.xyz 39: src0.xyz = input[4], src1.xyz = const[0] MAD temp[4].xy, src0.xy_, src0.111, -src1.xy_ 40: src0.xyz = input[4], src1.xyz = const[1] MAD temp[3].xy, src0.xy_, src0.111, -src1.xy_ 41: BEGIN_TEX; 42: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 43: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 44: src0.xyz = temp[4], src1.xyz = const[1], src2.xyz = temp[5] MAD temp[4].xyz, src0.xyz, src1.zzz, src2.xyz 45: src0.xyz = temp[3], src0.w = const[1], src1.xyz = temp[4] MAD temp[3].xyz, src0.xyz, src0.www, src1.xyz 46: src0.xyz = temp[3], src0.w = temp[3] 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 = temp[0], src0.w = const[3], src1.xyz = const[2] MAD temp[1].xy, src0.xy_, src0.111, -src1.xy_ MAD temp[1].w, src0.w, src0.1, src0.0 1: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[2].xy, src0.xy_, src0.111, -src1.xy_ 2: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[3].xy, src0.xy_, src0.111, -src1.xy_ 3: src0.xyz = temp[0], src1.xyz = const[5] MAD temp[4].xy, src0.xy_, src0.111, -src1.xy_ 4: src0.xyz = temp[0], src1.xyz = const[5] MAD temp[5].xy, src0.xy_, src0.111, src1.xy_ 5: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[6].xy, src0.xy_, src0.111, src1.xy_ 6: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[7].xy, src0.xy_, src0.111, src1.xy_ 7: src0.xyz = temp[0], src1.xyz = const[2] MAD temp[8].xy, src0.xy_, src0.111, src1.xy_ 8: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[9].xy, src0.xy_, src0.111, src1.xy_ 9: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[10].xy, src0.xy_, src0.111, src1.xy_ 10: BEGIN_TEX; 11: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 12: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 13: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 14: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 15: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 16: src0.xyz = temp[11], src1.xyz = const[1] MAD temp[11].xyz, src0.xyz, src1.zzz, src0.000 17: BEGIN_TEX; 18: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 19: src0.xyz = temp[10], src0.w = const[1], src1.xyz = temp[11] MAD temp[10].xyz, src0.xyz, src0.www, src1.xyz 20: BEGIN_TEX; 21: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 22: src0.xyz = temp[9], src1.xyz = const[0], src2.xyz = temp[10] MAD temp[9].xyz, src0.xyz, src1.zzz, src2.xyz 23: BEGIN_TEX; 24: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 25: src0.xyz = temp[8], src0.w = const[0], src1.xyz = temp[9] MAD temp[8].xyz, src0.xyz, src0.www, src1.xyz 26: BEGIN_TEX; 27: TEX temp[7].xyz, temp[6].xy__, 2D[0]; 28: src0.xyz = temp[7], src1.xyz = const[2], src2.xyz = temp[8] MAD temp[7].xyz, src0.xyz, src1.zzz, src2.xyz 29: BEGIN_TEX; 30: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 31: src0.xyz = temp[6], src0.w = const[2], src1.xyz = temp[7] MAD temp[6].xyz, src0.xyz, src0.www, src1.xyz 32: BEGIN_TEX; 33: TEX temp[5].xyz, temp[0].xy__, 2D[0]; 34: src0.xyz = temp[5], src1.xyz = const[3], src2.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.zzz, src2.xyz 35: src0.xyz = temp[4], src0.w = const[2], src1.xyz = temp[5] MAD temp[4].xyz, src0.xyz, src0.www, src1.xyz 36: src0.xyz = temp[3], src1.xyz = const[2], src2.xyz = temp[4] MAD temp[3].xyz, src0.xyz, src1.zzz, src2.xyz 37: src0.xyz = temp[2], src0.w = const[0], src1.xyz = temp[3] MAD temp[2].xyz, src0.xyz, src0.www, src1.xyz 38: src0.xyz = temp[1], src1.xyz = const[0], src2.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src1.zzz, src2.xyz 39: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src0.111, -src1.xy_ 40: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[1].xy, src0.xy_, src0.111, -src1.xy_ 41: BEGIN_TEX; 42: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 43: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 44: src0.xyz = temp[2], src1.xyz = const[1], src2.xyz = temp[3] MAD temp[2].xyz, src0.xyz, src1.zzz, src2.xyz 45: src0.xyz = temp[1], src0.w = const[1], src1.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src0.www, src1.xyz 46: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 r300compiler error: r300_fragprog_emit.c::begin_tex(): Too many texture indirections pc=30************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c2 t0 -> t1.xy (01840880) w: c3 t0 t0 -> t1.w (00840023) xyz: t0.xyz 1.0 -c2.xyz op: 00090a80 w: c3.w 1.0 0.0 op: 00040889