kwin(26212) KWin::CompositingPrefs::detectDriverAndVersion: GL vendor is "X.Org R300 Project" kwin(26212) KWin::CompositingPrefs::detectDriverAndVersion: GL renderer is "Gallium 0.4 on RV410" kwin(26212) KWin::CompositingPrefs::detectDriverAndVersion: GL version is "2.1 Mesa 7.9-devel" kwin(26212) KWin::CompositingPrefs::detectDriverAndVersion: Detected driver "unknown" , version "" r300: Initial fragment program 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 'transform loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'emulate branches' # 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 '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 'emulate loops' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # 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 '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]; 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 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=0************************************* 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 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], COLOR, 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 'transform loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'emulate branches' # 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 '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 'emulate loops' # 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 '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 'register rename' # 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 '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 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], COLOR, PERSPECTIVE 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 'transform loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'emulate branches' # 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 '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 'emulate loops' # 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 '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 'register rename' # 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 '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=2************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=3************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=4************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program 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 'transform loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0], input[0], const[0]; 1: TEX temp[1], temp[0], 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], input[0], const[0]; 1: TEX temp[1], temp[0], 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 1: TEX temp[1], temp[0].xy__, 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 1: BEGIN_TEX; 2: TEX temp[1], temp[0].xy__, 2D[0]; 3: 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 1: BEGIN_TEX; 2: TEX temp[0], temp[0].xy__, 2D[0]; 3: 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=5************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c0 t0 bias-> t0.xy (01800800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TEX t0, t0, texture[0] (00008000) 1: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MUL OUT[0], TEMP[0], CONST[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: MUL output[0], temp[1], const[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[0].xy_w, 2D[0]; 3: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[0], temp[0].xy_w, 2D[0]; 3: 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=6************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TXP t0, t0, texture[0] (00018000) 1: xyz: t0 c0 t0 bias-> o0.xyz (1c000800) w: t0 c0 t0 bias-> o0.w (01000800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MUL OUT[0], TEMP[0], CONST[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: MUL output[0], temp[1], const[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[0].xy_w, 2D[0]; 3: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[0], temp[0].xy_w, 2D[0]; 3: 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=7************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TXP t0, t0, texture[0] (00018000) 1: xyz: t0 c0 t0 bias-> o0.xyz (1c000800) w: t0 c0 t0 bias-> o0.w (01000800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1], temp[0].xy_w, 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[0].xy_w, 2D[0]; 3: 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[0], temp[0].xy_w, 2D[0]; 3: 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=8************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c0 t0 bias-> t0.xy (01800800) w: t0 c0 t0 bias-> t0.w (00800800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TXP t0, t0, texture[0] (00018000) 1: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[0].xy_w; 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1], temp[0].xy_w, 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[0].xy_w, 2D[0]; 3: 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[0], temp[0].xy_w, 2D[0]; 3: 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=9************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c0 t0 bias-> t0.xy (01800800) w: t0 c0 t0 bias-> t0.w (00800800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TXP t0, t0, texture[0] (00018000) 1: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=10************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=11************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 kwin(26212): OpenGL compositing self-check failed, disabling compositing. kwin(26212) KWin::SceneOpenGL::selfCheckFinish: Compositing checks disabled, proceeding regardless of self-check failure. r300: Initial fragment program FRAG DCL OUT[0], COLOR DCL CONST[0] 0: MOV OUT[0], CONST[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], const[0]; 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]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: 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 Fragment Program: 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 Fragment Program: after '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=12************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: c0 t0 t0 bias-> o0.xyz (1c000020) w: c0 t0 t0 bias-> o0.w (01000020) xyz: c0.xyz 1.0 0.0 op: 00050a80 w: c0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL OUT[0], COLOR DCL CONST[0] 0: MOV OUT[0], CONST[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], const[0]; 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]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], const[0]; Fragment Program: 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 Fragment Program: 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 Fragment Program: after '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=13************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: c0 t0 t0 bias-> o0.xyz (1c000020) w: c0 t0 t0 bias-> o0.w (01000020) xyz: c0.xyz 1.0 0.0 op: 00050a80 w: c0.w 1.0 0.0 op: 00040889 r300: Initial fragment program 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 'transform loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'emulate branches' # 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 '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 'emulate loops' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # 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 '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]; 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 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=14************************************* 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 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM FLT32 { 0,0000, 0,0000, 0,0000, 0,0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 pc=15************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 0.0 1.0 0.0 op: 00040890 r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM FLT32 { 0,0000, 0,0000, 0,0000, 0,0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0000; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.0, src0.1, src0.0 pc=16************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 0.0 1.0 0.0 op: 00040890 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MUL OUT[0].xyz, TEMP[0], CONST[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0].xyz, temp[0], const[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0].xyz, temp[0], const[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[1].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 pc=17************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 c0 t0 bias-> o0.xyz (1c000800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MUL OUT[0].xyz, TEMP[0], CONST[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0].xyz, temp[0], const[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0].xyz, temp[0], const[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MUL output[0].xyz, temp[1].xyz_, const[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 pc=18************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 c0 t0 bias-> o0.xyz (1c000800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=19************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], RECT 1: MOV OUT[0].xyz, TEMP[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], RECT[0]; 1: MOV output[0].xyz, temp[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MOV output[0].xyz, temp[0]; 3: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[0].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: MOV output[0].xyz, temp[1].xyz_; 3: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[0] 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], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[1].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 2: BEGIN_TEX; 3: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 4: src0.xyz = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 pc=20************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 1: xyz: t0 t0 t0 bias-> (00000000) w: c0 t0 t0 bias-> o0.w (01000020) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: c0.w 1.0 0.0 op: 00040889 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400002) TEX: TXP t0, t0, texture[0] (00018000) 2: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..52] DCL CONST[54] DCL TEMP[0..4] DCL ADDR[0] 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[1], TEMP[0], CONST[1] 2: MOV TEMP[0], TEMP[1] 3: MOV TEMP[1].x, CONST[54].xxxx 4: BGNLOOP :23 5: SGE TEMP[2].x, TEMP[1].xxxx, CONST[0].xxxx 6: IF TEMP[2].xxxx :8 7: BRK 8: ENDIF 9: ARL ADDR[0].x, TEMP[1].xxxx 10: ADD TEMP[2].xy, IN[0].xyyy, -CONST[ADDR[0].x+27].xyyy 11: TEX TEMP[3], TEMP[2].xyyy, SAMP[0], 2D 12: ARL ADDR[0].x, TEMP[1].xxxx 13: MAD TEMP[2], TEMP[3], CONST[ADDR[0].x+1], TEMP[0] 14: MOV TEMP[0], TEMP[2] 15: ARL ADDR[0].x, TEMP[1].xxxx 16: ADD TEMP[3].xy, IN[0].xyyy, CONST[ADDR[0].x+27].xyyy 17: TEX TEMP[4], TEMP[3].xyyy, SAMP[0], 2D 18: ARL ADDR[0].x, TEMP[1].xxxx 19: MAD TEMP[3], TEMP[4], CONST[ADDR[0].x+1], TEMP[2] 20: MOV TEMP[0], TEMP[3] 21: ADD TEMP[2].x, TEMP[1].xxxx, CONST[54].xxxx 22: MOV TEMP[1].x, TEMP[2].xxxx 23: ENDLOOP :4 24: MOV OUT[0], TEMP[0] 25: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: ARL addr[0].x, temp[1].xxxx; 8: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 9: TEX temp[3], temp[2].xyyy, 2D[0]; 10: ARL addr[0].x, temp[1].xxxx; 11: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 12: MOV temp[0], temp[2]; 13: ARL addr[0].x, temp[1].xxxx; 14: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 15: TEX temp[4], temp[3].xyyy, 2D[0]; 16: ARL addr[0].x, temp[1].xxxx; 17: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 18: MOV temp[0], temp[3]; 19: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 20: MOV temp[1].x, temp[2].xxxx; 21: ENDIF; 22: ENDLOOP; 23: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 6: MOV temp[5].x, temp[2].xxxx; 7: MOV temp[8], temp[0]; 8: MOV temp[3], temp[1]; 9: MOV temp[6], temp[2]; 10: MOV temp[7], temp[3]; 11: MOV temp[9], temp[4]; 12: ARL addr[0].x, temp[1].xxxx; 13: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 14: TEX temp[7], temp[6].xyyy, 2D[0]; 15: ARL addr[0].x, temp[1].xxxx; 16: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 17: MOV temp[8], temp[6]; 18: ARL addr[0].x, temp[1].xxxx; 19: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 20: TEX temp[9], temp[7].xyyy, 2D[0]; 21: ARL addr[0].x, temp[1].xxxx; 22: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 23: MOV temp[8], temp[7]; 24: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 25: MOV temp[3].x, temp[6].xxxx; 26: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 27: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 28: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 29: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 30: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 31: ENDLOOP; 32: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[10], input[0].xyyy, const[55]; 1: TEX temp[0], temp[10], 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].xxxx; 5: BGNLOOP; 6: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 7: MOV temp[5].x, temp[2].xxxx; 8: MOV temp[8], temp[0]; 9: MOV temp[3], temp[1]; 10: MOV temp[6], temp[2]; 11: MOV temp[7], temp[3]; 12: MOV temp[9], temp[4]; 13: ARL addr[0].x, temp[1].xxxx; 14: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 15: MUL temp[11], temp[6].xyyy, const[55]; 16: TEX temp[7], temp[11], 2D[0]; 17: ARL addr[0].x, temp[1].xxxx; 18: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 19: MOV temp[8], temp[6]; 20: ARL addr[0].x, temp[1].xxxx; 21: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 22: MUL temp[12], temp[7].xyyy, const[55]; 23: TEX temp[9], temp[12], 2D[0]; 24: ARL addr[0].x, temp[1].xxxx; 25: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 26: MOV temp[8], temp[7]; 27: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 28: MOV temp[3].x, temp[6].xxxx; 29: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 30: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 31: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 32: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 33: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 34: ENDLOOP; 35: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[10], input[0].xyyy, const[55]; 1: TEX temp[0], temp[10], 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].xxxx; 5: BGNLOOP; 6: ADD temp[13], temp[1].xxxx, -const[0].xxxx; 7: CMP temp[2].x, temp[13], none.1111, none.0000; 8: MOV temp[5].x, temp[2].xxxx; 9: MOV temp[8], temp[0]; 10: MOV temp[3], temp[1]; 11: MOV temp[6], temp[2]; 12: MOV temp[7], temp[3]; 13: MOV temp[9], temp[4]; 14: ARL addr[0].x, temp[1].xxxx; 15: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 16: MUL temp[11], temp[6].xyyy, const[55]; 17: TEX temp[7], temp[11], 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 20: MOV temp[8], temp[6]; 21: ARL addr[0].x, temp[1].xxxx; 22: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 23: MUL temp[12], temp[7].xyyy, const[55]; 24: TEX temp[9], temp[12], 2D[0]; 25: ARL addr[0].x, temp[1].xxxx; 26: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 27: MOV temp[8], temp[7]; 28: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 29: MOV temp[3].x, temp[6].xxxx; 30: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 31: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 32: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 33: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 34: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 35: ENDLOOP; 36: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[10].xy, input[0].xy__, const[55].xy__; 1: TEX temp[0], temp[10].xy__, 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].x___; 5: BGNLOOP; 6: ADD temp[13].x, temp[1].x___, -const[0].x___; 7: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 8: MOV temp[5].x, temp[2].x___; 9: MOV temp[3].yzw, temp[1]._yzw; 10: ARL addr[0].x, temp[1].x___; 11: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 12: MUL temp[11].xy, temp[6].xy__, const[55].xy__; 13: TEX temp[7], temp[11].xy__, 2D[0]; 14: ARL addr[0].x, temp[1].x___; 15: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 16: ARL addr[0].x, temp[1].x___; 17: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 18: MUL temp[12].xy, temp[7].xy__, const[55].xy__; 19: TEX temp[9], temp[12].xy__, 2D[0]; 20: ARL addr[0].x, temp[1].x___; 21: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 22: MOV temp[8], temp[7]; 23: ADD temp[6].x, temp[1].x___, const[54].x___; 24: MOV temp[3].x, temp[6].x___; 25: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 26: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 27: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 28: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 29: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 30: ENDLOOP; 31: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[10].xy, input[0].xy__, const[55].xy__; 1: TEX temp[0], temp[10].xy__, 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].x___; 5: ADD temp[13].x, temp[1].x___, -const[0].x___; 6: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 7: MOV temp[5].x, temp[2].x___; 8: MOV temp[3].yzw, temp[1]._yzw; 9: ARL addr[0].x, temp[1].x___; 10: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 11: MUL temp[11].xy, temp[6].xy__, const[55].xy__; 12: TEX temp[7], temp[11].xy__, 2D[0]; 13: ARL addr[0].x, temp[1].x___; 14: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 15: ARL addr[0].x, temp[1].x___; 16: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 17: MUL temp[12].xy, temp[7].xy__, const[55].xy__; 18: TEX temp[9], temp[12].xy__, 2D[0]; 19: ARL addr[0].x, temp[1].x___; 20: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 21: MOV temp[8], temp[7]; 22: ADD temp[6].x, temp[1].x___, const[54].x___; 23: MOV temp[3].x, temp[6].x___; 24: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 25: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 26: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 27: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 28: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 29: ADD temp[13].x, temp[1].x___, -const[0].x___; 30: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 31: MOV temp[5].x, temp[2].x___; 32: MOV temp[3].yzw, temp[1]._yzw; 33: ARL addr[0].x, temp[1].x___; 34: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 35: MUL temp[11].xy, temp[6].xy__, const[55].xy__; 36: TEX temp[7], temp[11].xy__, 2D[0]; 37: ARL addr[0].x, temp[1].x___; 38: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 39: ARL addr[0].x, temp[1].x___; 40: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 41: MUL temp[12].xy, temp[7].xy__, const[55].xy__; 42: TEX temp[9], temp[12].xy__, 2D[0]; 43: ARL addr[0].x, temp[1].x___; 44: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 45: MOV temp[8], temp[7]; 46: ADD temp[6].x, temp[1].x___, const[54].x___; 47: MOV temp[3].x, temp[6].x___; 48: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 49: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 50: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 51: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 52: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 53: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[10].xy, input[0].xy__, const[55].xy__; 1: TEX temp[0], temp[10].xy__, 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].x___; 5: ADD temp[13].x, temp[1].x___, -const[0].x___; 6: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 7: MOV temp[5].x, temp[2].x___; 8: MOV temp[3].yzw, temp[1]._yzw; 9: ARL addr[0].x, temp[1].x___; 10: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 11: TEX temp[7], temp[11].xy__, 2D[0]; 12: ARL addr[0].x, temp[1].x___; 13: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 14: ARL addr[0].x, temp[1].x___; 15: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 16: TEX temp[9], temp[12].xy__, 2D[0]; 17: ARL addr[0].x, temp[1].x___; 18: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 19: MOV temp[8], temp[7]; 20: MOV temp[3].x, (const[54] + temp[1]).x___; 21: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 22: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 23: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 24: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 25: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 26: ADD temp[13].x, temp[1].x___, -const[0].x___; 27: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 28: MOV temp[5].x, temp[2].x___; 29: MOV temp[3].yzw, temp[1]._yzw; 30: ARL addr[0].x, temp[1].x___; 31: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 32: TEX temp[7], temp[11].xy__, 2D[0]; 33: ARL addr[0].x, temp[1].x___; 34: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 35: ARL addr[0].x, temp[1].x___; 36: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 37: TEX temp[9], temp[12].xy__, 2D[0]; 38: ARL addr[0].x, temp[1].x___; 39: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 40: MOV temp[3].x, (const[54] + temp[1]).x___; 41: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 42: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 43: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 44: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 45: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 46: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[10].xy, input[0].xy__, const[55].xy__; 1: TEX temp[0], temp[10].xy__, 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].x___; 5: ADD temp[13].x, temp[1].x___, -const[0].x___; 6: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 7: MOV temp[5].x, temp[2].x___; 8: MOV temp[3].yzw, temp[1]._yzw; 9: ARL addr[0].x, temp[1].x___; 10: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 11: TEX temp[7], temp[11].xy__, 2D[0]; 12: ARL addr[0].x, temp[1].x___; 13: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 14: ARL addr[0].x, temp[1].x___; 15: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 16: TEX temp[9], temp[12].xy__, 2D[0]; 17: ARL addr[0].x, temp[1].x___; 18: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 19: MOV temp[8], temp[7]; 20: MOV temp[3].x, (const[54] + temp[1]).x___; 21: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 22: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 23: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 24: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 25: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 26: ADD temp[13].x, temp[1].x___, -const[0].x___; 27: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 28: MOV temp[5].x, temp[2].x___; 29: MOV temp[3].yzw, temp[1]._yzw; 30: ARL addr[0].x, temp[1].x___; 31: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 32: TEX temp[7], temp[11].xy__, 2D[0]; 33: ARL addr[0].x, temp[1].x___; 34: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 35: ARL addr[0].x, temp[1].x___; 36: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 37: TEX temp[9], temp[12].xy__, 2D[0]; 38: ARL addr[0].x, temp[1].x___; 39: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 40: MOV temp[3].x, (const[54] + temp[1]).x___; 41: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 42: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 43: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 44: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 45: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 46: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[10].xy, input[0].xy__, const[55].xy__; 1: TEX temp[0], temp[10].xy__, 2D[0]; 2: MUL temp[1], temp[0], const[1]; 3: MOV temp[0], temp[1]; 4: MOV temp[1].x, const[54].x___; 5: ADD temp[13].x, temp[1].x___, -const[0].x___; 6: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 7: MOV temp[5].x, temp[2].x___; 8: MOV temp[3].yzw, temp[1]._yzw; 9: ARL addr[0].x, temp[1].x___; 10: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 11: TEX temp[7], temp[11].xy__, 2D[0]; 12: ARL addr[0].x, temp[1].x___; 13: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 14: ARL addr[0].x, temp[1].x___; 15: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 16: TEX temp[9], temp[12].xy__, 2D[0]; 17: ARL addr[0].x, temp[1].x___; 18: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 19: MOV temp[8], temp[7]; 20: MOV temp[3].x, (const[54] + temp[1]).x___; 21: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 22: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 23: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 24: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 25: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 26: ADD temp[13].x, temp[1].x___, -const[0].x___; 27: CMP temp[2].x, temp[13].x___, none.1___, none.0___; 28: MOV temp[5].x, temp[2].x___; 29: MOV temp[3].yzw, temp[1]._yzw; 30: ARL addr[0].x, temp[1].x___; 31: MUL temp[11].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 32: TEX temp[7], temp[11].xy__, 2D[0]; 33: ARL addr[0].x, temp[1].x___; 34: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 35: ARL addr[0].x, temp[1].x___; 36: MUL temp[12].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 37: TEX temp[9], temp[12].xy__, 2D[0]; 38: ARL addr[0].x, temp[1].x___; 39: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 40: MOV temp[3].x, (const[54] + temp[1]).x___; 41: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 42: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 43: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 44: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 45: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 46: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[55].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MUL temp[2], temp[1], const[1]; 3: MOV temp[3], temp[2]; 4: MOV temp[2].x, const[54].x___; 5: ADD temp[4].x, temp[2].x___, -const[0].x___; 6: CMP temp[5].x, temp[4].x___, none.1___, none.0___; 7: MOV temp[6].x, temp[5].x___; 8: MOV temp[7].yzw, temp[2]._yzw; 9: ARL addr[0].x, temp[2].x___; 10: MUL temp[8].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 11: TEX temp[9], temp[8].xy__, 2D[0]; 12: ARL addr[0].x, temp[2].x___; 13: MAD temp[10], temp[9], const[1 + addr[0]], temp[3]; 14: ARL addr[0].x, temp[2].x___; 15: MUL temp[11].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 16: TEX temp[12], temp[11].xy__, 2D[0]; 17: ARL addr[0].x, temp[2].x___; 18: MAD temp[13], temp[12], const[1 + addr[0]], temp[10]; 19: MOV temp[14], temp[13]; 20: MOV temp[7].x, (const[54] + temp[2]).x___; 21: CMP temp[15], -|temp[6].xxxx|, temp[12], temp[15]; 22: CMP temp[16], -|temp[6].xxxx|, temp[13], temp[7]; 23: CMP temp[5], -|temp[6].xxxx|, temp[10], temp[5]; 24: CMP temp[17], -|temp[6].xxxx|, temp[16], temp[2]; 25: CMP temp[18], -|temp[6].xxxx|, temp[14], temp[3]; 26: ADD temp[19].x, temp[17].x___, -const[0].x___; 27: CMP temp[5].x, temp[19].x___, none.1___, none.0___; 28: MOV temp[20].x, temp[5].x___; 29: MOV temp[16].yzw, temp[17]._yzw; 30: ARL addr[0].x, temp[17].x___; 31: MUL temp[21].xy, (input[0] - const[27 + addr[0]]).xy__, const[55].xy__; 32: TEX temp[22], temp[21].xy__, 2D[0]; 33: ARL addr[0].x, temp[17].x___; 34: MAD temp[23], temp[22], const[1 + addr[0]], temp[18]; 35: ARL addr[0].x, temp[17].x___; 36: MUL temp[24].xy, (const[27 + addr[0]] + input[0]).xy__, const[55].xy__; 37: TEX temp[25], temp[24].xy__, 2D[0]; 38: ARL addr[0].x, temp[17].x___; 39: MAD temp[26], temp[25], const[1 + addr[0]], temp[23]; 40: MOV temp[16].x, (const[54] + temp[17]).x___; 41: CMP temp[27], -|temp[20].xxxx|, temp[25], temp[15]; 42: CMP temp[28], -|temp[20].xxxx|, temp[26], temp[16]; 43: CMP temp[29], -|temp[20].xxxx|, temp[23], temp[5]; 44: CMP temp[30], -|temp[20].xxxx|, temp[28], temp[17]; 45: CMP temp[31], -|temp[20].xxxx|, temp[26], temp[18]; 46: MOV output[0], temp[31]; r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300 FP: Compiler Error: Fragment program does not support relative addressing of source operands. Using a dummy shader instead. r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM FLT32 { 0,0000, 1,0000, 0,0000, 0,0000} 0: MOV OUT[0], IMM[0].xxxy 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=21************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..52] DCL CONST[54] DCL TEMP[0..4] DCL ADDR[0] 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[1], TEMP[0], CONST[1] 2: MOV TEMP[0], TEMP[1] 3: MOV TEMP[1].x, CONST[54].xxxx 4: BGNLOOP :23 5: SGE TEMP[2].x, TEMP[1].xxxx, CONST[0].xxxx 6: IF TEMP[2].xxxx :8 7: BRK 8: ENDIF 9: ARL ADDR[0].x, TEMP[1].xxxx 10: ADD TEMP[2].xy, IN[0].xyyy, -CONST[ADDR[0].x+27].xyyy 11: TEX TEMP[3], TEMP[2].xyyy, SAMP[0], 2D 12: ARL ADDR[0].x, TEMP[1].xxxx 13: MAD TEMP[2], TEMP[3], CONST[ADDR[0].x+1], TEMP[0] 14: MOV TEMP[0], TEMP[2] 15: ARL ADDR[0].x, TEMP[1].xxxx 16: ADD TEMP[3].xy, IN[0].xyyy, CONST[ADDR[0].x+27].xyyy 17: TEX TEMP[4], TEMP[3].xyyy, SAMP[0], 2D 18: ARL ADDR[0].x, TEMP[1].xxxx 19: MAD TEMP[3], TEMP[4], CONST[ADDR[0].x+1], TEMP[2] 20: MOV TEMP[0], TEMP[3] 21: ADD TEMP[2].x, TEMP[1].xxxx, CONST[54].xxxx 22: MOV TEMP[1].x, TEMP[2].xxxx 23: ENDLOOP :4 24: MOV OUT[0], TEMP[0] 25: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SGE temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: BRK; 8: ENDIF; 9: ARL addr[0].x, temp[1].xxxx; 10: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 11: TEX temp[3], temp[2].xyyy, 2D[0]; 12: ARL addr[0].x, temp[1].xxxx; 13: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 14: MOV temp[0], temp[2]; 15: ARL addr[0].x, temp[1].xxxx; 16: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 17: TEX temp[4], temp[3].xyyy, 2D[0]; 18: ARL addr[0].x, temp[1].xxxx; 19: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 20: MOV temp[0], temp[3]; 21: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 22: MOV temp[1].x, temp[2].xxxx; 23: ENDLOOP; 24: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 6: IF temp[2].xxxx; 7: ARL addr[0].x, temp[1].xxxx; 8: ADD temp[2].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 9: TEX temp[3], temp[2].xyyy, 2D[0]; 10: ARL addr[0].x, temp[1].xxxx; 11: MAD temp[2], temp[3], const[1 + addr[0]], temp[0]; 12: MOV temp[0], temp[2]; 13: ARL addr[0].x, temp[1].xxxx; 14: ADD temp[3].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 15: TEX temp[4], temp[3].xyyy, 2D[0]; 16: ARL addr[0].x, temp[1].xxxx; 17: MAD temp[3], temp[4], const[1 + addr[0]], temp[2]; 18: MOV temp[0], temp[3]; 19: ADD temp[2].x, temp[1].xxxx, const[54].xxxx; 20: MOV temp[1].x, temp[2].xxxx; 21: ENDIF; 22: ENDLOOP; 23: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 6: MOV temp[5].x, temp[2].xxxx; 7: MOV temp[8], temp[0]; 8: MOV temp[3], temp[1]; 9: MOV temp[6], temp[2]; 10: MOV temp[7], temp[3]; 11: MOV temp[9], temp[4]; 12: ARL addr[0].x, temp[1].xxxx; 13: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 14: TEX temp[7], temp[6].xyyy, 2D[0]; 15: ARL addr[0].x, temp[1].xxxx; 16: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 17: MOV temp[8], temp[6]; 18: ARL addr[0].x, temp[1].xxxx; 19: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 20: TEX temp[9], temp[7].xyyy, 2D[0]; 21: ARL addr[0].x, temp[1].xxxx; 22: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 23: MOV temp[8], temp[7]; 24: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 25: MOV temp[3].x, temp[6].xxxx; 26: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 27: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 28: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 29: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 30: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 31: ENDLOOP; 32: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: SLT temp[2].x, temp[1].xxxx, const[0].xxxx; 6: MOV temp[5].x, temp[2].xxxx; 7: MOV temp[8], temp[0]; 8: MOV temp[3], temp[1]; 9: MOV temp[6], temp[2]; 10: MOV temp[7], temp[3]; 11: MOV temp[9], temp[4]; 12: ARL addr[0].x, temp[1].xxxx; 13: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 14: TEX temp[7], temp[6].xyyy, 2D[0]; 15: ARL addr[0].x, temp[1].xxxx; 16: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 17: MOV temp[8], temp[6]; 18: ARL addr[0].x, temp[1].xxxx; 19: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 20: TEX temp[9], temp[7].xyyy, 2D[0]; 21: ARL addr[0].x, temp[1].xxxx; 22: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 23: MOV temp[8], temp[7]; 24: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 25: MOV temp[3].x, temp[6].xxxx; 26: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 27: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 28: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 29: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 30: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 31: ENDLOOP; 32: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].xxxx; 4: BGNLOOP; 5: ADD temp[10], temp[1].xxxx, -const[0].xxxx; 6: CMP temp[2].x, temp[10], none.1111, none.0000; 7: MOV temp[5].x, temp[2].xxxx; 8: MOV temp[8], temp[0]; 9: MOV temp[3], temp[1]; 10: MOV temp[6], temp[2]; 11: MOV temp[7], temp[3]; 12: MOV temp[9], temp[4]; 13: ARL addr[0].x, temp[1].xxxx; 14: ADD temp[6].xy, input[0].xyyy, -const[27 + addr[0]].xyyy; 15: TEX temp[7], temp[6].xyyy, 2D[0]; 16: ARL addr[0].x, temp[1].xxxx; 17: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 18: MOV temp[8], temp[6]; 19: ARL addr[0].x, temp[1].xxxx; 20: ADD temp[7].xy, input[0].xyyy, const[27 + addr[0]].xyyy; 21: TEX temp[9], temp[7].xyyy, 2D[0]; 22: ARL addr[0].x, temp[1].xxxx; 23: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 24: MOV temp[8], temp[7]; 25: ADD temp[6].x, temp[1].xxxx, const[54].xxxx; 26: MOV temp[3].x, temp[6].xxxx; 27: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 28: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 29: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 30: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 31: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 32: ENDLOOP; 33: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: BGNLOOP; 5: ADD temp[10].x, temp[1].x___, -const[0].x___; 6: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 7: MOV temp[5].x, temp[2].x___; 8: MOV temp[3].yzw, temp[1]._yzw; 9: ARL addr[0].x, temp[1].x___; 10: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 11: TEX temp[7], temp[6].xy__, 2D[0]; 12: ARL addr[0].x, temp[1].x___; 13: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 14: ARL addr[0].x, temp[1].x___; 15: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 16: TEX temp[9], temp[7].xy__, 2D[0]; 17: ARL addr[0].x, temp[1].x___; 18: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 19: MOV temp[8], temp[7]; 20: ADD temp[6].x, temp[1].x___, const[54].x___; 21: MOV temp[3].x, temp[6].x___; 22: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 23: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 24: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 25: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 26: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 27: ENDLOOP; 28: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: ADD temp[10].x, temp[1].x___, -const[0].x___; 5: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 6: MOV temp[5].x, temp[2].x___; 7: MOV temp[3].yzw, temp[1]._yzw; 8: ARL addr[0].x, temp[1].x___; 9: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 10: TEX temp[7], temp[6].xy__, 2D[0]; 11: ARL addr[0].x, temp[1].x___; 12: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 13: ARL addr[0].x, temp[1].x___; 14: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 15: TEX temp[9], temp[7].xy__, 2D[0]; 16: ARL addr[0].x, temp[1].x___; 17: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 18: MOV temp[8], temp[7]; 19: ADD temp[6].x, temp[1].x___, const[54].x___; 20: MOV temp[3].x, temp[6].x___; 21: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 22: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 23: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 24: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 25: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 26: ADD temp[10].x, temp[1].x___, -const[0].x___; 27: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 28: MOV temp[5].x, temp[2].x___; 29: MOV temp[3].yzw, temp[1]._yzw; 30: ARL addr[0].x, temp[1].x___; 31: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 32: TEX temp[7], temp[6].xy__, 2D[0]; 33: ARL addr[0].x, temp[1].x___; 34: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 35: ARL addr[0].x, temp[1].x___; 36: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 37: TEX temp[9], temp[7].xy__, 2D[0]; 38: ARL addr[0].x, temp[1].x___; 39: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 40: MOV temp[8], temp[7]; 41: ADD temp[6].x, temp[1].x___, const[54].x___; 42: MOV temp[3].x, temp[6].x___; 43: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 44: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 45: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 46: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 47: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 48: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: ADD temp[10].x, temp[1].x___, -const[0].x___; 5: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 6: MOV temp[5].x, temp[2].x___; 7: MOV temp[3].yzw, temp[1]._yzw; 8: ARL addr[0].x, temp[1].x___; 9: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 10: TEX temp[7], temp[6].xy__, 2D[0]; 11: ARL addr[0].x, temp[1].x___; 12: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 13: ARL addr[0].x, temp[1].x___; 14: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 15: TEX temp[9], temp[7].xy__, 2D[0]; 16: ARL addr[0].x, temp[1].x___; 17: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 18: MOV temp[8], temp[7]; 19: MOV temp[3].x, (const[54] + temp[1]).x___; 20: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 21: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 22: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 23: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 24: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 25: ADD temp[10].x, temp[1].x___, -const[0].x___; 26: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 27: MOV temp[5].x, temp[2].x___; 28: MOV temp[3].yzw, temp[1]._yzw; 29: ARL addr[0].x, temp[1].x___; 30: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 31: TEX temp[7], temp[6].xy__, 2D[0]; 32: ARL addr[0].x, temp[1].x___; 33: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 34: ARL addr[0].x, temp[1].x___; 35: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 36: TEX temp[9], temp[7].xy__, 2D[0]; 37: ARL addr[0].x, temp[1].x___; 38: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 39: MOV temp[3].x, (const[54] + temp[1]).x___; 40: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 41: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 42: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 43: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 44: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 45: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: ADD temp[10].x, temp[1].x___, -const[0].x___; 5: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 6: MOV temp[5].x, temp[2].x___; 7: MOV temp[3].yzw, temp[1]._yzw; 8: ARL addr[0].x, temp[1].x___; 9: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 10: TEX temp[7], temp[6].xy__, 2D[0]; 11: ARL addr[0].x, temp[1].x___; 12: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 13: ARL addr[0].x, temp[1].x___; 14: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 15: TEX temp[9], temp[7].xy__, 2D[0]; 16: ARL addr[0].x, temp[1].x___; 17: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 18: MOV temp[8], temp[7]; 19: MOV temp[3].x, (const[54] + temp[1]).x___; 20: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 21: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 22: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 23: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 24: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 25: ADD temp[10].x, temp[1].x___, -const[0].x___; 26: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 27: MOV temp[5].x, temp[2].x___; 28: MOV temp[3].yzw, temp[1]._yzw; 29: ARL addr[0].x, temp[1].x___; 30: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 31: TEX temp[7], temp[6].xy__, 2D[0]; 32: ARL addr[0].x, temp[1].x___; 33: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 34: ARL addr[0].x, temp[1].x___; 35: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 36: TEX temp[9], temp[7].xy__, 2D[0]; 37: ARL addr[0].x, temp[1].x___; 38: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 39: MOV temp[3].x, (const[54] + temp[1]).x___; 40: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 41: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 42: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 43: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 44: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 45: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[0], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: ADD temp[10].x, temp[1].x___, -const[0].x___; 5: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 6: MOV temp[5].x, temp[2].x___; 7: MOV temp[3].yzw, temp[1]._yzw; 8: ARL addr[0].x, temp[1].x___; 9: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 10: TEX temp[7], temp[6].xy__, 2D[0]; 11: ARL addr[0].x, temp[1].x___; 12: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 13: ARL addr[0].x, temp[1].x___; 14: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 15: TEX temp[9], temp[7].xy__, 2D[0]; 16: ARL addr[0].x, temp[1].x___; 17: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 18: MOV temp[8], temp[7]; 19: MOV temp[3].x, (const[54] + temp[1]).x___; 20: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 21: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 22: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 23: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 24: CMP temp[0], -|temp[5].xxxx|, temp[8], temp[0]; 25: ADD temp[10].x, temp[1].x___, -const[0].x___; 26: CMP temp[2].x, temp[10].x___, none.1___, none.0___; 27: MOV temp[5].x, temp[2].x___; 28: MOV temp[3].yzw, temp[1]._yzw; 29: ARL addr[0].x, temp[1].x___; 30: ADD temp[6].xy, input[0].xy__, -const[27 + addr[0]].xy__; 31: TEX temp[7], temp[6].xy__, 2D[0]; 32: ARL addr[0].x, temp[1].x___; 33: MAD temp[6], temp[7], const[1 + addr[0]], temp[0]; 34: ARL addr[0].x, temp[1].x___; 35: ADD temp[7].xy, input[0].xy__, const[27 + addr[0]].xy__; 36: TEX temp[9], temp[7].xy__, 2D[0]; 37: ARL addr[0].x, temp[1].x___; 38: MAD temp[7], temp[9], const[1 + addr[0]], temp[6]; 39: MOV temp[3].x, (const[54] + temp[1]).x___; 40: CMP temp[4], -|temp[5].xxxx|, temp[9], temp[4]; 41: CMP temp[3], -|temp[5].xxxx|, temp[7], temp[3]; 42: CMP temp[2], -|temp[5].xxxx|, temp[6], temp[2]; 43: CMP temp[1], -|temp[5].xxxx|, temp[3], temp[1]; 44: CMP temp[0], -|temp[5].xxxx|, temp[7], temp[0]; 45: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[1], temp[0], const[1]; 2: MOV temp[2], temp[1]; 3: MOV temp[1].x, const[54].x___; 4: ADD temp[3].x, temp[1].x___, -const[0].x___; 5: CMP temp[4].x, temp[3].x___, none.1___, none.0___; 6: MOV temp[5].x, temp[4].x___; 7: MOV temp[6].yzw, temp[1]._yzw; 8: ARL addr[0].x, temp[1].x___; 9: ADD temp[7].xy, input[0].xy__, -const[27 + addr[0]].xy__; 10: TEX temp[8], temp[7].xy__, 2D[0]; 11: ARL addr[0].x, temp[1].x___; 12: MAD temp[7], temp[8], const[1 + addr[0]], temp[2]; 13: ARL addr[0].x, temp[1].x___; 14: ADD temp[8].xy, input[0].xy__, const[27 + addr[0]].xy__; 15: TEX temp[9], temp[8].xy__, 2D[0]; 16: ARL addr[0].x, temp[1].x___; 17: MAD temp[10], temp[9], const[1 + addr[0]], temp[7]; 18: MOV temp[11], temp[10]; 19: MOV temp[6].x, (const[54] + temp[1]).x___; 20: CMP temp[12], -|temp[5].xxxx|, temp[9], temp[12]; 21: CMP temp[13], -|temp[5].xxxx|, temp[10], temp[6]; 22: CMP temp[4], -|temp[5].xxxx|, temp[7], temp[4]; 23: CMP temp[14], -|temp[5].xxxx|, temp[13], temp[1]; 24: CMP temp[15], -|temp[5].xxxx|, temp[11], temp[2]; 25: ADD temp[16].x, temp[14].x___, -const[0].x___; 26: CMP temp[4].x, temp[16].x___, none.1___, none.0___; 27: MOV temp[17].x, temp[4].x___; 28: MOV temp[13].yzw, temp[14]._yzw; 29: ARL addr[0].x, temp[14].x___; 30: ADD temp[7].xy, input[0].xy__, -const[27 + addr[0]].xy__; 31: TEX temp[18], temp[7].xy__, 2D[0]; 32: ARL addr[0].x, temp[14].x___; 33: MAD temp[19], temp[18], const[1 + addr[0]], temp[15]; 34: ARL addr[0].x, temp[14].x___; 35: ADD temp[18].xy, input[0].xy__, const[27 + addr[0]].xy__; 36: TEX temp[20], temp[18].xy__, 2D[0]; 37: ARL addr[0].x, temp[14].x___; 38: MAD temp[21], temp[20], const[1 + addr[0]], temp[19]; 39: MOV temp[13].x, (const[54] + temp[14]).x___; 40: CMP temp[22], -|temp[17].xxxx|, temp[20], temp[12]; 41: CMP temp[23], -|temp[17].xxxx|, temp[21], temp[13]; 42: CMP temp[24], -|temp[17].xxxx|, temp[19], temp[4]; 43: CMP temp[25], -|temp[17].xxxx|, temp[23], temp[14]; 44: CMP temp[26], -|temp[17].xxxx|, temp[21], temp[15]; 45: MOV output[0], temp[26]; r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300compiler error: Fragment program does not support relative addressing of source operands. r300 FP: Compiler Error: Fragment program does not support relative addressing of source operands. Using a dummy shader instead. r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM FLT32 { 0,0000, 1,0000, 0,0000, 0,0000} 0: MOV OUT[0], IMM[0].xxxy 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=22************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], 2D 1: MUL OUT[0], TEMP[0], CONST[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[0], const[1]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[1].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL output[0], temp[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[0].xyw, input[0].xy_w, const[1].xy_w; 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: MUL output[0], temp[1], const[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: TXP temp[1], temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[0].xy_w, 2D[0]; 3: src0.xyz = temp[1], src0.w = temp[1], 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[0], temp[0].xy_w, 2D[0]; 3: 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=23************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 c1 t0 bias-> t0.w (00800840) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.w c1.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TXP t0, t0, texture[0] (00018000) 1: xyz: t0 c0 t0 bias-> o0.xyz (1c000800) w: t0 c0 t0 bias-> o0.w (01000800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], 2D 1: MUL OUT[0], TEMP[0], CONST[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; 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].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[0].xy_w, 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], temp[0].xy_w, 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=24************************************* 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 bias-> o0.xyz (1c000800) w: t0 c0 t0 bias-> o0.w (01000800) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w c0.w 0.0 op: 00040509