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]; Compiler: after dataflow passes: # Radeon Compiler Program 0: MOV output[0], input[0]; Compiler: 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 Compiler: 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 Compiler: after pair register allocation: # Radeon Compiler Program 0: 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 pc=0************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 -> o0.xyz (1c000000) w: t0 t0 t0 -> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 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]; Compiler: after dataflow passes: # Radeon Compiler Program 0: MOV output[0], input[0]; Compiler: 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 Compiler: 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 Compiler: after pair register allocation: # Radeon Compiler Program 0: 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 pc=1************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 -> o0.xyz (1c000000) w: t0 t0 t0 -> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 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], 2D[0]; 1: MOV output[0], temp[1]; Compiler: after dataflow passes: # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Compiler: after pair translate: # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: 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 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0], 2D[0]; 2: 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 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0], 2D[0]; 2: 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 pc=2************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 -> o0.xyz (1c000000) w: t0 t0 t0 -> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 Fragment Program: After native rewrite: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: TXP temp[0].xyz, input[0], 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Compiler: after dataflow passes: # Radeon Compiler Program 0: TXP temp[0].xyz, input[0], 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Compiler: after pair translate: # Radeon Compiler Program 0: TXP temp[0].xyz, input[0], 2D[0]; 1: src0.xyz = temp[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 2: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].xyz, input[0], 2D[0]; 2: src0.xyz = temp[0], src0.w = const[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].xyz, temp[0], 2D[0]; 2: src0.xyz = temp[0], src0.w = const[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=3************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TXP t0, t0, texture[0] (00018000) 0: xyz: t0 c0 t0 -> o0.xyz (1c000800) w: c0 t0 t0 -> o0.w (01000020) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: c0.w 1.0 0.0 op: 00040889 Fragment Program: After native rewrite: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Compiler: after dataflow passes: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Compiler: after pair translate: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[0], 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], temp[0], 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 pc=4************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TXP t0, t0, texture[0] (00018000) 0: xyz: t0 c0 t0 -> o0.xyz (1c000800) w: t0 c0 t0 -> o0.w (01000800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 Fragment Program: After native rewrite: # Radeon Compiler Program 0: TXP temp[0], input[1], 2D[0]; 1: MUL output[0], temp[0], input[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: TXP temp[0], input[1], 2D[0]; 1: MUL output[0], temp[0], input[0]; Compiler: after dataflow passes: # Radeon Compiler Program 0: TXP temp[0], input[1], 2D[0]; 1: MUL output[0], temp[0], input[0]; Compiler: after pair translate: # Radeon Compiler Program 0: TXP temp[0], input[1], 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[1], 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1], temp[1], 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 pc=5************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TXP t1, t1, texture[0] (00018041) 0: xyz: t1 t0 t0 -> o0.xyz (1c000001) w: t1 t0 t0 -> o0.w (01000001) xyz: t1.xyz t0.xyz 0.0 op: 00050200 w: t1.w t0.w 0.0 op: 00040509 Fragment Program: After native rewrite: # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MOV output[0].xyz, const[0]; 2: MUL output[0].w, temp[0], const[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: TXP temp[0].w, input[0], 2D[0]; 1: MOV output[0].xyz, const[0].xyz_; 2: MUL output[0].w, temp[0].___w, const[0].___w; Compiler: after dataflow passes: # Radeon Compiler Program 0: TXP temp[0].w, input[0], 2D[0]; 1: MOV output[0].xyz, const[0].xyz_; 2: MUL output[0].w, temp[0].___w, const[0].___w; Compiler: after pair translate: # Radeon Compiler Program 0: TXP temp[0].w, input[0], 2D[0]; 1: src0.xyz = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 2: src0.w = temp[0], src1.w = const[0] MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].w, input[0], 2D[0]; 2: src0.xyz = const[0], src0.w = temp[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].w, temp[0], 2D[0]; 2: src0.xyz = const[0], src0.w = temp[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 pc=6************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TXP t0, t0, texture[0] (00018000) 0: xyz: c0 t0 t0 -> o0.xyz (1c000020) w: t0 c0 t0 -> o0.w (01000800) xyz: c0.xyz 1.0 0.0 op: 00050a80 w: t0.w c0.w 0.0 op: 00040509 Fragment Program: After native rewrite: # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: MOV output[0], const[0]; Compiler: after dataflow passes: # Radeon Compiler Program 0: MOV output[0], const[0]; Compiler: after pair translate: # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Compiler: after pair scheduling: # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Compiler: after pair register allocation: # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = const[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=7************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: c0 t0 t0 -> o0.xyz (1c000020) w: c0 t0 t0 -> o0.w (01000020) xyz: c0.xyz 1.0 0.0 op: 00050a80 w: c0.w 1.0 0.0 op: 00040889 Fragment Program: After native rewrite: # Radeon Compiler Program 0: MOV temp[0], const[12].xxxx; 1: DP3 temp[1].w, input[0], input[0]; 2: RSQ temp[1].w, |temp[1].wwww|; 3: MUL temp[2].xyz, input[0], temp[1].wwww; 4: MOV temp[1].xyz, temp[2]; 5: MOV temp[2].xyz, const[12].xxyz; 6: DP3 temp[1].w, input[2], input[2]; 7: RSQ temp[1].w, |temp[1].wwww|; 8: MUL temp[2].xyz, input[2], temp[1].wwww; 9: MOV temp[3].xyz, temp[2]; 10: MOV temp[2].xyz, const[5]; 11: MOV temp[2], const[12].xxxx; 12: MOV temp[4].xyz, temp[3]; 13: MOV temp[5].xyz, const[12].xxyy; 14: MOV temp[6], const[6]; 15: MOV temp[1].w, temp[3].zzzz; 16: MAX temp[1].w, temp[3].zzzz, const[12].xxxx; 17: MUL temp[7], const[6], temp[1].wwww; 18: MOV temp[8], temp[7]; 19: ADD temp[2], const[12].xxxx, temp[7]; 20: MOV temp[8], const[12].xxxx; 21: MOV temp[1].w, const[7].xxxx; 22: ADD temp[1].w, const[7].xxxx, const[12].zzzz; 23: MOV temp[6].xyz, temp[3]; 24: MOV temp[9].xyz, temp[1]; 25: MOV temp[3].w, temp[1].wwww; 26: MOV temp[6].w, -temp[6].xxxx; 27: MOV temp[10].w, -temp[6].yyyy; 28: MOV temp[11].w, temp[6].zzzz; 29: MOV temp[11].x, -temp[6].xxxx; 30: MOV temp[11].y, -temp[6].yyyy; 31: MOV temp[11].z, temp[11].wyww; 32: DP3 temp[6].w, temp[11], temp[1]; 33: MAX temp[10].w, temp[6].wwww, const[12].xxxx; 34: LG2 temp[12].w, temp[10].wwww; 35: MUL temp[12].w, temp[12].wwww, temp[1].wwww; 36: EX2 temp[6].w, temp[12].wwww; 37: MUL temp[5], const[8], temp[6].wwww; 38: MOV temp[4], temp[5]; 39: ADD temp[8], const[12].xxxx, temp[5]; 40: MOV temp[7], temp[8]; 41: MOV temp[8].w, const[12].yyyy; 42: MOV temp[4], const[9]; 43: MOV temp[5], const[10]; 44: MOV temp[6], const[11]; 45: TEX temp[9], input[1], 2D[0]; 46: MOV temp[9].w, const[12].yyyy; 47: MUL temp[5], const[10], temp[9]; 48: MUL temp[4], const[9], temp[9]; 49: MUL temp[1], temp[5], temp[2]; 50: MAD temp[2], temp[4], const[5], temp[1]; 51: ADD temp[0], const[12].xxxx, temp[2]; 52: MOV temp[11], temp[0]; 53: MUL temp[1], const[11], temp[8]; 54: ADD temp[0], temp[0], temp[1]; 55: MOV temp[2], temp[0]; 56: ADD temp[1].x, const[1].xxxx, -const[13].xxxx; 57: MAX temp[1].y, temp[1].xxxx, const[12].xxxx; 58: MUL temp[3].w, temp[1].yyyy, const[13].yyyy; 59: MUL temp[1].y, temp[3].wwww, temp[3].wwww; 60: MOV temp[1].w, const[13].zzzz; 61: MUL temp[2].x, const[2].xxxx, const[13].zzzz; 62: MOV temp[2].z, temp[2].xxxx; 63: FRC temp[13], temp[2].xxxx; 64: ADD temp[4].x, temp[2].xxxx, -temp[13]; 65: ADD temp[2].z, temp[2].xxxx, -temp[4].xxxx; 66: ADD temp[4].y, temp[2].zzzz, -const[13].xxxx; 67: MOV temp[4].x, |temp[4].yyyy|; 68: MUL temp[4].w, temp[2].xxxx, const[13].wwww; 69: ADD temp[4].y, temp[4].wwww, -const[14].xxxx; 70: FRC temp[14], temp[4].yyyy; 71: ADD temp[5].y, temp[4].yyyy, -temp[14]; 72: ADD temp[4].y, temp[4].yyyy, -temp[5].yyyy; 73: MOV temp[4].w, temp[4].yyyy; 74: ADD temp[5].w, temp[4].yyyy, -const[13].xxxx; 75: MOV temp[6].x, |temp[5].wwww|; 76: ADD temp[5].z, temp[6].xxxx, -const[14].yyyy; 77: ADD temp[4].x, temp[4].xxxx, temp[5].zzzz; 78: MOV temp[5].y, temp[4].xxxx; 79: MUL temp[5].w, temp[2].xxxx, const[14].zzzz; 80: ADD temp[5].z, temp[5].wwww, -const[14].wwww; 81: FRC temp[15], temp[5].zzzz; 82: ADD temp[6].y, temp[5].zzzz, -temp[15]; 83: ADD temp[5].z, temp[5].zzzz, -temp[6].yyyy; 84: MOV temp[5].w, temp[5].zzzz; 85: ADD temp[6].w, temp[5].zzzz, -const[13].xxxx; 86: MOV temp[7].x, |temp[6].wwww|; 87: ADD temp[6].z, temp[7].xxxx, -const[14].yyyy; 88: ADD temp[4].x, temp[4].xxxx, temp[6].zzzz; 89: MOV temp[6].y, temp[4].xxxx; 90: MUL temp[6].w, temp[2].xxxx, const[15].xxxx; 91: ADD temp[6].z, temp[6].wwww, -const[15].yyyy; 92: FRC temp[16], temp[6].zzzz; 93: ADD temp[7].y, temp[6].zzzz, -temp[16]; 94: ADD temp[6].z, temp[6].zzzz, -temp[7].yyyy; 95: MOV temp[6].w, temp[6].zzzz; 96: ADD temp[7].w, temp[6].zzzz, -const[13].xxxx; 97: MOV temp[8].x, |temp[7].wwww|; 98: ADD temp[7].z, temp[8].xxxx, -const[14].yyyy; 99: ADD temp[4].x, temp[4].xxxx, temp[7].zzzz; 100: MOV temp[7].y, temp[4].xxxx; 101: MAD temp[7].z, temp[4].xxxx, const[13].zzzz, const[15].zzzz; 102: MUL temp[3].w, temp[7].zzzz, temp[1].yyyy; 103: MOV temp[1].y, temp[3].wwww; 104: MOV temp[6], const[12].xxxx; 105: MOV temp[6].x, temp[3].wwww; 106: MUL temp[1].z, temp[3].wwww, temp[3].wwww; 107: MUL temp[1].w, temp[1].zzzz, temp[1].yyyy; 108: MOV temp[6].y, temp[1].wwzw; 109: ADD temp[1].z, temp[1].yyyy, -const[13].wwww; 110: MAX temp[7].x, temp[1].zzzz, const[12].xxxx; 111: MUL temp[1].z, temp[7].xxxx, const[13].yyyy; 112: MOV temp[6].z, temp[1].zyzw; 113: MOV temp[6].w, const[12].yyyy; 114: MOV temp[5].yzw, temp[6]; 115: MOV temp[4].xyw, temp[6]; 116: ADD temp[0], temp[0], temp[6]; 117: MOV temp[2].xz, temp[0]; 118: MOV output[0], temp[0]; Fragment Program: After deadcode: # Radeon Compiler Program 0: DP3 temp[1].w, input[0].xyz_, input[0].xyz_; 1: RSQ temp[1].w, |temp[1].w___|; 2: MUL temp[2].xyz, input[0].xyz_, temp[1].www_; 3: MOV temp[1].xyz, temp[2].xyz_; 4: DP3 temp[1].w, input[2].xyz_, input[2].xyz_; 5: RSQ temp[1].w, |temp[1].w___|; 6: MUL temp[2].xyz, input[2].xyz_, temp[1].www_; 7: MOV temp[3].xyz, temp[2].xyz_; 8: MAX temp[1].w, temp[3].___z, const[12].___x; 9: MUL temp[7], const[6], temp[1].wwww; 10: ADD temp[2], const[12].xxxx, temp[7]; 11: ADD temp[1].w, const[7].___x, const[12].___z; 12: MOV temp[6].xyz, temp[3].xyz_; 13: MOV temp[11].w, temp[6].___z; 14: MOV temp[11].x, -temp[6].x___; 15: MOV temp[11].y, -temp[6]._y__; 16: MOV temp[11].z, temp[11].__w_; 17: DP3 temp[6].w, temp[11].xyz_, temp[1].xyz_; 18: MAX temp[10].w, temp[6].___w, const[12].___x; 19: LG2 temp[12].w, temp[10].w___; 20: MUL temp[12].w, temp[12].___w, temp[1].___w; 21: EX2 temp[6].w, temp[12].w___; 22: MUL temp[5].xyz, const[8].xyz_, temp[6].www_; 23: ADD temp[8].xyz, const[12].xxx_, temp[5].xyz_; 24: MOV temp[8].w, const[12].___y; 25: TEX temp[9].xyz, input[1], 2D[0]; 26: MOV temp[9].w, const[12].___y; 27: MUL temp[5], const[10], temp[9]; 28: MUL temp[4], const[9], temp[9]; 29: MUL temp[1], temp[5], temp[2]; 30: MAD temp[2], temp[4], const[5], temp[1]; 31: ADD temp[0], const[12].xxxx, temp[2]; 32: MUL temp[1], const[11], temp[8]; 33: ADD temp[0], temp[0], temp[1]; 34: ADD temp[1].x, const[1].x___, -const[13].x___; 35: MAX temp[1].y, temp[1]._x__, const[12]._x__; 36: MUL temp[3].w, temp[1].___y, const[13].___y; 37: MUL temp[1].y, temp[3]._w__, temp[3]._w__; 38: MUL temp[2].x, const[2].x___, const[13].z___; 39: FRC temp[13].x, temp[2].x___; 40: ADD temp[4].x, temp[2].x___, -temp[13].x___; 41: ADD temp[2].z, temp[2].__x_, -temp[4].__x_; 42: ADD temp[4].y, temp[2]._z__, -const[13]._x__; 43: MOV temp[4].x, |temp[4].y___|; 44: MUL temp[4].w, temp[2].___x, const[13].___w; 45: ADD temp[4].y, temp[4]._w__, -const[14]._x__; 46: FRC temp[14].y, temp[4]._y__; 47: ADD temp[5].y, temp[4]._y__, -temp[14]._y__; 48: ADD temp[4].y, temp[4]._y__, -temp[5]._y__; 49: ADD temp[5].w, temp[4].___y, -const[13].___x; 50: MOV temp[6].x, |temp[5].w___|; 51: ADD temp[5].z, temp[6].__x_, -const[14].__y_; 52: ADD temp[4].x, temp[4].x___, temp[5].z___; 53: MUL temp[5].w, temp[2].___x, const[14].___z; 54: ADD temp[5].z, temp[5].__w_, -const[14].__w_; 55: FRC temp[15].y, temp[5]._z__; 56: ADD temp[6].y, temp[5]._z__, -temp[15]._y__; 57: ADD temp[5].z, temp[5].__z_, -temp[6].__y_; 58: ADD temp[6].w, temp[5].___z, -const[13].___x; 59: MOV temp[7].x, |temp[6].w___|; 60: ADD temp[6].z, temp[7].__x_, -const[14].__y_; 61: ADD temp[4].x, temp[4].x___, temp[6].z___; 62: MUL temp[6].w, temp[2].___x, const[15].___x; 63: ADD temp[6].z, temp[6].__w_, -const[15].__y_; 64: FRC temp[16].y, temp[6]._z__; 65: ADD temp[7].y, temp[6]._z__, -temp[16]._y__; 66: ADD temp[6].z, temp[6].__z_, -temp[7].__y_; 67: ADD temp[7].w, temp[6].___z, -const[13].___x; 68: MOV temp[8].x, |temp[7].w___|; 69: ADD temp[7].z, temp[8].__x_, -const[14].__y_; 70: ADD temp[4].x, temp[4].x___, temp[7].z___; 71: MAD temp[7].z, temp[4].__x_, const[13].__z_, const[15].__z_; 72: MUL temp[3].w, temp[7].___z, temp[1].___y; 73: MOV temp[1].y, temp[3]._w__; 74: MOV temp[6].x, temp[3].w___; 75: MUL temp[1].z, temp[3].__w_, temp[3].__w_; 76: MUL temp[1].w, temp[1].___z, temp[1].___y; 77: MOV temp[6].y, temp[1]._w__; 78: ADD temp[1].z, temp[1].__y_, -const[13].__w_; 79: MAX temp[7].x, temp[1].z___, const[12].x___; 80: MUL temp[1].z, temp[7].__x_, const[13].__y_; 81: MOV temp[6].z, temp[1].__z_; 82: MOV temp[6].w, const[12].___y; 83: ADD temp[0], temp[0], temp[6]; 84: MOV output[0], temp[0]; Compiler: after dataflow passes: # Radeon Compiler Program 0: DP3 temp[1].w, input[0].xyz_, input[0].xyz_; 1: RSQ temp[1].w, |temp[1].w___|; 2: MUL temp[2].xyz, input[0].xyz_, temp[1].www_; 3: MOV temp[1].xyz, temp[2].xyz_; 4: DP3 temp[1].w, input[2].xyz_, input[2].xyz_; 5: RSQ temp[1].w, |temp[1].w___|; 6: MUL temp[2].xyz, input[2].xyz_, temp[1].www_; 7: MOV temp[3].xyz, temp[2].xyz_; 8: MAX temp[1].w, temp[3].___z, const[12].___x; 9: MUL temp[7], const[6], temp[1].wwww; 10: ADD temp[2], const[12].xxxx, temp[7]; 11: ADD temp[1].w, const[7].___x, const[12].___z; 12: MOV temp[6].xyz, temp[3].xyz_; 13: MOV temp[11].w, temp[6].___z; 14: MOV temp[11].x, -temp[6].x___; 15: MOV temp[11].y, -temp[6]._y__; 16: MOV temp[11].z, temp[11].__w_; 17: DP3 temp[6].w, temp[11].xyz_, temp[1].xyz_; 18: MAX temp[10].w, temp[6].___w, const[12].___x; 19: LG2 temp[12].w, temp[10].w___; 20: MUL temp[12].w, temp[12].___w, temp[1].___w; 21: EX2 temp[6].w, temp[12].w___; 22: MUL temp[5].xyz, const[8].xyz_, temp[6].www_; 23: ADD temp[8].xyz, const[12].xxx_, temp[5].xyz_; 24: MOV temp[8].w, const[12].___y; 25: TEX temp[9].xyz, input[1], 2D[0]; 26: MOV temp[9].w, const[12].___y; 27: MUL temp[5], const[10], temp[9]; 28: MUL temp[4], const[9], temp[9]; 29: MUL temp[1], temp[5], temp[2]; 30: MAD temp[2], temp[4], const[5], temp[1]; 31: ADD temp[0], const[12].xxxx, temp[2]; 32: MUL temp[1], const[11], temp[8]; 33: ADD temp[0], temp[0], temp[1]; 34: ADD temp[1].x, const[1].x___, -const[13].x___; 35: MAX temp[1].y, temp[1]._x__, const[12]._x__; 36: MUL temp[3].w, temp[1].___y, const[13].___y; 37: MUL temp[1].y, temp[3]._w__, temp[3]._w__; 38: MUL temp[2].x, const[2].x___, const[13].z___; 39: FRC temp[13].x, temp[2].x___; 40: ADD temp[4].x, temp[2].x___, -temp[13].x___; 41: ADD temp[2].z, temp[2].__x_, -temp[4].__x_; 42: ADD temp[4].y, temp[2]._z__, -const[13]._x__; 43: MOV temp[4].x, |temp[4].y___|; 44: MUL temp[4].w, temp[2].___x, const[13].___w; 45: ADD temp[4].y, temp[4]._w__, -const[14]._x__; 46: FRC temp[14].y, temp[4]._y__; 47: ADD temp[5].y, temp[4]._y__, -temp[14]._y__; 48: ADD temp[4].y, temp[4]._y__, -temp[5]._y__; 49: ADD temp[5].w, temp[4].___y, -const[13].___x; 50: MOV temp[6].x, |temp[5].w___|; 51: ADD temp[5].z, temp[6].__x_, -const[14].__y_; 52: ADD temp[4].x, temp[4].x___, temp[5].z___; 53: MUL temp[5].w, temp[2].___x, const[14].___z; 54: ADD temp[5].z, temp[5].__w_, -const[14].__w_; 55: FRC temp[15].y, temp[5]._z__; 56: ADD temp[6].y, temp[5]._z__, -temp[15]._y__; 57: ADD temp[5].z, temp[5].__z_, -temp[6].__y_; 58: ADD temp[6].w, temp[5].___z, -const[13].___x; 59: MOV temp[7].x, |temp[6].w___|; 60: ADD temp[6].z, temp[7].__x_, -const[14].__y_; 61: ADD temp[4].x, temp[4].x___, temp[6].z___; 62: MUL temp[6].w, temp[2].___x, const[15].___x; 63: ADD temp[6].z, temp[6].__w_, -const[15].__y_; 64: FRC temp[16].y, temp[6]._z__; 65: ADD temp[7].y, temp[6]._z__, -temp[16]._y__; 66: ADD temp[6].z, temp[6].__z_, -temp[7].__y_; 67: ADD temp[7].w, temp[6].___z, -const[13].___x; 68: MOV temp[8].x, |temp[7].w___|; 69: ADD temp[7].z, temp[8].__x_, -const[14].__y_; 70: ADD temp[4].x, temp[4].x___, temp[7].z___; 71: MAD temp[7].z, temp[4].__x_, const[13].__z_, const[15].__z_; 72: MUL temp[3].w, temp[7].___z, temp[1].___y; 73: MOV temp[1].y, temp[3]._w__; 74: MOV temp[6].x, temp[3].w___; 75: MUL temp[1].z, temp[3].__w_, temp[3].__w_; 76: MUL temp[1].w, temp[1].___z, temp[1].___y; 77: MOV temp[6].y, temp[1]._w__; 78: ADD temp[1].z, temp[1].__y_, -const[13].__w_; 79: MAX temp[7].x, temp[1].z___, const[12].x___; 80: MUL temp[1].z, temp[7].__x_, const[13].__y_; 81: MOV temp[6].z, temp[1].__z_; 82: MOV temp[6].w, const[12].___y; 83: ADD temp[0], temp[0], temp[6]; 84: MOV output[0], temp[0]; Compiler: after pair translate: # Radeon Compiler Program 0: src0.xyz = input[0] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 1: src0.w = temp[1] RSQ temp[1].w, |src0.w| 2: src0.xyz = input[0], src0.w = temp[1] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 3: src0.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = input[2] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 5: src0.w = temp[1] RSQ temp[1].w, |src0.w| 6: src0.xyz = input[2], src0.w = temp[1] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src0.111, src0.000 8: src0.xyz = temp[3], src1.xyz = const[12] MAX temp[1].w, src0.z, src1.x 9: src0.xyz = const[6], src0.w = const[6], src1.w = temp[1] MAD temp[7].xyz, src0.xyz, src1.www, src0.000 MAD temp[7].w, src0.w, src1.w, src0.0 10: src0.xyz = const[12], src0.w = temp[7], src1.xyz = temp[7] MAD temp[2].xyz, src0.xxx, src0.111, src1.xyz MAD temp[2].w, src0.x, src0.1, src0.w 11: src0.xyz = const[7], src1.xyz = const[12] MAD temp[1].w, src0.x, src0.1, src1.z 12: src0.xyz = temp[3] MAD temp[6].xyz, src0.xyz, src0.111, src0.000 13: src0.xyz = temp[6] MAD temp[11].w, src0.z, src0.1, src0.0 14: src0.xyz = temp[6] MAD temp[11].x, -src0.x__, src0.111, src0.000 15: src0.xyz = temp[6] MAD temp[11].y, -src0._y_, src0.111, src0.000 16: src0.w = temp[11] MAD temp[11].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[11], src1.xyz = temp[1] DP3, src0.xyz, src1.xyz DP3 temp[6].w, src0._, src0._ 18: src0.xyz = const[12], src0.w = temp[6] MAX temp[10].w, src0.w, src0.x 19: src0.w = temp[10] LG2 temp[12].w, src0.w 20: src0.w = temp[12], src1.w = temp[1] MAD temp[12].w, src0.w, src1.w, src0.0 21: src0.w = temp[12] EX2 temp[6].w, src0.w 22: src0.xyz = const[8], src0.w = temp[6] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 23: src0.xyz = const[12], src1.xyz = temp[5] MAD temp[8].xyz, src0.xxx, src0.111, src1.xyz 24: src0.xyz = const[12] MAD temp[8].w, src0.y, src0.1, src0.0 25: TEX temp[9].xyz, input[1], 2D[0]; 26: src0.xyz = const[12] MAD temp[9].w, src0.y, src0.1, src0.0 27: src0.xyz = const[10], src0.w = const[10], src1.xyz = temp[9], src1.w = temp[9] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 28: src0.xyz = const[9], src0.w = const[9], src1.xyz = temp[9], src1.w = temp[9] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 29: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[2], src1.w = temp[2] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 30: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[1], src2.w = temp[1] MAD temp[2].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[2].w, src0.w, src1.w, src2.w 31: src0.xyz = const[12], src0.w = temp[2], src1.xyz = temp[2] MAD temp[0].xyz, src0.xxx, src0.111, src1.xyz MAD temp[0].w, src0.x, src0.1, src0.w 32: src0.xyz = const[11], src0.w = const[11], src1.xyz = temp[8], src1.w = temp[8] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 33: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 34: src0.xyz = const[1], src1.xyz = const[13] MAD temp[1].x, src0.x__, src0.111, -src1.x__ 35: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[1].y, src0._x_, src1._x_ 36: src0.xyz = temp[1], src1.xyz = const[13] MAD temp[3].w, src0.y, src1.y, src0.0 37: src0.w = temp[3] MAD temp[1].y, src0._w_, src0._w_, src0.000 38: src0.xyz = const[2], src1.xyz = const[13] MAD temp[2].x, src0.x__, src1.z__, src0.000 39: src0.xyz = temp[2] FRC temp[13].x, src0.x__ 40: src0.xyz = temp[2], src1.xyz = temp[13] MAD temp[4].x, src0.x__, src0.111, -src1.x__ 41: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].z, src0.__x, src0.111, -src1.__x 42: src0.xyz = temp[2], src1.xyz = const[13] MAD temp[4].y, src0._z_, src0.111, -src1._x_ 43: src0.xyz = temp[4] MAD temp[4].x, |src0.y__|, src0.111, src0.000 44: src0.xyz = temp[2], src0.w = const[13] MAD temp[4].w, src0.x, src0.w, src0.0 45: src0.xyz = const[14], src0.w = temp[4] MAD temp[4].y, src0._w_, src0.111, -src0._x_ 46: src0.xyz = temp[4] FRC temp[14].y, src0._y_ 47: src0.xyz = temp[4], src1.xyz = temp[14] MAD temp[5].y, src0._y_, src0.111, -src1._y_ 48: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].y, src0._y_, src0.111, -src1._y_ 49: src0.xyz = temp[4], src1.xyz = const[13] MAD temp[5].w, src0.y, src0.1, -src1.x 50: src0.w = temp[5] MAD temp[6].x, |src0.w__|, src0.111, src0.000 51: src0.xyz = temp[6], src1.xyz = const[14] MAD temp[5].z, src0.__x, src0.111, -src1.__y 52: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].x, src0.x__, src0.111, src1.z__ 53: src0.xyz = temp[2], src1.xyz = const[14] MAD temp[5].w, src0.x, src1.z, src0.0 54: src0.w = temp[5], src1.w = const[14] MAD temp[5].z, src0.__w, src0.111, -src1.__w 55: src0.xyz = temp[5] FRC temp[15].y, src0._z_ 56: src0.xyz = temp[5], src1.xyz = temp[15] MAD temp[6].y, src0._z_, src0.111, -src1._y_ 57: src0.xyz = temp[5], src1.xyz = temp[6] MAD temp[5].z, src0.__z, src0.111, -src1.__y 58: src0.xyz = temp[5], src1.xyz = const[13] MAD temp[6].w, src0.z, src0.1, -src1.x 59: src0.w = temp[6] MAD temp[7].x, |src0.w__|, src0.111, src0.000 60: src0.xyz = temp[7], src1.xyz = const[14] MAD temp[6].z, src0.__x, src0.111, -src1.__y 61: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[4].x, src0.x__, src0.111, src1.z__ 62: src0.xyz = temp[2], src1.xyz = const[15] MAD temp[6].w, src0.x, src1.x, src0.0 63: src0.xyz = const[15], src0.w = temp[6] MAD temp[6].z, src0.__w, src0.111, -src0.__y 64: src0.xyz = temp[6] FRC temp[16].y, src0._z_ 65: src0.xyz = temp[6], src1.xyz = temp[16] MAD temp[7].y, src0._z_, src0.111, -src1._y_ 66: src0.xyz = temp[6], src1.xyz = temp[7] MAD temp[6].z, src0.__z, src0.111, -src1.__y 67: src0.xyz = temp[6], src1.xyz = const[13] MAD temp[7].w, src0.z, src0.1, -src1.x 68: src0.w = temp[7] MAD temp[8].x, |src0.w__|, src0.111, src0.000 69: src0.xyz = temp[8], src1.xyz = const[14] MAD temp[7].z, src0.__x, src0.111, -src1.__y 70: src0.xyz = temp[4], src1.xyz = temp[7] MAD temp[4].x, src0.x__, src0.111, src1.z__ 71: src0.xyz = temp[4], src1.xyz = const[13], src2.xyz = const[15] MAD temp[7].z, src0.__x, src1.__z, src2.__z 72: src0.xyz = temp[7], src1.xyz = temp[1] MAD temp[3].w, src0.z, src1.y, src0.0 73: src0.w = temp[3] MAD temp[1].y, src0._w_, src0.111, src0.000 74: src0.w = temp[3] MAD temp[6].x, src0.w__, src0.111, src0.000 75: src0.w = temp[3] MAD temp[1].z, src0.__w, src0.__w, src0.000 76: src0.xyz = temp[1] MAD temp[1].w, src0.z, src0.y, src0.0 77: src0.w = temp[1] MAD temp[6].y, src0._w_, src0.111, src0.000 78: src0.xyz = temp[1], src0.w = const[13] MAD temp[1].z, src0.__y, src0.111, -src0.__w 79: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[7].x, src0.z__, src1.x__ 80: src0.xyz = temp[7], src1.xyz = const[13] MAD temp[1].z, src0.__x, src1.__y, src0.000 81: src0.xyz = temp[1] MAD temp[6].z, src0.__z, src0.111, src0.000 82: src0.xyz = const[12] MAD temp[6].w, src0.y, src0.1, src0.0 83: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[6], src1.w = temp[6] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 84: 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 Compiler: after pair scheduling: # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[9].xyz, input[1], 2D[0]; 2: src0.xyz = input[0] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 3: src0.w = temp[1] RSQ temp[1].w, |src0.w| 4: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[12] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 MAD temp[9].w, src1.y, src0.1, src0.0 5: src0.xyz = const[9], src0.w = const[9], src1.xyz = temp[9], src1.w = temp[9] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 6: src0.xyz = input[2] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 7: src0.xyz = temp[2], src0.w = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 RSQ temp[1].w, |src0.w| 8: src0.xyz = input[2], src0.w = temp[1], src1.xyz = const[12] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 MAD temp[8].w, src1.y, src0.1, src0.0 9: src0.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src0.111, src0.000 10: src0.xyz = temp[3], src1.xyz = const[12] MAD temp[6].xyz, src0.xyz, src0.111, src0.000 MAX temp[1].w, src0.z, src1.x 11: src0.xyz = const[6], src0.w = const[6], src1.w = temp[1] MAD temp[7].xyz, src0.xyz, src1.www, src0.000 MAD temp[7].w, src0.w, src1.w, src0.0 12: src0.xyz = const[12], src0.w = temp[7], src1.xyz = temp[7] MAD temp[2].xyz, src0.xxx, src0.111, src1.xyz MAD temp[2].w, src0.x, src0.1, src0.w 13: src0.xyz = temp[6], src1.xyz = const[7], src2.xyz = const[12] MAD temp[11].y, -src0._y_, src0.111, src0.000 MAD temp[1].w, src1.x, src0.1, src2.z 14: src0.xyz = temp[6] MAD temp[11].x, -src0.x__, src0.111, src0.000 MAD temp[11].w, src0.z, src0.1, src0.0 15: src0.w = temp[11] MAD temp[11].z, src0.__w, src0.111, src0.000 16: src0.xyz = temp[11], src1.xyz = temp[1] DP3, src0.xyz, src1.xyz DP3 temp[6].w, src0._, src0._ 17: src0.xyz = const[12], src0.w = temp[6] MAX temp[10].w, src0.w, src0.x 18: src0.w = temp[10] LG2 temp[12].w, src0.w 19: src0.w = temp[12], src1.w = temp[1] MAD temp[12].w, src0.w, src1.w, src0.0 20: src0.w = temp[12] EX2 temp[6].w, src0.w 21: src0.xyz = const[8], src0.w = temp[6] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 22: src0.xyz = const[12], src1.xyz = temp[5] MAD temp[8].xyz, src0.xxx, src0.111, src1.xyz 23: src0.xyz = const[10], src0.w = const[10], src1.xyz = temp[9], src1.w = temp[9] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 24: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[2], src1.w = temp[2] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 25: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[1], src2.w = temp[1] MAD temp[2].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[2].w, src0.w, src1.w, src2.w 26: src0.xyz = const[12], src0.w = temp[2], src1.xyz = temp[2] MAD temp[0].xyz, src0.xxx, src0.111, src1.xyz MAD temp[0].w, src0.x, src0.1, src0.w 27: src0.xyz = const[11], src0.w = const[11], src1.xyz = temp[8], src1.w = temp[8] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 29: src0.xyz = const[1], src1.xyz = const[13] MAD temp[1].x, src0.x__, src0.111, -src1.x__ 30: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[1].y, src0._x_, src1._x_ 31: src0.xyz = const[2], src1.xyz = const[13], src2.xyz = temp[1] MAD temp[2].x, src0.x__, src1.z__, src0.000 MAD temp[3].w, src2.y, src1.y, src0.0 32: src0.xyz = temp[2], src0.w = temp[3], src1.w = const[13] MAD temp[1].y, src0._w_, src0._w_, src0.000 MAD temp[4].w, src0.x, src1.w, src0.0 33: src0.xyz = temp[2] FRC temp[13].x, src0.x__ 34: src0.xyz = temp[2], src1.xyz = temp[13] MAD temp[4].x, src0.x__, src0.111, -src1.x__ 35: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].z, src0.__x, src0.111, -src1.__x 36: src0.xyz = temp[2], src1.xyz = const[13] MAD temp[4].y, src0._z_, src0.111, -src1._x_ 37: src0.xyz = temp[4] MAD temp[4].x, |src0.y__|, src0.111, src0.000 38: src0.xyz = const[14], src0.w = temp[4] MAD temp[4].y, src0._w_, src0.111, -src0._x_ 39: src0.xyz = temp[4] FRC temp[14].y, src0._y_ 40: src0.xyz = temp[4], src1.xyz = temp[14] MAD temp[5].y, src0._y_, src0.111, -src1._y_ 41: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].y, src0._y_, src0.111, -src1._y_ 42: src0.xyz = temp[4], src1.xyz = const[13] MAD temp[5].w, src0.y, src0.1, -src1.x 43: src0.w = temp[5] MAD temp[6].x, |src0.w__|, src0.111, src0.000 44: src0.xyz = temp[6], src1.xyz = const[14], src2.xyz = temp[2] MAD temp[5].z, src0.__x, src0.111, -src1.__y MAD temp[5].w, src2.x, src1.z, src0.0 45: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].x, src0.x__, src0.111, src1.z__ 46: src0.w = temp[5], src1.w = const[14] MAD temp[5].z, src0.__w, src0.111, -src1.__w 47: src0.xyz = temp[5] FRC temp[15].y, src0._z_ 48: src0.xyz = temp[5], src1.xyz = temp[15] MAD temp[6].y, src0._z_, src0.111, -src1._y_ 49: src0.xyz = temp[5], src1.xyz = temp[6] MAD temp[5].z, src0.__z, src0.111, -src1.__y 50: src0.xyz = temp[5], src1.xyz = const[13] MAD temp[6].w, src0.z, src0.1, -src1.x 51: src0.w = temp[6] MAD temp[7].x, |src0.w__|, src0.111, src0.000 52: src0.xyz = temp[7], src1.xyz = const[14] MAD temp[6].z, src0.__x, src0.111, -src1.__y 53: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[4].x, src0.x__, src0.111, src1.z__ 54: src0.xyz = temp[2], src1.xyz = const[15] MAD temp[6].w, src0.x, src1.x, src0.0 55: src0.xyz = const[15], src0.w = temp[6] MAD temp[6].z, src0.__w, src0.111, -src0.__y 56: src0.xyz = temp[6], src1.xyz = const[12] FRC temp[16].y, src0._z_ MAD temp[6].w, src1.y, src0.1, src0.0 57: src0.xyz = temp[6], src1.xyz = temp[16] MAD temp[7].y, src0._z_, src0.111, -src1._y_ 58: src0.xyz = temp[6], src1.xyz = temp[7] MAD temp[6].z, src0.__z, src0.111, -src1.__y 59: src0.xyz = temp[6], src1.xyz = const[13] MAD temp[7].w, src0.z, src0.1, -src1.x 60: src0.w = temp[7] MAD temp[8].x, |src0.w__|, src0.111, src0.000 61: src0.xyz = temp[8], src1.xyz = const[14] MAD temp[7].z, src0.__x, src0.111, -src1.__y 62: src0.xyz = temp[4], src1.xyz = temp[7] MAD temp[4].x, src0.x__, src0.111, src1.z__ 63: src0.xyz = temp[4], src1.xyz = const[13], src2.xyz = const[15] MAD temp[7].z, src0.__x, src1.__z, src2.__z 64: src0.xyz = temp[7], src1.xyz = temp[1] MAD temp[3].w, src0.z, src1.y, src0.0 65: src0.w = temp[3] MAD temp[1].y, src0._w_, src0.111, src0.000 66: src0.w = temp[3] MAD temp[6].x, src0.w__, src0.111, src0.000 67: src0.w = temp[3] MAD temp[1].z, src0.__w, src0.__w, src0.000 68: src0.xyz = temp[1] MAD temp[1].w, src0.z, src0.y, src0.0 69: src0.w = temp[1] MAD temp[6].y, src0._w_, src0.111, src0.000 70: src0.xyz = temp[1], src0.w = const[13] MAD temp[1].z, src0.__y, src0.111, -src0.__w 71: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[7].x, src0.z__, src1.x__ 72: src0.xyz = temp[7], src1.xyz = const[13] MAD temp[1].z, src0.__x, src1.__y, src0.000 73: src0.xyz = temp[1] MAD temp[6].z, src0.__z, src0.111, src0.000 74: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[6], src1.w = temp[6] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 75: 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 Compiler: after pair register allocation: # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[9].xyz, temp[1], 2D[0]; 2: src0.xyz = temp[0] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 3: src0.w = temp[1] RSQ temp[1].w, |src0.w| 4: src0.xyz = temp[0], src0.w = temp[1], src1.xyz = const[12] MAD temp[3].xyz, src0.xyz, src0.www, src0.000 MAD temp[9].w, src1.y, src0.1, src0.0 5: src0.xyz = const[9], src0.w = const[9], src1.xyz = temp[9], src1.w = temp[9] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 6: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 7: src0.xyz = temp[3], src0.w = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 RSQ temp[1].w, |src0.w| 8: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = const[12] MAD temp[3].xyz, src0.xyz, src0.www, src0.000 MAD temp[8].w, src1.y, src0.1, src0.0 9: src0.xyz = temp[3] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 10: src0.xyz = temp[2], src1.xyz = const[12] MAD temp[6].xyz, src0.xyz, src0.111, src0.000 MAX temp[1].w, src0.z, src1.x 11: src0.xyz = const[6], src0.w = const[6], src1.w = temp[1] MAD temp[7].xyz, src0.xyz, src1.www, src0.000 MAD temp[7].w, src0.w, src1.w, src0.0 12: src0.xyz = const[12], src0.w = temp[7], src1.xyz = temp[7] MAD temp[3].xyz, src0.xxx, src0.111, src1.xyz MAD temp[3].w, src0.x, src0.1, src0.w 13: src0.xyz = temp[6], src1.xyz = const[7], src2.xyz = const[12] MAD temp[0].y, -src0._y_, src0.111, src0.000 MAD temp[1].w, src1.x, src0.1, src2.z 14: src0.xyz = temp[6] MAD temp[0].x, -src0.x__, src0.111, src0.000 MAD temp[0].w, src0.z, src0.1, src0.0 15: src0.w = temp[0] MAD temp[0].z, src0.__w, src0.111, src0.000 16: src0.xyz = temp[0], src1.xyz = temp[1] DP3, src0.xyz, src1.xyz DP3 temp[6].w, src0._, src0._ 17: src0.xyz = const[12], src0.w = temp[6] MAX temp[0].w, src0.w, src0.x 18: src0.w = temp[0] LG2 temp[0].w, src0.w 19: src0.w = temp[0], src1.w = temp[1] MAD temp[0].w, src0.w, src1.w, src0.0 20: src0.w = temp[0] EX2 temp[6].w, src0.w 21: src0.xyz = const[8], src0.w = temp[6] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 22: src0.xyz = const[12], src1.xyz = temp[5] MAD temp[8].xyz, src0.xxx, src0.111, src1.xyz 23: src0.xyz = const[10], src0.w = const[10], src1.xyz = temp[9], src1.w = temp[9] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 24: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[3], src1.w = temp[3] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 25: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[1], src2.w = temp[1] MAD temp[3].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[3].w, src0.w, src1.w, src2.w 26: src0.xyz = const[12], src0.w = temp[3], src1.xyz = temp[3] MAD temp[0].xyz, src0.xxx, src0.111, src1.xyz MAD temp[0].w, src0.x, src0.1, src0.w 27: src0.xyz = const[11], src0.w = const[11], src1.xyz = temp[8], src1.w = temp[8] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 29: src0.xyz = const[1], src1.xyz = const[13] MAD temp[1].x, src0.x__, src0.111, -src1.x__ 30: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[1].y, src0._x_, src1._x_ 31: src0.xyz = const[2], src1.xyz = const[13], src2.xyz = temp[1] MAD temp[3].x, src0.x__, src1.z__, src0.000 MAD temp[2].w, src2.y, src1.y, src0.0 32: src0.xyz = temp[3], src0.w = temp[2], src1.w = const[13] MAD temp[1].y, src0._w_, src0._w_, src0.000 MAD temp[4].w, src0.x, src1.w, src0.0 33: src0.xyz = temp[3] FRC temp[9].x, src0.x__ 34: src0.xyz = temp[3], src1.xyz = temp[9] MAD temp[4].x, src0.x__, src0.111, -src1.x__ 35: src0.xyz = temp[3], src1.xyz = temp[4] MAD temp[3].z, src0.__x, src0.111, -src1.__x 36: src0.xyz = temp[3], src1.xyz = const[13] MAD temp[4].y, src0._z_, src0.111, -src1._x_ 37: src0.xyz = temp[4] MAD temp[4].x, |src0.y__|, src0.111, src0.000 38: src0.xyz = const[14], src0.w = temp[4] MAD temp[4].y, src0._w_, src0.111, -src0._x_ 39: src0.xyz = temp[4] FRC temp[9].y, src0._y_ 40: src0.xyz = temp[4], src1.xyz = temp[9] MAD temp[5].y, src0._y_, src0.111, -src1._y_ 41: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].y, src0._y_, src0.111, -src1._y_ 42: src0.xyz = temp[4], src1.xyz = const[13] MAD temp[5].w, src0.y, src0.1, -src1.x 43: src0.w = temp[5] MAD temp[6].x, |src0.w__|, src0.111, src0.000 44: src0.xyz = temp[6], src1.xyz = const[14], src2.xyz = temp[3] MAD temp[5].z, src0.__x, src0.111, -src1.__y MAD temp[5].w, src2.x, src1.z, src0.0 45: src0.xyz = temp[4], src1.xyz = temp[5] MAD temp[4].x, src0.x__, src0.111, src1.z__ 46: src0.w = temp[5], src1.w = const[14] MAD temp[5].z, src0.__w, src0.111, -src1.__w 47: src0.xyz = temp[5] FRC temp[9].y, src0._z_ 48: src0.xyz = temp[5], src1.xyz = temp[9] MAD temp[6].y, src0._z_, src0.111, -src1._y_ 49: src0.xyz = temp[5], src1.xyz = temp[6] MAD temp[5].z, src0.__z, src0.111, -src1.__y 50: src0.xyz = temp[5], src1.xyz = const[13] MAD temp[6].w, src0.z, src0.1, -src1.x 51: src0.w = temp[6] MAD temp[7].x, |src0.w__|, src0.111, src0.000 52: src0.xyz = temp[7], src1.xyz = const[14] MAD temp[6].z, src0.__x, src0.111, -src1.__y 53: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[4].x, src0.x__, src0.111, src1.z__ 54: src0.xyz = temp[3], src1.xyz = const[15] MAD temp[6].w, src0.x, src1.x, src0.0 55: src0.xyz = const[15], src0.w = temp[6] MAD temp[6].z, src0.__w, src0.111, -src0.__y 56: src0.xyz = temp[6], src1.xyz = const[12] FRC temp[3].y, src0._z_ MAD temp[6].w, src1.y, src0.1, src0.0 57: src0.xyz = temp[6], src1.xyz = temp[3] MAD temp[7].y, src0._z_, src0.111, -src1._y_ 58: src0.xyz = temp[6], src1.xyz = temp[7] MAD temp[6].z, src0.__z, src0.111, -src1.__y 59: src0.xyz = temp[6], src1.xyz = const[13] MAD temp[7].w, src0.z, src0.1, -src1.x 60: src0.w = temp[7] MAD temp[8].x, |src0.w__|, src0.111, src0.000 61: src0.xyz = temp[8], src1.xyz = const[14] MAD temp[7].z, src0.__x, src0.111, -src1.__y 62: src0.xyz = temp[4], src1.xyz = temp[7] MAD temp[4].x, src0.x__, src0.111, src1.z__ 63: src0.xyz = temp[4], src1.xyz = const[13], src2.xyz = const[15] MAD temp[7].z, src0.__x, src1.__z, src2.__z 64: src0.xyz = temp[7], src1.xyz = temp[1] MAD temp[2].w, src0.z, src1.y, src0.0 65: src0.w = temp[2] MAD temp[1].y, src0._w_, src0.111, src0.000 66: src0.w = temp[2] MAD temp[6].x, src0.w__, src0.111, src0.000 67: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.__w, src0.000 68: src0.xyz = temp[1] MAD temp[1].w, src0.z, src0.y, src0.0 69: src0.w = temp[1] MAD temp[6].y, src0._w_, src0.111, src0.000 70: src0.xyz = temp[1], src0.w = const[13] MAD temp[1].z, src0.__y, src0.111, -src0.__w 71: src0.xyz = temp[1], src1.xyz = const[12] MAX temp[7].x, src0.z__, src1.x__ 72: src0.xyz = temp[7], src1.xyz = const[13] MAD temp[1].z, src0.__x, src1.__y, src0.000 73: src0.xyz = temp[1] MAD temp[6].z, src0.__z, src0.111, src0.000 74: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[6], src1.w = temp[6] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[0].w, src0.w, src0.1, src1.w 75: 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 r300compiler error: r300_fragprog_emit.c::emit_alu(): Too many ALU instructions pc=8************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 t0 t0 -> (00000000) w: t0 t0 t0 -> t1.w (00840000) xyz: t0.xyz t0.xyz t0.xxx op: 00804000 w: 1.0 1.0 t0.x op: 00800891 oolite: r300_fs.c:209: r300_translate_fragment_shader: Assertion `0' failed.