r300: DRM version: 2.12.0, Name: ATI RS600, ID: 0x7942, GB: 1, Z: 1 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: NO, HiZ RAM: NO r300: DRM version: 2.12.0, Name: ATI RS600, ID: 0x7942, GB: 1, Z: 1 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: NO, HiZ RAM: NO 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 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=0************************************* Hardware program ---------------- code_offset_ext: 00000000 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], CONST[1], TEMP[0] 2: MOV OUT[0], TEMP[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[0], const[1], temp[0]; 2: 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[0], const[1], temp[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MUL temp[2], const[1], temp[1]; 2: MOV output[0], temp[2]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MUL temp[2], const[1], temp[1]; 2: MOV output[0], temp[2]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MUL temp[2], const[1], temp[1]; 2: MOV output[0], temp[2]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MUL temp[2], const[0], temp[1]; 2: MOV output[0], temp[2]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: src0.xyz = const[0], src0.w = const[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 2: src0.xyz = temp[2], src0.w = temp[2] 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[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src0.w = const[0], src1.xyz = temp[1], src1.w = temp[1] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src0.w = const[0], src1.xyz = temp[1], src1.w = temp[1] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src0.w = const[0], src1.xyz = temp[0], src1.w = temp[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.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=1************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: c0 t0 t0 bias-> t0.xyz (03800020) w: c0 t0 t0 bias-> t0.w (00800020) xyz: c0.xyz t0.xyz 0.0 op: 00050200 w: c0.w t0.w 0.0 op: 00040509 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], LINEAR 0: END Fragment Program: before compilation # Radeon Compiler Program Fragment Program: after 'rewrite depth out' # Radeon Compiler Program Fragment Program: after 'transform KILP' # Radeon Compiler Program Fragment Program: after 'transform loops' # Radeon Compiler Program Fragment Program: after 'emulate branches' # Radeon Compiler Program Fragment Program: after 'transform TEX' # Radeon Compiler Program Fragment Program: after 'native rewrite' # Radeon Compiler Program Fragment Program: after 'deadcode' # Radeon Compiler Program Fragment Program: after 'emulate loops' # Radeon Compiler Program Fragment Program: after 'register rename' # Radeon Compiler Program Fragment Program: after 'dataflow optimize' # Radeon Compiler Program Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program Fragment Program: after 'dead constants' # Radeon Compiler Program Fragment Program: after 'pair translate' # Radeon Compiler Program Fragment Program: after 'pair scheduling' # Radeon Compiler Program Fragment Program: after 'dead sources' # Radeon Compiler Program Fragment Program: after 'register allocation' # Radeon Compiler Program pc=2************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL IMM FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV TEMP[1].w, IMM[0].xxxx 2: MOV TEMP[1].xyz, CONST[1].xyzx 3: MUL TEMP[1].xyz, TEMP[0], TEMP[1] 4: MOV TEMP[1].xyz, TEMP[1].xyzx 5: MOV TEMP[1].w, TEMP[0].wwww 6: MOV OUT[0], TEMP[1] 7: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0].1111; 2: MOV temp[1].xyz, const[1].xyzx; 3: MUL temp[1].xyz, temp[0], temp[1]; 4: MOV temp[1].xyz, temp[1].xyzx; 5: MOV temp[1].w, temp[0].wwww; 6: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV temp[1].xyz, const[1].xyz_; 2: MUL temp[1].xyz, temp[0].xyz_, temp[1].xyz_; 3: MOV temp[1].xyz, temp[1].xyz_; 4: MOV temp[1].w, temp[0].___w; 5: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV temp[1].xyz, const[1].xyz_; 2: MUL temp[1].xyz, temp[0].xyz_, temp[1].xyz_; 3: MOV temp[1].xyz, temp[1].xyz_; 4: MOV temp[1].w, temp[0].___w; 5: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MOV temp[3].xyz, const[1].xyz_; 2: MUL temp[4].xyz, temp[2].xyz_, temp[3].xyz_; 3: MOV temp[1].xyz, temp[4].xyz_; 4: MOV temp[1].w, temp[2].___w; 5: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[4].xyz, temp[2].xyz_, const[1].xyz_; 2: MOV temp[1].xyz, temp[4].xyz_; 3: MOV temp[1].w, temp[2].___w; 4: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[4].xyz, temp[2].xyz_, const[1].xyz_; 2: MOV temp[1].xyz, temp[4].xyz_; 3: MOV temp[1].w, temp[2].___w; 4: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[4].xyz, temp[2].xyz_, const[0].xyz_; 2: MOV temp[1].xyz, temp[4].xyz_; 3: MOV temp[1].w, temp[2].___w; 4: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 2: src0.xyz = temp[4] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 3: src0.w = temp[2] MAD temp[1].w, src0.w, src0.1, src0.0 4: 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: BEGIN_TEX; 1: TEX temp[2], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[4] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 4: 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 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[4] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 4: 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: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 4: 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=3************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 2, tex_end: 0 (code_addr: 00400080) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 c0 t0 bias-> t0.xyz (03800800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.w 1.0 0.0 op: 00040889 1: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 2: 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], 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 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=4************************************* Hardware program ---------------- code_offset_ext: 00000000 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL IMM FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TXP TEMP[0], IN[1].xyyw, SAMP[0], 2D 1: MUL TEMP[0], IN[0].xxxx, TEMP[0] 2: TXP TEMP[1].z, IN[1], SAMP[1], SHADOW2D 3: MUL TEMP[0].xyz, TEMP[0], TEMP[1].zzzz 4: MOV TEMP[0].xyz, TEMP[0].xyzx 5: MOV TEMP[0].w, IMM[0].xxxx 6: MOV OUT[0], TEMP[0] 7: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[1].z, input[1], 2DSHADOW[1]; 3: MUL temp[0].xyz, temp[0], temp[1].zzzz; 4: MOV temp[0].xyz, temp[0].xyzx; 5: MOV temp[0].w, temp[0].1111; 6: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[1].z, input[1], 2DSHADOW[1]; 3: MUL temp[0].xyz, temp[0], temp[1].zzzz; 4: MOV temp[0].xyz, temp[0].xyzx; 5: MOV temp[0].w, temp[0].1111; 6: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[1].z, input[1], 2DSHADOW[1]; 3: MUL temp[0].xyz, temp[0], temp[1].zzzz; 4: MOV temp[0].xyz, temp[0].xyzx; 5: MOV temp[0].w, temp[0].1111; 6: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[1].z, input[1], 2DSHADOW[1]; 3: MUL temp[0].xyz, temp[0], temp[1].zzzz; 4: MOV temp[0].xyz, temp[0].xyzx; 5: MOV temp[0].w, temp[0].1111; 6: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[1].z, input[1], 2DSHADOW[1]; 3: MUL temp[0].xyz, temp[0], temp[1].zzzz; 4: MOV temp[0].xyz, temp[0].xyzx; 5: MOV temp[0].w, temp[0].1111; 6: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[2], input[1], 2DSHADOW[1]; 3: RCP temp[3].w, input[1].wwww; 4: MUL_SAT temp[3].w, input[1].zzzz, temp[3].wwww; 5: ADD temp[3].w, -temp[3].wwww, temp[2].xxxx; 6: CMP temp[1].z, temp[3].www1, none.0001, none.1111; 7: MUL temp[0].xyz, temp[0], temp[1].zzzz; 8: MOV temp[0].xyz, temp[0].xyzx; 9: MOV temp[0].w, temp[0].1111; 10: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], input[0].xxxx, temp[0]; 2: TXP temp[2], input[1], 2DSHADOW[1]; 3: RCP temp[3].w, input[1].wwww; 4: MUL_SAT temp[3].w, input[1].zzzz, temp[3].wwww; 5: ADD temp[3].w, -temp[3].wwww, temp[2].xxxx; 6: CMP temp[1].z, temp[3].www1, none.0001, none.1111; 7: MUL temp[0].xyz, temp[0], temp[1].zzzz; 8: MOV temp[0].xyz, temp[0].xyzx; 9: MOV temp[0].w, temp[0].1111; 10: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[0].xyz, input[0].xxx_, temp[0].xyz_; 2: TXP temp[2].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[3].w, input[1].___w; 4: MUL_SAT temp[3].w, input[1].___z, temp[3].___w; 5: ADD temp[3].w, -temp[3].___w, temp[2].___x; 6: CMP temp[1].z, temp[3].__w_, none.__0_, none.__1_; 7: MUL temp[0].xyz, temp[0].xyz_, temp[1].zzz_; 8: MOV temp[0].xyz, temp[0].xyz_; 9: MOV temp[0].w, temp[0].___1; 10: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TXP temp[0].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[0].xyz, input[0].xxx_, temp[0].xyz_; 2: TXP temp[2].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[3].w, input[1].___w; 4: MUL_SAT temp[3].w, input[1].___z, temp[3].___w; 5: ADD temp[3].w, -temp[3].___w, temp[2].___x; 6: CMP temp[1].z, temp[3].__w_, none.__0_, none.__1_; 7: MUL temp[0].xyz, temp[0].xyz_, temp[1].zzz_; 8: MOV temp[0].xyz, temp[0].xyz_; 9: MOV temp[0].w, temp[0].___1; 10: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[5].xyz, input[0].xxx_, temp[4].xyz_; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[7].w, input[1].___w; 4: MUL_SAT temp[8].w, input[1].___z, temp[7].___w; 5: ADD temp[9].w, -temp[8].___w, temp[6].___x; 6: CMP temp[10].z, temp[9].__w_, none.__0_, none.__1_; 7: MUL temp[11].xyz, temp[5].xyz_, temp[10].zzz_; 8: MOV temp[0].xyz, temp[11].xyz_; 9: MOV temp[0].w, temp[0].___1; 10: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[5].xyz, input[0].xxx_, temp[4].xyz_; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[7].w, input[1].___w; 4: MUL_SAT temp[8].w, input[1].___z, temp[7].___w; 5: ADD temp[9].w, -temp[8].___w, temp[6].___x; 6: CMP temp[10].z, temp[9].__w_, none.__0_, none.__1_; 7: MUL temp[11].xyz, temp[5].xyz_, temp[10].zzz_; 8: MOV temp[0].xyz, temp[11].xyz_; 9: MOV temp[0].w, none.___1; 10: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[5].xyz, input[0].xxx_, temp[4].xyz_; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[7].w, input[1].___w; 4: MUL_SAT temp[8].w, input[1].___z, temp[7].___w; 5: ADD temp[9].w, -temp[8].___w, temp[6].___x; 6: CMP temp[10].z, temp[9].__w_, none.__0_, none.__1_; 7: MUL temp[11].xyz, temp[5].xyz_, temp[10].zzz_; 8: MOV temp[0].xyz, temp[11].xyz_; 9: MOV temp[0].w, none.___1; 10: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 1: MUL temp[5].xyz, input[0].xxx_, temp[4].xyz_; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1]; 3: RCP temp[7].w, input[1].___w; 4: MUL_SAT temp[8].w, input[1].___z, temp[7].___w; 5: ADD temp[9].w, -temp[8].___w, temp[6].___x; 6: CMP temp[10].z, temp[9].__w_, none.__0_, none.__1_; 7: MUL temp[11].xyz, temp[5].xyz_, temp[10].zzz_; 8: MOV temp[0].xyz, temp[11].xyz_; 9: MOV temp[0].w, none.___1; 10: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 1: src0.xyz = input[0], src1.xyz = temp[4] MAD temp[5].xyz, src0.xxx, src1.xyz, src0.000 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1]; 3: src0.w = input[1] RCP temp[7].w, src0.w 4: src0.xyz = input[1], src0.w = temp[7] MAD_SAT temp[8].w, src0.z, src0.w, src0.0 5: src0.xyz = temp[6], src0.w = temp[8] MAD temp[9].w, -src0.w, src0.1, src0.x 6: src0.w = temp[9] CMP temp[10].z, src0.__1, src0.__0, src0.__w 7: src0.xyz = temp[5], src1.xyz = temp[10] MAD temp[11].xyz, src0.xyz, src1.zzz, src0.000 8: src0.xyz = temp[11] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 9: MAD temp[0].w, src0.1, src0.1, src0.0 10: 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: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[0], src0.w = input[1], src1.xyz = temp[4] SEM_WAIT MAD temp[5].xyz, src0.xxx, src1.xyz, src0.000 RCP temp[7].w, src0.w 4: src0.xyz = input[1], src0.w = temp[7] MAD_SAT temp[8].w, src0.z, src0.w, src0.0 5: src0.xyz = temp[6], src0.w = temp[8] MAD temp[9].w, -src0.w, src0.1, src0.x 6: src0.w = temp[9] CMP temp[10].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, src0.1, src0.1, src0.0 7: src0.xyz = temp[5], src1.xyz = temp[10] MAD temp[11].xyz, src0.xyz, src1.zzz, src0.000 8: src0.xyz = temp[11] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 9: 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 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[4].xyz, input[1].xy_w, 2D[0]; 2: TXP temp[6].x, input[1].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[0], src0.w = input[1], src1.xyz = temp[4] SEM_WAIT MAD temp[5].xyz, src0.xxx, src1.xyz, src0.000 RCP temp[7].w, src0.w 4: src0.xyz = input[1], src0.w = temp[7] MAD_SAT temp[8].w, src0.z, src0.w, src0.0 5: src0.xyz = temp[6], src0.w = temp[8] MAD temp[9].w, -src0.w, src0.1, src0.x 6: src0.w = temp[9] CMP temp[10].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, src0.1, src0.1, src0.0 7: src0.xyz = temp[5], src1.xyz = temp[10] MAD temp[11].xyz, src0.xyz, src1.zzz, src0.000 8: src0.xyz = temp[11] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 9: 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: TXP temp[2].xyz, input[1].xy_w, 2D[0]; 2: TXP temp[3].x, input[1].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[0], src0.w = input[1], src1.xyz = temp[2] SEM_WAIT MAD temp[0].xyz, src0.xxx, src1.xyz, src0.000 RCP temp[0].w, src0.w 4: src0.xyz = input[1], src0.w = temp[0] MAD_SAT temp[0].w, src0.z, src0.w, src0.0 5: src0.xyz = temp[3], src0.w = temp[0] MAD temp[0].w, -src0.w, src0.1, src0.x 6: src0.w = temp[0] CMP temp[1].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, src0.1, src0.1, src0.0 7: src0.xyz = temp[0], src1.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 8: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 9: 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 ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 6, tex_end: 1 (code_addr: 00420180) TEX: TXP t2, t1, texture[0] (00018081) TXP t3, t1, texture[1] (000188c1) 0: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t0.xxx t2.xyz 0.0 op: 00050201 w: t1.w t0.x t0.x op: 05000009 1: xyz: t1 t0 t0 bias-> (00000001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xxx t1.xxx t1.xxx op: 00004081 w: t1.z t0.w 0.0 op: 40040482 2: xyz: t3 t0 t0 bias-> (00000003) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t3.xxx t3.xxx t3.xxx op: 00004081 w: -t0.w 1.0 t3.x op: 000008a9 3: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 1.0 0.0 t0.www op: 04030a15 w: 1.0 1.0 0.0 op: 00040891 4: xyz: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t1.xxx 0.0 op: 00050280 w: t0.x t0.x t0.x op: 00000000 5: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 6: 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL IMM FLT32 { -3.5000, 3.5000, 2.5000, 1.5000} IMM FLT32 { -3.5000, 0.5000, -0.5000, -1.5000} IMM FLT32 { -3.5000, -2.5000, 2.5000, 1.5000} IMM FLT32 { -2.5000, 0.5000, -0.5000, -1.5000} IMM FLT32 { -1.5000, 1.5000, 0.0278, 0.0000} 0: MAD TEMP[0].xy, CONST[0].xyyy, IMM[0].xyyy, IN[0].xyyy 1: TEX TEMP[0], TEMP[0].xyyy, SAMP[0], 2D 2: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].xzzz, IN[0].xyyy 3: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 4: ADD TEMP[0], TEMP[0], TEMP[1] 5: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].xwww, IN[0].xyyy 6: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 7: ADD TEMP[0], TEMP[0], TEMP[1] 8: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].xyyy, IN[0].xyyy 9: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 10: ADD TEMP[0], TEMP[0], TEMP[1] 11: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].xzzz, IN[0].xyyy 12: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 13: ADD TEMP[0], TEMP[0], TEMP[1] 14: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].xwww, IN[0].xyyy 15: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 16: ADD TEMP[0], TEMP[0], TEMP[1] 17: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].xyyy, IN[0].xyyy 18: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 19: ADD TEMP[0], TEMP[0], TEMP[1] 20: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].xxxx, IN[0].xyyy 21: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 22: ADD TEMP[0], TEMP[0], TEMP[1] 23: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].yzzz, IN[0].xyyy 24: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 25: ADD TEMP[0], TEMP[0], TEMP[1] 26: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].ywww, IN[0].xyyy 27: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 28: ADD TEMP[0], TEMP[0], TEMP[1] 29: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].xyyy, IN[0].xyyy 30: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 31: ADD TEMP[0], TEMP[0], TEMP[1] 32: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].xzzz, IN[0].xyyy 33: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 34: ADD TEMP[0], TEMP[0], TEMP[1] 35: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].xwww, IN[0].xyyy 36: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 37: ADD TEMP[0], TEMP[0], TEMP[1] 38: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].yyyy, IN[0].xyyy 39: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 40: ADD TEMP[0], TEMP[0], TEMP[1] 41: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].yxxx, IN[0].xyyy 42: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 43: ADD TEMP[0], TEMP[0], TEMP[1] 44: MAD TEMP[1].xy, CONST[0].xyyy, IMM[4].xyyy, IN[0].xyyy 45: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 46: ADD TEMP[0], TEMP[0], TEMP[1] 47: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].wyyy, IN[0].xyyy 48: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 49: ADD TEMP[0], TEMP[0], TEMP[1] 50: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].wzzz, IN[0].xyyy 51: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 52: ADD TEMP[0], TEMP[0], TEMP[1] 53: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].wwww, IN[0].xyyy 54: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 55: ADD TEMP[0], TEMP[0], TEMP[1] 56: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].wxxx, IN[0].xyyy 57: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 58: ADD TEMP[0], TEMP[0], TEMP[1] 59: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].wxxx, IN[0].xyyy 60: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 61: ADD TEMP[0], TEMP[0], TEMP[1] 62: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].zyyy, IN[0].xyyy 63: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 64: ADD TEMP[0], TEMP[0], TEMP[1] 65: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].zzzz, IN[0].xyyy 66: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 67: ADD TEMP[0], TEMP[0], TEMP[1] 68: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].zwww, IN[0].xyyy 69: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 70: ADD TEMP[0], TEMP[0], TEMP[1] 71: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].zxxx, IN[0].xyyy 72: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 73: ADD TEMP[0], TEMP[0], TEMP[1] 74: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].zxxx, IN[0].xyyy 75: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 76: ADD TEMP[0], TEMP[0], TEMP[1] 77: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].yzzz, IN[0].xyyy 78: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 79: ADD TEMP[0], TEMP[0], TEMP[1] 80: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].ywww, IN[0].xyyy 81: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 82: ADD TEMP[0], TEMP[0], TEMP[1] 83: MAD TEMP[1].xy, CONST[0].xyyy, IMM[3].yxxx, IN[0].xyyy 84: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 85: ADD TEMP[0], TEMP[0], TEMP[1] 86: MAD TEMP[1].xy, CONST[0].xyyy, IMM[1].yxxx, IN[0].xyyy 87: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 88: ADD TEMP[0], TEMP[0], TEMP[1] 89: MAD TEMP[1].xy, CONST[0].xyyy, IMM[4].yxxx, IN[0].xyyy 90: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 91: ADD TEMP[0], TEMP[0], TEMP[1] 92: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].wyyy, IN[0].xyyy 93: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 94: ADD TEMP[0], TEMP[0], TEMP[1] 95: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].wxxx, IN[0].xyyy 96: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 97: ADD TEMP[0], TEMP[0], TEMP[1] 98: MAD TEMP[1].xy, CONST[0].xyyy, IMM[2].zyyy, IN[0].xyyy 99: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 100: ADD TEMP[0], TEMP[0], TEMP[1] 101: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].zxxx, IN[0].xyyy 102: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 103: ADD TEMP[0], TEMP[0], TEMP[1] 104: MAD TEMP[1].xy, CONST[0].xyyy, IMM[0].yxxx, IN[0].xyyy 105: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 106: ADD TEMP[0], TEMP[0], TEMP[1] 107: MUL TEMP[0], TEMP[0], IMM[4].zzzz 108: MOV OUT[0], TEMP[0] 109: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xyyy, const[1].xyyy, input[0].xyyy; 1: TEX temp[0], temp[0].xyyy, 2D[0]; 2: MAD temp[1].xy, const[0].xyyy, const[1].xzzz, input[0].xyyy; 3: TEX temp[1], temp[1].xyyy, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xyyy, const[1].xwww, input[0].xyyy; 6: TEX temp[1], temp[1].xyyy, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xyyy, const[2].xyyy, input[0].xyyy; 9: TEX temp[1], temp[1].xyyy, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xyyy, const[2].xzzz, input[0].xyyy; 12: TEX temp[1], temp[1].xyyy, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xyyy, const[2].xwww, input[0].xyyy; 15: TEX temp[1], temp[1].xyyy, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xyyy, const[3].xyyy, input[0].xyyy; 18: TEX temp[1], temp[1].xyyy, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xyyy, const[1].xxxx, input[0].xyyy; 21: TEX temp[1], temp[1].xyyy, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xyyy, const[3].yzzz, input[0].xyyy; 24: TEX temp[1], temp[1].xyyy, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xyyy, const[3].ywww, input[0].xyyy; 27: TEX temp[1], temp[1].xyyy, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xyyy, const[4].xyyy, input[0].xyyy; 30: TEX temp[1], temp[1].xyyy, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xyyy, const[4].xzzz, input[0].xyyy; 33: TEX temp[1], temp[1].xyyy, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xyyy, const[4].xwww, input[0].xyyy; 36: TEX temp[1], temp[1].xyyy, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xyyy, const[3].yyyy, input[0].xyyy; 39: TEX temp[1], temp[1].xyyy, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xyyy, const[3].yxxx, input[0].xyyy; 42: TEX temp[1], temp[1].xyyy, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xyyy, const[5].xyyy, input[0].xyyy; 45: TEX temp[1], temp[1].xyyy, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xyyy, const[2].wyyy, input[0].xyyy; 48: TEX temp[1], temp[1].xyyy, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xyyy, const[2].wzzz, input[0].xyyy; 51: TEX temp[1], temp[1].xyyy, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xyyy, const[2].wwww, input[0].xyyy; 54: TEX temp[1], temp[1].xyyy, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xyyy, const[4].wxxx, input[0].xyyy; 57: TEX temp[1], temp[1].xyyy, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xyyy, const[2].wxxx, input[0].xyyy; 60: TEX temp[1], temp[1].xyyy, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xyyy, const[2].zyyy, input[0].xyyy; 63: TEX temp[1], temp[1].xyyy, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xyyy, const[2].zzzz, input[0].xyyy; 66: TEX temp[1], temp[1].xyyy, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xyyy, const[2].zwww, input[0].xyyy; 69: TEX temp[1], temp[1].xyyy, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xyyy, const[4].zxxx, input[0].xyyy; 72: TEX temp[1], temp[1].xyyy, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xyyy, const[2].zxxx, input[0].xyyy; 75: TEX temp[1], temp[1].xyyy, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xyyy, const[2].yzzz, input[0].xyyy; 78: TEX temp[1], temp[1].xyyy, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xyyy, const[2].ywww, input[0].xyyy; 81: TEX temp[1], temp[1].xyyy, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xyyy, const[4].yxxx, input[0].xyyy; 84: TEX temp[1], temp[1].xyyy, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xyyy, const[2].yxxx, input[0].xyyy; 87: TEX temp[1], temp[1].xyyy, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xyyy, const[5].yxxx, input[0].xyyy; 90: TEX temp[1], temp[1].xyyy, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xyyy, const[3].wyyy, input[0].xyyy; 93: TEX temp[1], temp[1].xyyy, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xyyy, const[1].wxxx, input[0].xyyy; 96: TEX temp[1], temp[1].xyyy, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xyyy, const[3].zyyy, input[0].xyyy; 99: TEX temp[1], temp[1].xyyy, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xyyy, const[1].zxxx, input[0].xyyy; 102: TEX temp[1], temp[1].xyyy, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xyyy, const[1].yxxx, input[0].xyyy; 105: TEX temp[1], temp[1].xyyy, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: MAD temp[1].xy, const[0].xy__, const[1].xz__, input[0].xy__; 3: TEX temp[1], temp[1].xy__, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xy__, const[1].xw__, input[0].xy__; 6: TEX temp[1], temp[1].xy__, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xy__, const[2].xy__, input[0].xy__; 9: TEX temp[1], temp[1].xy__, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xy__, const[2].xz__, input[0].xy__; 12: TEX temp[1], temp[1].xy__, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xy__, const[2].xw__, input[0].xy__; 15: TEX temp[1], temp[1].xy__, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xy__, const[3].xy__, input[0].xy__; 18: TEX temp[1], temp[1].xy__, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xy__, const[1].xx__, input[0].xy__; 21: TEX temp[1], temp[1].xy__, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xy__, const[3].yz__, input[0].xy__; 24: TEX temp[1], temp[1].xy__, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xy__, const[3].yw__, input[0].xy__; 27: TEX temp[1], temp[1].xy__, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xy__, const[4].xy__, input[0].xy__; 30: TEX temp[1], temp[1].xy__, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xy__, const[4].xz__, input[0].xy__; 33: TEX temp[1], temp[1].xy__, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xy__, const[4].xw__, input[0].xy__; 36: TEX temp[1], temp[1].xy__, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xy__, const[3].yy__, input[0].xy__; 39: TEX temp[1], temp[1].xy__, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xy__, const[3].yx__, input[0].xy__; 42: TEX temp[1], temp[1].xy__, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xy__, const[5].xy__, input[0].xy__; 45: TEX temp[1], temp[1].xy__, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xy__, const[2].wy__, input[0].xy__; 48: TEX temp[1], temp[1].xy__, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xy__, const[2].wz__, input[0].xy__; 51: TEX temp[1], temp[1].xy__, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xy__, const[2].ww__, input[0].xy__; 54: TEX temp[1], temp[1].xy__, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xy__, const[4].wx__, input[0].xy__; 57: TEX temp[1], temp[1].xy__, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xy__, const[2].wx__, input[0].xy__; 60: TEX temp[1], temp[1].xy__, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xy__, const[2].zy__, input[0].xy__; 63: TEX temp[1], temp[1].xy__, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xy__, const[2].zz__, input[0].xy__; 66: TEX temp[1], temp[1].xy__, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xy__, const[2].zw__, input[0].xy__; 69: TEX temp[1], temp[1].xy__, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xy__, const[4].zx__, input[0].xy__; 72: TEX temp[1], temp[1].xy__, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xy__, const[2].zx__, input[0].xy__; 75: TEX temp[1], temp[1].xy__, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xy__, const[2].yz__, input[0].xy__; 78: TEX temp[1], temp[1].xy__, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xy__, const[2].yw__, input[0].xy__; 81: TEX temp[1], temp[1].xy__, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xy__, const[4].yx__, input[0].xy__; 84: TEX temp[1], temp[1].xy__, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xy__, const[2].yx__, input[0].xy__; 87: TEX temp[1], temp[1].xy__, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xy__, const[5].yx__, input[0].xy__; 90: TEX temp[1], temp[1].xy__, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xy__, const[3].wy__, input[0].xy__; 93: TEX temp[1], temp[1].xy__, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xy__, const[1].wx__, input[0].xy__; 96: TEX temp[1], temp[1].xy__, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xy__, const[3].zy__, input[0].xy__; 99: TEX temp[1], temp[1].xy__, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xy__, const[1].zx__, input[0].xy__; 102: TEX temp[1], temp[1].xy__, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xy__, const[1].yx__, input[0].xy__; 105: TEX temp[1], temp[1].xy__, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MAD temp[0].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: MAD temp[1].xy, const[0].xy__, const[1].xz__, input[0].xy__; 3: TEX temp[1], temp[1].xy__, 2D[0]; 4: ADD temp[0], temp[0], temp[1]; 5: MAD temp[1].xy, const[0].xy__, const[1].xw__, input[0].xy__; 6: TEX temp[1], temp[1].xy__, 2D[0]; 7: ADD temp[0], temp[0], temp[1]; 8: MAD temp[1].xy, const[0].xy__, const[2].xy__, input[0].xy__; 9: TEX temp[1], temp[1].xy__, 2D[0]; 10: ADD temp[0], temp[0], temp[1]; 11: MAD temp[1].xy, const[0].xy__, const[2].xz__, input[0].xy__; 12: TEX temp[1], temp[1].xy__, 2D[0]; 13: ADD temp[0], temp[0], temp[1]; 14: MAD temp[1].xy, const[0].xy__, const[2].xw__, input[0].xy__; 15: TEX temp[1], temp[1].xy__, 2D[0]; 16: ADD temp[0], temp[0], temp[1]; 17: MAD temp[1].xy, const[0].xy__, const[3].xy__, input[0].xy__; 18: TEX temp[1], temp[1].xy__, 2D[0]; 19: ADD temp[0], temp[0], temp[1]; 20: MAD temp[1].xy, const[0].xy__, const[1].xx__, input[0].xy__; 21: TEX temp[1], temp[1].xy__, 2D[0]; 22: ADD temp[0], temp[0], temp[1]; 23: MAD temp[1].xy, const[0].xy__, const[3].yz__, input[0].xy__; 24: TEX temp[1], temp[1].xy__, 2D[0]; 25: ADD temp[0], temp[0], temp[1]; 26: MAD temp[1].xy, const[0].xy__, const[3].yw__, input[0].xy__; 27: TEX temp[1], temp[1].xy__, 2D[0]; 28: ADD temp[0], temp[0], temp[1]; 29: MAD temp[1].xy, const[0].xy__, const[4].xy__, input[0].xy__; 30: TEX temp[1], temp[1].xy__, 2D[0]; 31: ADD temp[0], temp[0], temp[1]; 32: MAD temp[1].xy, const[0].xy__, const[4].xz__, input[0].xy__; 33: TEX temp[1], temp[1].xy__, 2D[0]; 34: ADD temp[0], temp[0], temp[1]; 35: MAD temp[1].xy, const[0].xy__, const[4].xw__, input[0].xy__; 36: TEX temp[1], temp[1].xy__, 2D[0]; 37: ADD temp[0], temp[0], temp[1]; 38: MAD temp[1].xy, const[0].xy__, const[3].yy__, input[0].xy__; 39: TEX temp[1], temp[1].xy__, 2D[0]; 40: ADD temp[0], temp[0], temp[1]; 41: MAD temp[1].xy, const[0].xy__, const[3].yx__, input[0].xy__; 42: TEX temp[1], temp[1].xy__, 2D[0]; 43: ADD temp[0], temp[0], temp[1]; 44: MAD temp[1].xy, const[0].xy__, const[5].xy__, input[0].xy__; 45: TEX temp[1], temp[1].xy__, 2D[0]; 46: ADD temp[0], temp[0], temp[1]; 47: MAD temp[1].xy, const[0].xy__, const[2].wy__, input[0].xy__; 48: TEX temp[1], temp[1].xy__, 2D[0]; 49: ADD temp[0], temp[0], temp[1]; 50: MAD temp[1].xy, const[0].xy__, const[2].wz__, input[0].xy__; 51: TEX temp[1], temp[1].xy__, 2D[0]; 52: ADD temp[0], temp[0], temp[1]; 53: MAD temp[1].xy, const[0].xy__, const[2].ww__, input[0].xy__; 54: TEX temp[1], temp[1].xy__, 2D[0]; 55: ADD temp[0], temp[0], temp[1]; 56: MAD temp[1].xy, const[0].xy__, const[4].wx__, input[0].xy__; 57: TEX temp[1], temp[1].xy__, 2D[0]; 58: ADD temp[0], temp[0], temp[1]; 59: MAD temp[1].xy, const[0].xy__, const[2].wx__, input[0].xy__; 60: TEX temp[1], temp[1].xy__, 2D[0]; 61: ADD temp[0], temp[0], temp[1]; 62: MAD temp[1].xy, const[0].xy__, const[2].zy__, input[0].xy__; 63: TEX temp[1], temp[1].xy__, 2D[0]; 64: ADD temp[0], temp[0], temp[1]; 65: MAD temp[1].xy, const[0].xy__, const[2].zz__, input[0].xy__; 66: TEX temp[1], temp[1].xy__, 2D[0]; 67: ADD temp[0], temp[0], temp[1]; 68: MAD temp[1].xy, const[0].xy__, const[2].zw__, input[0].xy__; 69: TEX temp[1], temp[1].xy__, 2D[0]; 70: ADD temp[0], temp[0], temp[1]; 71: MAD temp[1].xy, const[0].xy__, const[4].zx__, input[0].xy__; 72: TEX temp[1], temp[1].xy__, 2D[0]; 73: ADD temp[0], temp[0], temp[1]; 74: MAD temp[1].xy, const[0].xy__, const[2].zx__, input[0].xy__; 75: TEX temp[1], temp[1].xy__, 2D[0]; 76: ADD temp[0], temp[0], temp[1]; 77: MAD temp[1].xy, const[0].xy__, const[2].yz__, input[0].xy__; 78: TEX temp[1], temp[1].xy__, 2D[0]; 79: ADD temp[0], temp[0], temp[1]; 80: MAD temp[1].xy, const[0].xy__, const[2].yw__, input[0].xy__; 81: TEX temp[1], temp[1].xy__, 2D[0]; 82: ADD temp[0], temp[0], temp[1]; 83: MAD temp[1].xy, const[0].xy__, const[4].yx__, input[0].xy__; 84: TEX temp[1], temp[1].xy__, 2D[0]; 85: ADD temp[0], temp[0], temp[1]; 86: MAD temp[1].xy, const[0].xy__, const[2].yx__, input[0].xy__; 87: TEX temp[1], temp[1].xy__, 2D[0]; 88: ADD temp[0], temp[0], temp[1]; 89: MAD temp[1].xy, const[0].xy__, const[5].yx__, input[0].xy__; 90: TEX temp[1], temp[1].xy__, 2D[0]; 91: ADD temp[0], temp[0], temp[1]; 92: MAD temp[1].xy, const[0].xy__, const[3].wy__, input[0].xy__; 93: TEX temp[1], temp[1].xy__, 2D[0]; 94: ADD temp[0], temp[0], temp[1]; 95: MAD temp[1].xy, const[0].xy__, const[1].wx__, input[0].xy__; 96: TEX temp[1], temp[1].xy__, 2D[0]; 97: ADD temp[0], temp[0], temp[1]; 98: MAD temp[1].xy, const[0].xy__, const[3].zy__, input[0].xy__; 99: TEX temp[1], temp[1].xy__, 2D[0]; 100: ADD temp[0], temp[0], temp[1]; 101: MAD temp[1].xy, const[0].xy__, const[1].zx__, input[0].xy__; 102: TEX temp[1], temp[1].xy__, 2D[0]; 103: ADD temp[0], temp[0], temp[1]; 104: MAD temp[1].xy, const[0].xy__, const[1].yx__, input[0].xy__; 105: TEX temp[1], temp[1].xy__, 2D[0]; 106: ADD temp[0], temp[0], temp[1]; 107: MUL temp[0], temp[0], const[5].zzzz; 108: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[2].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MAD temp[4].xy, const[0].xy__, const[1].xz__, input[0].xy__; 3: TEX temp[5], temp[4].xy__, 2D[0]; 4: ADD temp[6], temp[3], temp[5]; 5: MAD temp[7].xy, const[0].xy__, const[1].xw__, input[0].xy__; 6: TEX temp[8], temp[7].xy__, 2D[0]; 7: ADD temp[9], temp[6], temp[8]; 8: MAD temp[10].xy, const[0].xy__, const[2].xy__, input[0].xy__; 9: TEX temp[11], temp[10].xy__, 2D[0]; 10: ADD temp[12], temp[9], temp[11]; 11: MAD temp[13].xy, const[0].xy__, const[2].xz__, input[0].xy__; 12: TEX temp[14], temp[13].xy__, 2D[0]; 13: ADD temp[15], temp[12], temp[14]; 14: MAD temp[16].xy, const[0].xy__, const[2].xw__, input[0].xy__; 15: TEX temp[17], temp[16].xy__, 2D[0]; 16: ADD temp[18], temp[15], temp[17]; 17: MAD temp[19].xy, const[0].xy__, const[3].xy__, input[0].xy__; 18: TEX temp[20], temp[19].xy__, 2D[0]; 19: ADD temp[21], temp[18], temp[20]; 20: MAD temp[22].xy, const[0].xy__, const[1].xx__, input[0].xy__; 21: TEX temp[23], temp[22].xy__, 2D[0]; 22: ADD temp[24], temp[21], temp[23]; 23: MAD temp[25].xy, const[0].xy__, const[3].yz__, input[0].xy__; 24: TEX temp[26], temp[25].xy__, 2D[0]; 25: ADD temp[27], temp[24], temp[26]; 26: MAD temp[28].xy, const[0].xy__, const[3].yw__, input[0].xy__; 27: TEX temp[29], temp[28].xy__, 2D[0]; 28: ADD temp[30], temp[27], temp[29]; 29: MAD temp[31].xy, const[0].xy__, const[4].xy__, input[0].xy__; 30: TEX temp[32], temp[31].xy__, 2D[0]; 31: ADD temp[33], temp[30], temp[32]; 32: MAD temp[34].xy, const[0].xy__, const[4].xz__, input[0].xy__; 33: TEX temp[35], temp[34].xy__, 2D[0]; 34: ADD temp[36], temp[33], temp[35]; 35: MAD temp[37].xy, const[0].xy__, const[4].xw__, input[0].xy__; 36: TEX temp[38], temp[37].xy__, 2D[0]; 37: ADD temp[39], temp[36], temp[38]; 38: MAD temp[40].xy, const[0].xy__, const[3].yy__, input[0].xy__; 39: TEX temp[41], temp[40].xy__, 2D[0]; 40: ADD temp[42], temp[39], temp[41]; 41: MAD temp[43].xy, const[0].xy__, const[3].yx__, input[0].xy__; 42: TEX temp[44], temp[43].xy__, 2D[0]; 43: ADD temp[45], temp[42], temp[44]; 44: MAD temp[46].xy, const[0].xy__, const[5].xy__, input[0].xy__; 45: TEX temp[47], temp[46].xy__, 2D[0]; 46: ADD temp[48], temp[45], temp[47]; 47: MAD temp[49].xy, const[0].xy__, const[2].wy__, input[0].xy__; 48: TEX temp[50], temp[49].xy__, 2D[0]; 49: ADD temp[51], temp[48], temp[50]; 50: MAD temp[52].xy, const[0].xy__, const[2].wz__, input[0].xy__; 51: TEX temp[53], temp[52].xy__, 2D[0]; 52: ADD temp[54], temp[51], temp[53]; 53: MAD temp[55].xy, const[0].xy__, const[2].ww__, input[0].xy__; 54: TEX temp[56], temp[55].xy__, 2D[0]; 55: ADD temp[57], temp[54], temp[56]; 56: MAD temp[58].xy, const[0].xy__, const[4].wx__, input[0].xy__; 57: TEX temp[59], temp[58].xy__, 2D[0]; 58: ADD temp[60], temp[57], temp[59]; 59: MAD temp[61].xy, const[0].xy__, const[2].wx__, input[0].xy__; 60: TEX temp[62], temp[61].xy__, 2D[0]; 61: ADD temp[63], temp[60], temp[62]; 62: MAD temp[64].xy, const[0].xy__, const[2].zy__, input[0].xy__; 63: TEX temp[65], temp[64].xy__, 2D[0]; 64: ADD temp[66], temp[63], temp[65]; 65: MAD temp[67].xy, const[0].xy__, const[2].zz__, input[0].xy__; 66: TEX temp[68], temp[67].xy__, 2D[0]; 67: ADD temp[69], temp[66], temp[68]; 68: MAD temp[70].xy, const[0].xy__, const[2].zw__, input[0].xy__; 69: TEX temp[71], temp[70].xy__, 2D[0]; 70: ADD temp[72], temp[69], temp[71]; 71: MAD temp[73].xy, const[0].xy__, const[4].zx__, input[0].xy__; 72: TEX temp[74], temp[73].xy__, 2D[0]; 73: ADD temp[75], temp[72], temp[74]; 74: MAD temp[76].xy, const[0].xy__, const[2].zx__, input[0].xy__; 75: TEX temp[77], temp[76].xy__, 2D[0]; 76: ADD temp[78], temp[75], temp[77]; 77: MAD temp[79].xy, const[0].xy__, const[2].yz__, input[0].xy__; 78: TEX temp[80], temp[79].xy__, 2D[0]; 79: ADD temp[81], temp[78], temp[80]; 80: MAD temp[82].xy, const[0].xy__, const[2].yw__, input[0].xy__; 81: TEX temp[83], temp[82].xy__, 2D[0]; 82: ADD temp[84], temp[81], temp[83]; 83: MAD temp[85].xy, const[0].xy__, const[4].yx__, input[0].xy__; 84: TEX temp[86], temp[85].xy__, 2D[0]; 85: ADD temp[87], temp[84], temp[86]; 86: MAD temp[88].xy, const[0].xy__, const[2].yx__, input[0].xy__; 87: TEX temp[89], temp[88].xy__, 2D[0]; 88: ADD temp[90], temp[87], temp[89]; 89: MAD temp[91].xy, const[0].xy__, const[5].yx__, input[0].xy__; 90: TEX temp[92], temp[91].xy__, 2D[0]; 91: ADD temp[93], temp[90], temp[92]; 92: MAD temp[94].xy, const[0].xy__, const[3].wy__, input[0].xy__; 93: TEX temp[95], temp[94].xy__, 2D[0]; 94: ADD temp[96], temp[93], temp[95]; 95: MAD temp[97].xy, const[0].xy__, const[1].wx__, input[0].xy__; 96: TEX temp[98], temp[97].xy__, 2D[0]; 97: ADD temp[99], temp[96], temp[98]; 98: MAD temp[100].xy, const[0].xy__, const[3].zy__, input[0].xy__; 99: TEX temp[101], temp[100].xy__, 2D[0]; 100: ADD temp[102], temp[99], temp[101]; 101: MAD temp[103].xy, const[0].xy__, const[1].zx__, input[0].xy__; 102: TEX temp[104], temp[103].xy__, 2D[0]; 103: ADD temp[105], temp[102], temp[104]; 104: MAD temp[106].xy, const[0].xy__, const[1].yx__, input[0].xy__; 105: TEX temp[107], temp[106].xy__, 2D[0]; 106: ADD temp[108], temp[105], temp[107]; 107: MUL temp[109], temp[108], const[5].zzzz; 108: MOV output[0], temp[109]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[2].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MAD temp[4].xy, const[0].xy__, const[1].xz__, input[0].xy__; 3: TEX temp[5], temp[4].xy__, 2D[0]; 4: MAD temp[7].xy, const[0].xy__, const[1].xw__, input[0].xy__; 5: TEX temp[8], temp[7].xy__, 2D[0]; 6: ADD temp[9], (temp[5] + temp[3]), temp[8]; 7: MAD temp[10].xy, const[0].xy__, const[2].xy__, input[0].xy__; 8: TEX temp[11], temp[10].xy__, 2D[0]; 9: MAD temp[13].xy, const[0].xy__, const[2].x-H__, input[0].xy__; 10: TEX temp[14], temp[13].xy__, 2D[0]; 11: ADD temp[15], (temp[11] + temp[9]), temp[14]; 12: MAD temp[16].xy, const[0].xy__, const[2].xw__, input[0].xy__; 13: TEX temp[17], temp[16].xy__, 2D[0]; 14: MAD temp[19].xy, const[0].xy__, const[3].xy__, input[0].xy__; 15: TEX temp[20], temp[19].xy__, 2D[0]; 16: ADD temp[21], (temp[17] + temp[15]), temp[20]; 17: MAD temp[22].xy, const[0].xy__, const[1].xx__, input[0].xy__; 18: TEX temp[23], temp[22].xy__, 2D[0]; 19: MAD temp[25].xy, const[0].xy__, const[3].yz__, input[0].xy__; 20: TEX temp[26], temp[25].xy__, 2D[0]; 21: ADD temp[27], (temp[23] + temp[21]), temp[26]; 22: MAD temp[28].xy, const[0].xy__, const[3].yw__, input[0].xy__; 23: TEX temp[29], temp[28].xy__, 2D[0]; 24: MAD temp[31].xy, const[0].xy__, const[4].xy__, input[0].xy__; 25: TEX temp[32], temp[31].xy__, 2D[0]; 26: ADD temp[33], (temp[29] + temp[27]), temp[32]; 27: MAD temp[34].xy, const[0].xy__, const[4].x-H__, input[0].xy__; 28: TEX temp[35], temp[34].xy__, 2D[0]; 29: MAD temp[37].xy, const[0].xy__, const[4].xw__, input[0].xy__; 30: TEX temp[38], temp[37].xy__, 2D[0]; 31: ADD temp[39], (temp[35] + temp[33]), temp[38]; 32: MAD temp[40].xy, const[0].xy__, const[3].yy__, input[0].xy__; 33: TEX temp[41], temp[40].xy__, 2D[0]; 34: MAD temp[43].xy, const[0].xy__, const[3].yx__, input[0].xy__; 35: TEX temp[44], temp[43].xy__, 2D[0]; 36: ADD temp[45], (temp[41] + temp[39]), temp[44]; 37: MAD temp[46].xy, const[0].xy__, const[5].xy__, input[0].xy__; 38: TEX temp[47], temp[46].xy__, 2D[0]; 39: MAD temp[49].xy, const[0].xy__, const[2].wH__, input[0].xy__; 40: TEX temp[50], temp[49].xy__, 2D[0]; 41: ADD temp[51], (temp[47] + temp[45]), temp[50]; 42: MAD temp[52].xy, const[0].xy__, const[2].wz__, input[0].xy__; 43: TEX temp[53], temp[52].xy__, 2D[0]; 44: MAD temp[55].xy, const[0].xy__, const[2].ww__, input[0].xy__; 45: TEX temp[56], temp[55].xy__, 2D[0]; 46: ADD temp[57], (temp[53] + temp[51]), temp[56]; 47: MAD temp[58].xy, const[0].xy__, const[4].wx__, input[0].xy__; 48: TEX temp[59], temp[58].xy__, 2D[0]; 49: MAD temp[61].xy, const[0].xy__, const[2].wx__, input[0].xy__; 50: TEX temp[62], temp[61].xy__, 2D[0]; 51: ADD temp[63], (temp[59] + temp[57]), temp[62]; 52: MAD temp[64].xy, const[0].xy__, none.-HH__, input[0].xy__; 53: TEX temp[65], temp[64].xy__, 2D[0]; 54: MAD temp[67].xy, const[0].xy__, none.-H-H__, input[0].xy__; 55: TEX temp[68], temp[67].xy__, 2D[0]; 56: ADD temp[69], (temp[65] + temp[63]), temp[68]; 57: MAD temp[70].xy, const[0].xy__, const[2].-Hw__, input[0].xy__; 58: TEX temp[71], temp[70].xy__, 2D[0]; 59: MAD temp[73].xy, const[0].xy__, const[4].zx__, input[0].xy__; 60: TEX temp[74], temp[73].xy__, 2D[0]; 61: ADD temp[75], (temp[71] + temp[69]), temp[74]; 62: MAD temp[76].xy, const[0].xy__, const[2].zx__, input[0].xy__; 63: TEX temp[77], temp[76].xy__, 2D[0]; 64: MAD temp[79].xy, const[0].xy__, const[2].yz__, input[0].xy__; 65: TEX temp[80], temp[79].xy__, 2D[0]; 66: ADD temp[81], (temp[77] + temp[75]), temp[80]; 67: MAD temp[82].xy, const[0].xy__, const[2].Hw__, input[0].xy__; 68: TEX temp[83], temp[82].xy__, 2D[0]; 69: MAD temp[85].xy, const[0].xy__, const[4].Hx__, input[0].xy__; 70: TEX temp[86], temp[85].xy__, 2D[0]; 71: ADD temp[87], (temp[83] + temp[81]), temp[86]; 72: MAD temp[88].xy, const[0].xy__, const[2].Hx__, input[0].xy__; 73: TEX temp[89], temp[88].xy__, 2D[0]; 74: MAD temp[91].xy, const[0].xy__, const[5].yx__, input[0].xy__; 75: TEX temp[92], temp[91].xy__, 2D[0]; 76: ADD temp[93], (temp[89] + temp[87]), temp[92]; 77: MAD temp[94].xy, const[0].xy__, const[3].wy__, input[0].xy__; 78: TEX temp[95], temp[94].xy__, 2D[0]; 79: MAD temp[97].xy, const[0].xy__, const[1].wx__, input[0].xy__; 80: TEX temp[98], temp[97].xy__, 2D[0]; 81: ADD temp[99], (temp[95] + temp[93]), temp[98]; 82: MAD temp[100].xy, const[0].xy__, const[3].zy__, input[0].xy__; 83: TEX temp[101], temp[100].xy__, 2D[0]; 84: MAD temp[103].xy, const[0].xy__, const[1].zx__, input[0].xy__; 85: TEX temp[104], temp[103].xy__, 2D[0]; 86: ADD temp[105], (temp[101] + temp[99]), temp[104]; 87: MAD temp[106].xy, const[0].xy__, const[1].yx__, input[0].xy__; 88: TEX temp[107], temp[106].xy__, 2D[0]; 89: MUL temp[109], (temp[107] + temp[105]), const[5].zzzz; 90: MOV output[0], temp[109]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[2].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV temp[0].x, const[1].x___; 3: MOV temp[0].y, const[1]._z__; 4: MAD temp[4].xy, const[0].xy__, temp[0].xy__, input[0].xy__; 5: TEX temp[5], temp[4].xy__, 2D[0]; 6: MOV temp[1].x, const[1].x___; 7: MOV temp[1].y, const[1]._w__; 8: MAD temp[7].xy, const[0].xy__, temp[1].xy__, input[0].xy__; 9: TEX temp[8], temp[7].xy__, 2D[0]; 10: ADD temp[9], (temp[5] + temp[3]), temp[8]; 11: MAD temp[10].xy, const[0].xy__, const[2].xy__, input[0].xy__; 12: TEX temp[11], temp[10].xy__, 2D[0]; 13: MOV temp[6].x, const[2].x___; 14: MOV temp[6].y, -const[2]._H__; 15: MAD temp[13].xy, const[0].xy__, temp[6].xy__, input[0].xy__; 16: TEX temp[14], temp[13].xy__, 2D[0]; 17: ADD temp[15], (temp[11] + temp[9]), temp[14]; 18: MOV temp[12].x, const[2].x___; 19: MOV temp[12].y, const[2]._w__; 20: MAD temp[16].xy, const[0].xy__, temp[12].xy__, input[0].xy__; 21: TEX temp[17], temp[16].xy__, 2D[0]; 22: MAD temp[19].xy, const[0].xy__, const[3].xy__, input[0].xy__; 23: TEX temp[20], temp[19].xy__, 2D[0]; 24: ADD temp[21], (temp[17] + temp[15]), temp[20]; 25: MAD temp[22].xy, const[0].xy__, const[1].xx__, input[0].xy__; 26: TEX temp[23], temp[22].xy__, 2D[0]; 27: MAD temp[25].xy, const[0].xy__, const[3].yz__, input[0].xy__; 28: TEX temp[26], temp[25].xy__, 2D[0]; 29: ADD temp[27], (temp[23] + temp[21]), temp[26]; 30: MOV temp[18].x, const[3].y___; 31: MOV temp[18].y, const[3]._w__; 32: MAD temp[28].xy, const[0].xy__, temp[18].xy__, input[0].xy__; 33: TEX temp[29], temp[28].xy__, 2D[0]; 34: MAD temp[31].xy, const[0].xy__, const[4].xy__, input[0].xy__; 35: TEX temp[32], temp[31].xy__, 2D[0]; 36: ADD temp[33], (temp[29] + temp[27]), temp[32]; 37: MOV temp[24].x, const[4].x___; 38: MOV temp[24].y, -const[4]._H__; 39: MAD temp[34].xy, const[0].xy__, temp[24].xy__, input[0].xy__; 40: TEX temp[35], temp[34].xy__, 2D[0]; 41: MOV temp[30].x, const[4].x___; 42: MOV temp[30].y, const[4]._w__; 43: MAD temp[37].xy, const[0].xy__, temp[30].xy__, input[0].xy__; 44: TEX temp[38], temp[37].xy__, 2D[0]; 45: ADD temp[39], (temp[35] + temp[33]), temp[38]; 46: MAD temp[40].xy, const[0].xy__, const[3].yy__, input[0].xy__; 47: TEX temp[41], temp[40].xy__, 2D[0]; 48: MOV temp[36].y, const[3]._x__; 49: MOV temp[36].x, const[3].y___; 50: MAD temp[43].xy, const[0].xy__, temp[36].xy__, input[0].xy__; 51: TEX temp[44], temp[43].xy__, 2D[0]; 52: ADD temp[45], (temp[41] + temp[39]), temp[44]; 53: MAD temp[46].xy, const[0].xy__, const[5].xy__, input[0].xy__; 54: TEX temp[47], temp[46].xy__, 2D[0]; 55: MOV temp[42].x, const[2].w___; 56: MOV temp[42].y, const[2]._H__; 57: MAD temp[49].xy, const[0].xy__, temp[42].xy__, input[0].xy__; 58: TEX temp[50], temp[49].xy__, 2D[0]; 59: ADD temp[51], (temp[47] + temp[45]), temp[50]; 60: MAD temp[52].xy, const[0].xy__, const[2].wz__, input[0].xy__; 61: TEX temp[53], temp[52].xy__, 2D[0]; 62: MAD temp[55].xy, const[0].xy__, const[2].ww__, input[0].xy__; 63: TEX temp[56], temp[55].xy__, 2D[0]; 64: ADD temp[57], (temp[53] + temp[51]), temp[56]; 65: MOV temp[48].y, const[4]._x__; 66: MOV temp[48].x, const[4].w___; 67: MAD temp[58].xy, const[0].xy__, temp[48].xy__, input[0].xy__; 68: TEX temp[59], temp[58].xy__, 2D[0]; 69: MOV temp[54].y, const[2]._x__; 70: MOV temp[54].x, const[2].w___; 71: MAD temp[61].xy, const[0].xy__, temp[54].xy__, input[0].xy__; 72: TEX temp[62], temp[61].xy__, 2D[0]; 73: ADD temp[63], (temp[59] + temp[57]), temp[62]; 74: MOV temp[60].x, -none.H___; 75: MOV temp[60].y, none._H__; 76: MAD temp[64].xy, const[0].xy__, temp[60].xy__, input[0].xy__; 77: TEX temp[65], temp[64].xy__, 2D[0]; 78: MAD temp[67].xy, const[0].xy__, none.-H-H__, input[0].xy__; 79: TEX temp[68], temp[67].xy__, 2D[0]; 80: ADD temp[69], (temp[65] + temp[63]), temp[68]; 81: MOV temp[66].y, const[2]._w__; 82: MOV temp[66].x, -const[2].H___; 83: MAD temp[70].xy, const[0].xy__, temp[66].xy__, input[0].xy__; 84: TEX temp[71], temp[70].xy__, 2D[0]; 85: MAD temp[73].xy, const[0].xy__, const[4].zx__, input[0].xy__; 86: TEX temp[74], temp[73].xy__, 2D[0]; 87: ADD temp[75], (temp[71] + temp[69]), temp[74]; 88: MAD temp[76].xy, const[0].xy__, const[2].zx__, input[0].xy__; 89: TEX temp[77], temp[76].xy__, 2D[0]; 90: MAD temp[79].xy, const[0].xy__, const[2].yz__, input[0].xy__; 91: TEX temp[80], temp[79].xy__, 2D[0]; 92: ADD temp[81], (temp[77] + temp[75]), temp[80]; 93: MOV temp[72].y, const[2]._w__; 94: MOV temp[72].x, const[2].H___; 95: MAD temp[82].xy, const[0].xy__, temp[72].xy__, input[0].xy__; 96: TEX temp[83], temp[82].xy__, 2D[0]; 97: MOV temp[78].y, const[4]._x__; 98: MOV temp[78].x, const[4].H___; 99: MAD temp[85].xy, const[0].xy__, temp[78].xy__, input[0].xy__; 100: TEX temp[86], temp[85].xy__, 2D[0]; 101: ADD temp[87], (temp[83] + temp[81]), temp[86]; 102: MOV temp[84].y, const[2]._x__; 103: MOV temp[84].x, const[2].H___; 104: MAD temp[88].xy, const[0].xy__, temp[84].xy__, input[0].xy__; 105: TEX temp[89], temp[88].xy__, 2D[0]; 106: MOV temp[90].y, const[5]._x__; 107: MOV temp[90].x, const[5].y___; 108: MAD temp[91].xy, const[0].xy__, temp[90].xy__, input[0].xy__; 109: TEX temp[92], temp[91].xy__, 2D[0]; 110: ADD temp[93], (temp[89] + temp[87]), temp[92]; 111: MOV temp[96].y, const[3]._y__; 112: MOV temp[96].x, const[3].w___; 113: MAD temp[94].xy, const[0].xy__, temp[96].xy__, input[0].xy__; 114: TEX temp[95], temp[94].xy__, 2D[0]; 115: MOV temp[102].y, const[1]._x__; 116: MOV temp[102].x, const[1].w___; 117: MAD temp[97].xy, const[0].xy__, temp[102].xy__, input[0].xy__; 118: TEX temp[98], temp[97].xy__, 2D[0]; 119: ADD temp[99], (temp[95] + temp[93]), temp[98]; 120: MOV temp[108].y, const[3]._y__; 121: MOV temp[108].x, const[3].z___; 122: MAD temp[100].xy, const[0].xy__, temp[108].xy__, input[0].xy__; 123: TEX temp[101], temp[100].xy__, 2D[0]; 124: MAD temp[103].xy, const[0].xy__, const[1].zx__, input[0].xy__; 125: TEX temp[104], temp[103].xy__, 2D[0]; 126: ADD temp[105], (temp[101] + temp[99]), temp[104]; 127: MOV temp[110].y, const[1]._x__; 128: MOV temp[110].x, const[1].y___; 129: MAD temp[106].xy, const[0].xy__, temp[110].xy__, input[0].xy__; 130: TEX temp[107], temp[106].xy__, 2D[0]; 131: MUL temp[109], (temp[107] + temp[105]), const[5].zzzz; 132: MOV output[0], temp[109]; CONST[1] = { -3.5000 3.5000 2.5000 1.5000 } CONST[2] = { -3.5000 0.5000 -0.5000 -1.5000 } CONST[3] = { -3.5000 -2.5000 2.5000 1.5000 } CONST[4] = { -2.5000 0.5000 -0.5000 -1.5000 } CONST[5] = { -1.5000 1.5000 0.0278 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[2].xy, const[0].xy__, const[1].xy__, input[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV temp[0].x, const[1].x___; 3: MOV temp[0].y, const[1]._z__; 4: MAD temp[4].xy, const[0].xy__, temp[0].xy__, input[0].xy__; 5: TEX temp[5], temp[4].xy__, 2D[0]; 6: MOV temp[1].x, const[1].x___; 7: MOV temp[1].y, const[1]._w__; 8: MAD temp[7].xy, const[0].xy__, temp[1].xy__, input[0].xy__; 9: TEX temp[8], temp[7].xy__, 2D[0]; 10: ADD temp[9], (temp[5] + temp[3]), temp[8]; 11: MAD temp[10].xy, const[0].xy__, const[2].xy__, input[0].xy__; 12: TEX temp[11], temp[10].xy__, 2D[0]; 13: MOV temp[6].x, const[2].x___; 14: MOV temp[6].y, -const[2]._H__; 15: MAD temp[13].xy, const[0].xy__, temp[6].xy__, input[0].xy__; 16: TEX temp[14], temp[13].xy__, 2D[0]; 17: ADD temp[15], (temp[11] + temp[9]), temp[14]; 18: MOV temp[12].x, const[2].x___; 19: MOV temp[12].y, const[2]._w__; 20: MAD temp[16].xy, const[0].xy__, temp[12].xy__, input[0].xy__; 21: TEX temp[17], temp[16].xy__, 2D[0]; 22: MAD temp[19].xy, const[0].xy__, const[3].xy__, input[0].xy__; 23: TEX temp[20], temp[19].xy__, 2D[0]; 24: ADD temp[21], (temp[17] + temp[15]), temp[20]; 25: MAD temp[22].xy, const[0].xy__, const[1].xx__, input[0].xy__; 26: TEX temp[23], temp[22].xy__, 2D[0]; 27: MAD temp[25].xy, const[0].xy__, const[3].yz__, input[0].xy__; 28: TEX temp[26], temp[25].xy__, 2D[0]; 29: ADD temp[27], (temp[23] + temp[21]), temp[26]; 30: MOV temp[18].x, const[3].y___; 31: MOV temp[18].y, const[3]._w__; 32: MAD temp[28].xy, const[0].xy__, temp[18].xy__, input[0].xy__; 33: TEX temp[29], temp[28].xy__, 2D[0]; 34: MAD temp[31].xy, const[0].xy__, const[4].xy__, input[0].xy__; 35: TEX temp[32], temp[31].xy__, 2D[0]; 36: ADD temp[33], (temp[29] + temp[27]), temp[32]; 37: MOV temp[24].x, const[4].x___; 38: MOV temp[24].y, -const[4]._H__; 39: MAD temp[34].xy, const[0].xy__, temp[24].xy__, input[0].xy__; 40: TEX temp[35], temp[34].xy__, 2D[0]; 41: MOV temp[30].x, const[4].x___; 42: MOV temp[30].y, const[4]._w__; 43: MAD temp[37].xy, const[0].xy__, temp[30].xy__, input[0].xy__; 44: TEX temp[38], temp[37].xy__, 2D[0]; 45: ADD temp[39], (temp[35] + temp[33]), temp[38]; 46: MAD temp[40].xy, const[0].xy__, const[3].yy__, input[0].xy__; 47: TEX temp[41], temp[40].xy__, 2D[0]; 48: MOV temp[36].y, const[3]._x__; 49: MOV temp[36].x, const[3].y___; 50: MAD temp[43].xy, const[0].xy__, temp[36].xy__, input[0].xy__; 51: TEX temp[44], temp[43].xy__, 2D[0]; 52: ADD temp[45], (temp[41] + temp[39]), temp[44]; 53: MAD temp[46].xy, const[0].xy__, const[5].xy__, input[0].xy__; 54: TEX temp[47], temp[46].xy__, 2D[0]; 55: MOV temp[42].x, const[2].w___; 56: MOV temp[42].y, const[2]._H__; 57: MAD temp[49].xy, const[0].xy__, temp[42].xy__, input[0].xy__; 58: TEX temp[50], temp[49].xy__, 2D[0]; 59: ADD temp[51], (temp[47] + temp[45]), temp[50]; 60: MAD temp[52].xy, const[0].xy__, const[2].wz__, input[0].xy__; 61: TEX temp[53], temp[52].xy__, 2D[0]; 62: MAD temp[55].xy, const[0].xy__, const[2].ww__, input[0].xy__; 63: TEX temp[56], temp[55].xy__, 2D[0]; 64: ADD temp[57], (temp[53] + temp[51]), temp[56]; 65: MOV temp[48].y, const[4]._x__; 66: MOV temp[48].x, const[4].w___; 67: MAD temp[58].xy, const[0].xy__, temp[48].xy__, input[0].xy__; 68: TEX temp[59], temp[58].xy__, 2D[0]; 69: MOV temp[54].y, const[2]._x__; 70: MOV temp[54].x, const[2].w___; 71: MAD temp[61].xy, const[0].xy__, temp[54].xy__, input[0].xy__; 72: TEX temp[62], temp[61].xy__, 2D[0]; 73: ADD temp[63], (temp[59] + temp[57]), temp[62]; 74: MOV temp[60].x, -none.H___; 75: MOV temp[60].y, none._H__; 76: MAD temp[64].xy, const[0].xy__, temp[60].xy__, input[0].xy__; 77: TEX temp[65], temp[64].xy__, 2D[0]; 78: MAD temp[67].xy, const[0].xy__, none.-H-H__, input[0].xy__; 79: TEX temp[68], temp[67].xy__, 2D[0]; 80: ADD temp[69], (temp[65] + temp[63]), temp[68]; 81: MOV temp[66].y, const[2]._w__; 82: MOV temp[66].x, -const[2].H___; 83: MAD temp[70].xy, const[0].xy__, temp[66].xy__, input[0].xy__; 84: TEX temp[71], temp[70].xy__, 2D[0]; 85: MAD temp[73].xy, const[0].xy__, const[4].zx__, input[0].xy__; 86: TEX temp[74], temp[73].xy__, 2D[0]; 87: ADD temp[75], (temp[71] + temp[69]), temp[74]; 88: MAD temp[76].xy, const[0].xy__, const[2].zx__, input[0].xy__; 89: TEX temp[77], temp[76].xy__, 2D[0]; 90: MAD temp[79].xy, const[0].xy__, const[2].yz__, input[0].xy__; 91: TEX temp[80], temp[79].xy__, 2D[0]; 92: ADD temp[81], (temp[77] + temp[75]), temp[80]; 93: MOV temp[72].y, const[2]._w__; 94: MOV temp[72].x, const[2].H___; 95: MAD temp[82].xy, const[0].xy__, temp[72].xy__, input[0].xy__; 96: TEX temp[83], temp[82].xy__, 2D[0]; 97: MOV temp[78].y, const[4]._x__; 98: MOV temp[78].x, const[4].H___; 99: MAD temp[85].xy, const[0].xy__, temp[78].xy__, input[0].xy__; 100: TEX temp[86], temp[85].xy__, 2D[0]; 101: ADD temp[87], (temp[83] + temp[81]), temp[86]; 102: MOV temp[84].y, const[2]._x__; 103: MOV temp[84].x, const[2].H___; 104: MAD temp[88].xy, const[0].xy__, temp[84].xy__, input[0].xy__; 105: TEX temp[89], temp[88].xy__, 2D[0]; 106: MOV temp[90].y, const[5]._x__; 107: MOV temp[90].x, const[5].y___; 108: MAD temp[91].xy, const[0].xy__, temp[90].xy__, input[0].xy__; 109: TEX temp[92], temp[91].xy__, 2D[0]; 110: ADD temp[93], (temp[89] + temp[87]), temp[92]; 111: MOV temp[96].y, const[3]._y__; 112: MOV temp[96].x, const[3].w___; 113: MAD temp[94].xy, const[0].xy__, temp[96].xy__, input[0].xy__; 114: TEX temp[95], temp[94].xy__, 2D[0]; 115: MOV temp[102].y, const[1]._x__; 116: MOV temp[102].x, const[1].w___; 117: MAD temp[97].xy, const[0].xy__, temp[102].xy__, input[0].xy__; 118: TEX temp[98], temp[97].xy__, 2D[0]; 119: ADD temp[99], (temp[95] + temp[93]), temp[98]; 120: MOV temp[108].y, const[3]._y__; 121: MOV temp[108].x, const[3].z___; 122: MAD temp[100].xy, const[0].xy__, temp[108].xy__, input[0].xy__; 123: TEX temp[101], temp[100].xy__, 2D[0]; 124: MAD temp[103].xy, const[0].xy__, const[1].zx__, input[0].xy__; 125: TEX temp[104], temp[103].xy__, 2D[0]; 126: ADD temp[105], (temp[101] + temp[99]), temp[104]; 127: MOV temp[110].y, const[1]._x__; 128: MOV temp[110].x, const[1].y___; 129: MAD temp[106].xy, const[0].xy__, temp[110].xy__, input[0].xy__; 130: TEX temp[107], temp[106].xy__, 2D[0]; 131: MUL temp[109], (temp[107] + temp[105]), const[5].zzzz; 132: MOV output[0], temp[109]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: src0.xyz = const[1] MAD temp[0].x, src0.x__, src0.111, src0.000 3: src0.xyz = const[1] MAD temp[0].y, src0._z_, src0.111, src0.000 4: src0.xyz = const[0], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[4].xy, src0.xy_, src1.xy_, src2.xy_ 5: TEX temp[5], temp[4].xy__, 2D[0]; 6: src0.xyz = const[1] MAD temp[1].x, src0.x__, src0.111, src0.000 7: src0.w = const[1] MAD temp[1].y, src0._w_, src0.111, src0.000 8: src0.xyz = const[0], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 9: TEX temp[8], temp[7].xy__, 2D[0]; 10: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = temp[5], src1.w = temp[5], src2.xyz = temp[8], src2.w = temp[8], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[9].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[9].w, srcp.w, src0.1, src2.w 11: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 12: TEX temp[11], temp[10].xy__, 2D[0]; 13: src0.xyz = const[2] MAD temp[6].x, src0.x__, src0.111, src0.000 14: MAD temp[6].y, -src0._H_, src0.111, src0.000 15: src0.xyz = const[0], src1.xyz = temp[6], src2.xyz = input[0] MAD temp[13].xy, src0.xy_, src1.xy_, src2.xy_ 16: TEX temp[14], temp[13].xy__, 2D[0]; 17: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[11], src1.w = temp[11], src2.xyz = temp[14], src2.w = temp[14], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[15].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[15].w, srcp.w, src0.1, src2.w 18: src0.xyz = const[2] MAD temp[12].x, src0.x__, src0.111, src0.000 19: src0.w = const[2] MAD temp[12].y, src0._w_, src0.111, src0.000 20: src0.xyz = const[0], src1.xyz = temp[12], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xy_, src2.xy_ 21: TEX temp[17], temp[16].xy__, 2D[0]; 22: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[19].xy, src0.xy_, src1.xy_, src2.xy_ 23: TEX temp[20], temp[19].xy__, 2D[0]; 24: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[17], src1.w = temp[17], src2.xyz = temp[20], src2.w = temp[20], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[21].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[21].w, srcp.w, src0.1, src2.w 25: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[22].xy, src0.xy_, src1.xx_, src2.xy_ 26: TEX temp[23], temp[22].xy__, 2D[0]; 27: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[25].xy, src0.xy_, src1.yz_, src2.xy_ 28: TEX temp[26], temp[25].xy__, 2D[0]; 29: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[23], src1.w = temp[23], src2.xyz = temp[26], src2.w = temp[26], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[27].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[27].w, srcp.w, src0.1, src2.w 30: src0.xyz = const[3] MAD temp[18].x, src0.y__, src0.111, src0.000 31: src0.w = const[3] MAD temp[18].y, src0._w_, src0.111, src0.000 32: src0.xyz = const[0], src1.xyz = temp[18], src2.xyz = input[0] MAD temp[28].xy, src0.xy_, src1.xy_, src2.xy_ 33: TEX temp[29], temp[28].xy__, 2D[0]; 34: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[31].xy, src0.xy_, src1.xy_, src2.xy_ 35: TEX temp[32], temp[31].xy__, 2D[0]; 36: src0.xyz = temp[27], src0.w = temp[27], src1.xyz = temp[29], src1.w = temp[29], src2.xyz = temp[32], src2.w = temp[32], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[33].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[33].w, srcp.w, src0.1, src2.w 37: src0.xyz = const[4] MAD temp[24].x, src0.x__, src0.111, src0.000 38: MAD temp[24].y, -src0._H_, src0.111, src0.000 39: src0.xyz = const[0], src1.xyz = temp[24], src2.xyz = input[0] MAD temp[34].xy, src0.xy_, src1.xy_, src2.xy_ 40: TEX temp[35], temp[34].xy__, 2D[0]; 41: src0.xyz = const[4] MAD temp[30].x, src0.x__, src0.111, src0.000 42: src0.w = const[4] MAD temp[30].y, src0._w_, src0.111, src0.000 43: src0.xyz = const[0], src1.xyz = temp[30], src2.xyz = input[0] MAD temp[37].xy, src0.xy_, src1.xy_, src2.xy_ 44: TEX temp[38], temp[37].xy__, 2D[0]; 45: src0.xyz = temp[33], src0.w = temp[33], src1.xyz = temp[35], src1.w = temp[35], src2.xyz = temp[38], src2.w = temp[38], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[39].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[39].w, srcp.w, src0.1, src2.w 46: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[40].xy, src0.xy_, src1.yy_, src2.xy_ 47: TEX temp[41], temp[40].xy__, 2D[0]; 48: src0.xyz = const[3] MAD temp[36].y, src0._x_, src0.111, src0.000 49: src0.xyz = const[3] MAD temp[36].x, src0.y__, src0.111, src0.000 50: src0.xyz = const[0], src1.xyz = temp[36], src2.xyz = input[0] MAD temp[43].xy, src0.xy_, src1.xy_, src2.xy_ 51: TEX temp[44], temp[43].xy__, 2D[0]; 52: src0.xyz = temp[39], src0.w = temp[39], src1.xyz = temp[41], src1.w = temp[41], src2.xyz = temp[44], src2.w = temp[44], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[45].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[45].w, srcp.w, src0.1, src2.w 53: src0.xyz = const[0], src1.xyz = const[5], src2.xyz = input[0] MAD temp[46].xy, src0.xy_, src1.xy_, src2.xy_ 54: TEX temp[47], temp[46].xy__, 2D[0]; 55: src0.w = const[2] MAD temp[42].x, src0.w__, src0.111, src0.000 56: MAD temp[42].y, src0._H_, src0.111, src0.000 57: src0.xyz = const[0], src1.xyz = temp[42], src2.xyz = input[0] MAD temp[49].xy, src0.xy_, src1.xy_, src2.xy_ 58: TEX temp[50], temp[49].xy__, 2D[0]; 59: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = temp[47], src1.w = temp[47], src2.xyz = temp[50], src2.w = temp[50], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[51].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[51].w, srcp.w, src0.1, src2.w 60: src0.xyz = const[0], src1.xyz = const[2], src1.w = const[2], src2.xyz = input[0] MAD temp[52].xy, src0.xy_, src1.wz_, src2.xy_ 61: TEX temp[53], temp[52].xy__, 2D[0]; 62: src0.xyz = const[0], src0.w = const[2], src1.xyz = input[0] MAD temp[55].xy, src0.xy_, src0.ww_, src1.xy_ 63: TEX temp[56], temp[55].xy__, 2D[0]; 64: src0.xyz = temp[51], src0.w = temp[51], src1.xyz = temp[53], src1.w = temp[53], src2.xyz = temp[56], src2.w = temp[56], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[57].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[57].w, srcp.w, src0.1, src2.w 65: src0.xyz = const[4] MAD temp[48].y, src0._x_, src0.111, src0.000 66: src0.w = const[4] MAD temp[48].x, src0.w__, src0.111, src0.000 67: src0.xyz = const[0], src1.xyz = temp[48], src2.xyz = input[0] MAD temp[58].xy, src0.xy_, src1.xy_, src2.xy_ 68: TEX temp[59], temp[58].xy__, 2D[0]; 69: src0.xyz = const[2] MAD temp[54].y, src0._x_, src0.111, src0.000 70: src0.w = const[2] MAD temp[54].x, src0.w__, src0.111, src0.000 71: src0.xyz = const[0], src1.xyz = temp[54], src2.xyz = input[0] MAD temp[61].xy, src0.xy_, src1.xy_, src2.xy_ 72: TEX temp[62], temp[61].xy__, 2D[0]; 73: src0.xyz = temp[57], src0.w = temp[57], src1.xyz = temp[59], src1.w = temp[59], src2.xyz = temp[62], src2.w = temp[62], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[63].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[63].w, srcp.w, src0.1, src2.w 74: MAD temp[60].x, -src0.H__, src0.111, src0.000 75: MAD temp[60].y, src0._H_, src0.111, src0.000 76: src0.xyz = const[0], src1.xyz = temp[60], src2.xyz = input[0] MAD temp[64].xy, src0.xy_, src1.xy_, src2.xy_ 77: TEX temp[65], temp[64].xy__, 2D[0]; 78: src0.xyz = const[0], src1.xyz = input[0] MAD temp[67].xy, src0.xy_, -src0.HH_, src1.xy_ 79: TEX temp[68], temp[67].xy__, 2D[0]; 80: src0.xyz = temp[63], src0.w = temp[63], src1.xyz = temp[65], src1.w = temp[65], src2.xyz = temp[68], src2.w = temp[68], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[69].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[69].w, srcp.w, src0.1, src2.w 81: src0.w = const[2] MAD temp[66].y, src0._w_, src0.111, src0.000 82: MAD temp[66].x, -src0.H__, src0.111, src0.000 83: src0.xyz = const[0], src1.xyz = temp[66], src2.xyz = input[0] MAD temp[70].xy, src0.xy_, src1.xy_, src2.xy_ 84: TEX temp[71], temp[70].xy__, 2D[0]; 85: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[73].xy, src0.xy_, src1.zx_, src2.xy_ 86: TEX temp[74], temp[73].xy__, 2D[0]; 87: src0.xyz = temp[69], src0.w = temp[69], src1.xyz = temp[71], src1.w = temp[71], src2.xyz = temp[74], src2.w = temp[74], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[75].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[75].w, srcp.w, src0.1, src2.w 88: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[76].xy, src0.xy_, src1.zx_, src2.xy_ 89: TEX temp[77], temp[76].xy__, 2D[0]; 90: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[79].xy, src0.xy_, src1.yz_, src2.xy_ 91: TEX temp[80], temp[79].xy__, 2D[0]; 92: src0.xyz = temp[75], src0.w = temp[75], src1.xyz = temp[77], src1.w = temp[77], src2.xyz = temp[80], src2.w = temp[80], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[81].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[81].w, srcp.w, src0.1, src2.w 93: src0.w = const[2] MAD temp[72].y, src0._w_, src0.111, src0.000 94: MAD temp[72].x, src0.H__, src0.111, src0.000 95: src0.xyz = const[0], src1.xyz = temp[72], src2.xyz = input[0] MAD temp[82].xy, src0.xy_, src1.xy_, src2.xy_ 96: TEX temp[83], temp[82].xy__, 2D[0]; 97: src0.xyz = const[4] MAD temp[78].y, src0._x_, src0.111, src0.000 98: MAD temp[78].x, src0.H__, src0.111, src0.000 99: src0.xyz = const[0], src1.xyz = temp[78], src2.xyz = input[0] MAD temp[85].xy, src0.xy_, src1.xy_, src2.xy_ 100: TEX temp[86], temp[85].xy__, 2D[0]; 101: src0.xyz = temp[81], src0.w = temp[81], src1.xyz = temp[83], src1.w = temp[83], src2.xyz = temp[86], src2.w = temp[86], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[87].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[87].w, srcp.w, src0.1, src2.w 102: src0.xyz = const[2] MAD temp[84].y, src0._x_, src0.111, src0.000 103: MAD temp[84].x, src0.H__, src0.111, src0.000 104: src0.xyz = const[0], src1.xyz = temp[84], src2.xyz = input[0] MAD temp[88].xy, src0.xy_, src1.xy_, src2.xy_ 105: TEX temp[89], temp[88].xy__, 2D[0]; 106: src0.xyz = const[5] MAD temp[90].y, src0._x_, src0.111, src0.000 107: src0.xyz = const[5] MAD temp[90].x, src0.y__, src0.111, src0.000 108: src0.xyz = const[0], src1.xyz = temp[90], src2.xyz = input[0] MAD temp[91].xy, src0.xy_, src1.xy_, src2.xy_ 109: TEX temp[92], temp[91].xy__, 2D[0]; 110: src0.xyz = temp[87], src0.w = temp[87], src1.xyz = temp[89], src1.w = temp[89], src2.xyz = temp[92], src2.w = temp[92], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[93].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[93].w, srcp.w, src0.1, src2.w 111: src0.xyz = const[3] MAD temp[96].y, src0._y_, src0.111, src0.000 112: src0.w = const[3] MAD temp[96].x, src0.w__, src0.111, src0.000 113: src0.xyz = const[0], src1.xyz = temp[96], src2.xyz = input[0] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ 114: TEX temp[95], temp[94].xy__, 2D[0]; 115: src0.xyz = const[1] MAD temp[102].y, src0._x_, src0.111, src0.000 116: src0.w = const[1] MAD temp[102].x, src0.w__, src0.111, src0.000 117: src0.xyz = const[0], src1.xyz = temp[102], src2.xyz = input[0] MAD temp[97].xy, src0.xy_, src1.xy_, src2.xy_ 118: TEX temp[98], temp[97].xy__, 2D[0]; 119: src0.xyz = temp[93], src0.w = temp[93], src1.xyz = temp[95], src1.w = temp[95], src2.xyz = temp[98], src2.w = temp[98], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[99].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[99].w, srcp.w, src0.1, src2.w 120: src0.xyz = const[3] MAD temp[108].y, src0._y_, src0.111, src0.000 121: src0.xyz = const[3] MAD temp[108].x, src0.z__, src0.111, src0.000 122: src0.xyz = const[0], src1.xyz = temp[108], src2.xyz = input[0] MAD temp[100].xy, src0.xy_, src1.xy_, src2.xy_ 123: TEX temp[101], temp[100].xy__, 2D[0]; 124: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[103].xy, src0.xy_, src1.zx_, src2.xy_ 125: TEX temp[104], temp[103].xy__, 2D[0]; 126: src0.xyz = temp[99], src0.w = temp[99], src1.xyz = temp[101], src1.w = temp[101], src2.xyz = temp[104], src2.w = temp[104], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[105].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[105].w, srcp.w, src0.1, src2.w 127: src0.xyz = const[1] MAD temp[110].y, src0._x_, src0.111, src0.000 128: src0.xyz = const[1] MAD temp[110].x, src0.y__, src0.111, src0.000 129: src0.xyz = const[0], src1.xyz = temp[110], src2.xyz = input[0] MAD temp[106].xy, src0.xy_, src1.xy_, src2.xy_ 130: TEX temp[107], temp[106].xy__, 2D[0]; 131: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = temp[107], src1.w = temp[107], src2.xyz = const[5], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[109].xyz, srcp.xyz, src2.zzz, src0.000 MAD temp[109].w, srcp.w, src2.z, src0.0 132: src0.xyz = temp[109], src0.w = temp[109] 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], src1.xyz = const[2], src1.w = const[2], src2.xyz = input[0] MAD temp[52].xy, src0.xy_, src1.wz_, src2.xy_ 1: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 2: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[19].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[22].xy, src0.xy_, src1.xx_, src2.xy_ 5: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[25].xy, src0.xy_, src1.yz_, src2.xy_ 6: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[31].xy, src0.xy_, src1.xy_, src2.xy_ 7: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[40].xy, src0.xy_, src1.yy_, src2.xy_ 8: BEGIN_TEX; 9: TEX temp[53], temp[52].xy__, 2D[0]; 10: TEX temp[3], temp[2].xy__, 2D[0]; 11: TEX temp[11], temp[10].xy__, 2D[0]; 12: TEX temp[20], temp[19].xy__, 2D[0]; 13: TEX temp[23], temp[22].xy__, 2D[0]; 14: TEX temp[26], temp[25].xy__, 2D[0]; 15: TEX temp[32], temp[31].xy__, 2D[0]; 16: TEX temp[41], temp[40].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 17: src0.xyz = const[0], src1.xyz = const[5], src2.xyz = input[0] MAD temp[46].xy, src0.xy_, src1.xy_, src2.xy_ 18: src0.xyz = const[0], src0.w = const[2], src1.xyz = input[0] MAD temp[55].xy, src0.xy_, src0.ww_, src1.xy_ 19: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[73].xy, src0.xy_, src1.zx_, src2.xy_ 20: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[76].xy, src0.xy_, src1.zx_, src2.xy_ 21: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[79].xy, src0.xy_, src1.yz_, src2.xy_ 22: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[103].xy, src0.xy_, src1.zx_, src2.xy_ 23: src0.xyz = const[0], src1.xyz = input[0] MAD temp[67].xy, src0.xy_, -src0.HH_, src1.xy_ 24: src0.xyz = const[1] MAD temp[0].x, src0.x__, src0.111, src0.000 25: src0.xyz = const[1] MAD temp[0].y, src0._z_, src0.111, src0.000 26: src0.xyz = const[1] MAD temp[1].x, src0.x__, src0.111, src0.000 27: src0.w = const[1] MAD temp[1].y, src0._w_, src0.111, src0.000 28: src0.xyz = const[2] MAD temp[6].x, src0.x__, src0.111, src0.000 29: src0.xyz = const[2] MAD temp[12].x, src0.x__, src0.111, src0.000 30: src0.w = const[2] MAD temp[12].y, src0._w_, src0.111, src0.000 31: src0.xyz = const[3] MAD temp[18].x, src0.y__, src0.111, src0.000 32: src0.w = const[3] MAD temp[18].y, src0._w_, src0.111, src0.000 33: src0.xyz = const[4] MAD temp[24].x, src0.x__, src0.111, src0.000 34: src0.xyz = const[4] MAD temp[30].x, src0.x__, src0.111, src0.000 35: src0.xyz = const[0], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[4].xy, src0.xy_, src1.xy_, src2.xy_ 36: BEGIN_TEX; 37: TEX temp[47], temp[46].xy__, 2D[0]; 38: TEX temp[56], temp[55].xy__, 2D[0]; 39: TEX temp[74], temp[73].xy__, 2D[0]; 40: TEX temp[77], temp[76].xy__, 2D[0]; 41: TEX temp[80], temp[79].xy__, 2D[0]; 42: TEX temp[104], temp[103].xy__, 2D[0]; 43: TEX temp[68], temp[67].xy__, 2D[0]; 44: TEX temp[5], temp[4].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.w = const[4] MAD temp[30].y, src0._w_, src0.111, src0.000 46: src0.xyz = const[0], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 47: src0.xyz = const[3] MAD temp[36].y, src0._x_, src0.111, src0.000 48: src0.xyz = const[3] MAD temp[36].x, src0.y__, src0.111, src0.000 49: src0.w = const[2] MAD temp[42].x, src0.w__, src0.111, src0.000 50: src0.xyz = const[0], src1.xyz = temp[12], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xy_, src2.xy_ 51: src0.xyz = const[4] MAD temp[48].y, src0._x_, src0.111, src0.000 52: src0.w = const[4] MAD temp[48].x, src0.w__, src0.111, src0.000 53: src0.xyz = const[0], src1.xyz = temp[18], src2.xyz = input[0] MAD temp[28].xy, src0.xy_, src1.xy_, src2.xy_ 54: src0.xyz = const[2] MAD temp[54].y, src0._x_, src0.111, src0.000 55: src0.w = const[2] MAD temp[54].x, src0.w__, src0.111, src0.000 56: src0.w = const[2] MAD temp[66].y, src0._w_, src0.111, src0.000 57: src0.w = const[2] MAD temp[72].y, src0._w_, src0.111, src0.000 58: src0.xyz = const[4] MAD temp[78].y, src0._x_, src0.111, src0.000 59: src0.xyz = const[2] MAD temp[84].y, src0._x_, src0.111, src0.000 60: src0.xyz = const[5] MAD temp[90].y, src0._x_, src0.111, src0.000 61: src0.xyz = const[0], src1.xyz = temp[30], src2.xyz = input[0] MAD temp[37].xy, src0.xy_, src1.xy_, src2.xy_ 62: src0.xyz = const[5] MAD temp[90].x, src0.y__, src0.111, src0.000 63: src0.xyz = const[3] MAD temp[96].y, src0._y_, src0.111, src0.000 64: src0.w = const[3] MAD temp[96].x, src0.w__, src0.111, src0.000 65: src0.xyz = const[0], src1.xyz = temp[36], src2.xyz = input[0] MAD temp[43].xy, src0.xy_, src1.xy_, src2.xy_ 66: src0.xyz = const[1] MAD temp[102].y, src0._x_, src0.111, src0.000 67: src0.w = const[1] MAD temp[102].x, src0.w__, src0.111, src0.000 68: src0.xyz = const[3] MAD temp[108].y, src0._y_, src0.111, src0.000 69: src0.xyz = const[3] MAD temp[108].x, src0.z__, src0.111, src0.000 70: src0.xyz = const[1] MAD temp[110].y, src0._x_, src0.111, src0.000 71: src0.xyz = const[0], src1.xyz = temp[48], src2.xyz = input[0] MAD temp[58].xy, src0.xy_, src1.xy_, src2.xy_ 72: src0.xyz = const[1] MAD temp[110].x, src0.y__, src0.111, src0.000 73: src0.xyz = const[0], src1.xyz = temp[54], src2.xyz = input[0] MAD temp[61].xy, src0.xy_, src1.xy_, src2.xy_ 74: src0.xyz = const[0], src1.xyz = temp[90], src2.xyz = input[0] MAD temp[91].xy, src0.xy_, src1.xy_, src2.xy_ 75: BEGIN_TEX; 76: TEX temp[8], temp[7].xy__, 2D[0]; 77: TEX temp[17], temp[16].xy__, 2D[0]; 78: TEX temp[29], temp[28].xy__, 2D[0]; 79: TEX temp[38], temp[37].xy__, 2D[0]; 80: TEX temp[44], temp[43].xy__, 2D[0]; 81: TEX temp[59], temp[58].xy__, 2D[0]; 82: TEX temp[62], temp[61].xy__, 2D[0]; 83: TEX temp[92], temp[91].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 84: src0.xyz = const[0], src1.xyz = temp[96], src2.xyz = input[0] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ 85: src0.xyz = const[0], src1.xyz = temp[102], src2.xyz = input[0] MAD temp[97].xy, src0.xy_, src1.xy_, src2.xy_ 86: src0.xyz = const[0], src1.xyz = temp[108], src2.xyz = input[0] MAD temp[100].xy, src0.xy_, src1.xy_, src2.xy_ 87: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = temp[5], src1.w = temp[5], src2.xyz = temp[8], src2.w = temp[8], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[9].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[9].w, srcp.w, src0.1, src2.w 88: src0.xyz = const[0], src1.xyz = temp[110], src2.xyz = input[0] MAD temp[106].xy, src0.xy_, src1.xy_, src2.xy_ 89: MAD temp[6].y, -src0._H_, src0.111, src0.000 90: src0.xyz = const[0], src1.xyz = temp[6], src2.xyz = input[0] MAD temp[13].xy, src0.xy_, src1.xy_, src2.xy_ 91: MAD temp[24].y, -src0._H_, src0.111, src0.000 92: src0.xyz = const[0], src1.xyz = temp[24], src2.xyz = input[0] MAD temp[34].xy, src0.xy_, src1.xy_, src2.xy_ 93: MAD temp[42].y, src0._H_, src0.111, src0.000 94: src0.xyz = const[0], src1.xyz = temp[42], src2.xyz = input[0] MAD temp[49].xy, src0.xy_, src1.xy_, src2.xy_ 95: MAD temp[60].x, -src0.H__, src0.111, src0.000 96: MAD temp[60].y, src0._H_, src0.111, src0.000 97: src0.xyz = const[0], src1.xyz = temp[60], src2.xyz = input[0] MAD temp[64].xy, src0.xy_, src1.xy_, src2.xy_ 98: BEGIN_TEX; 99: TEX temp[95], temp[94].xy__, 2D[0]; 100: TEX temp[98], temp[97].xy__, 2D[0]; 101: TEX temp[101], temp[100].xy__, 2D[0]; 102: TEX temp[107], temp[106].xy__, 2D[0]; 103: TEX temp[14], temp[13].xy__, 2D[0]; 104: TEX temp[35], temp[34].xy__, 2D[0]; 105: TEX temp[50], temp[49].xy__, 2D[0]; 106: TEX temp[65], temp[64].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 107: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[11], src1.w = temp[11], src2.xyz = temp[14], src2.w = temp[14], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[15].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[15].w, srcp.w, src0.1, src2.w 108: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[17], src1.w = temp[17], src2.xyz = temp[20], src2.w = temp[20], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[21].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[21].w, srcp.w, src0.1, src2.w 109: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[23], src1.w = temp[23], src2.xyz = temp[26], src2.w = temp[26], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[27].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[27].w, srcp.w, src0.1, src2.w 110: src0.xyz = temp[27], src0.w = temp[27], src1.xyz = temp[29], src1.w = temp[29], src2.xyz = temp[32], src2.w = temp[32], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[33].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[33].w, srcp.w, src0.1, src2.w 111: src0.xyz = temp[33], src0.w = temp[33], src1.xyz = temp[35], src1.w = temp[35], src2.xyz = temp[38], src2.w = temp[38], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[39].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[39].w, srcp.w, src0.1, src2.w 112: src0.xyz = temp[39], src0.w = temp[39], src1.xyz = temp[41], src1.w = temp[41], src2.xyz = temp[44], src2.w = temp[44], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[45].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[45].w, srcp.w, src0.1, src2.w 113: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = temp[47], src1.w = temp[47], src2.xyz = temp[50], src2.w = temp[50], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[51].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[51].w, srcp.w, src0.1, src2.w 114: src0.xyz = temp[51], src0.w = temp[51], src1.xyz = temp[53], src1.w = temp[53], src2.xyz = temp[56], src2.w = temp[56], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[57].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[57].w, srcp.w, src0.1, src2.w 115: src0.xyz = temp[57], src0.w = temp[57], src1.xyz = temp[59], src1.w = temp[59], src2.xyz = temp[62], src2.w = temp[62], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[63].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[63].w, srcp.w, src0.1, src2.w 116: src0.xyz = temp[63], src0.w = temp[63], src1.xyz = temp[65], src1.w = temp[65], src2.xyz = temp[68], src2.w = temp[68], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[69].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[69].w, srcp.w, src0.1, src2.w 117: MAD temp[66].x, -src0.H__, src0.111, src0.000 118: src0.xyz = const[0], src1.xyz = temp[66], src2.xyz = input[0] MAD temp[70].xy, src0.xy_, src1.xy_, src2.xy_ 119: MAD temp[72].x, src0.H__, src0.111, src0.000 120: src0.xyz = const[0], src1.xyz = temp[72], src2.xyz = input[0] MAD temp[82].xy, src0.xy_, src1.xy_, src2.xy_ 121: MAD temp[78].x, src0.H__, src0.111, src0.000 122: src0.xyz = const[0], src1.xyz = temp[78], src2.xyz = input[0] MAD temp[85].xy, src0.xy_, src1.xy_, src2.xy_ 123: MAD temp[84].x, src0.H__, src0.111, src0.000 124: src0.xyz = const[0], src1.xyz = temp[84], src2.xyz = input[0] MAD temp[88].xy, src0.xy_, src1.xy_, src2.xy_ 125: BEGIN_TEX; 126: TEX temp[71], temp[70].xy__, 2D[0]; 127: TEX temp[83], temp[82].xy__, 2D[0]; 128: TEX temp[86], temp[85].xy__, 2D[0]; 129: TEX temp[89], temp[88].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 130: src0.xyz = temp[69], src0.w = temp[69], src1.xyz = temp[71], src1.w = temp[71], src2.xyz = temp[74], src2.w = temp[74], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[75].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[75].w, srcp.w, src0.1, src2.w 131: src0.xyz = temp[75], src0.w = temp[75], src1.xyz = temp[77], src1.w = temp[77], src2.xyz = temp[80], src2.w = temp[80], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[81].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[81].w, srcp.w, src0.1, src2.w 132: src0.xyz = temp[81], src0.w = temp[81], src1.xyz = temp[83], src1.w = temp[83], src2.xyz = temp[86], src2.w = temp[86], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[87].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[87].w, srcp.w, src0.1, src2.w 133: src0.xyz = temp[87], src0.w = temp[87], src1.xyz = temp[89], src1.w = temp[89], src2.xyz = temp[92], src2.w = temp[92], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[93].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[93].w, srcp.w, src0.1, src2.w 134: src0.xyz = temp[93], src0.w = temp[93], src1.xyz = temp[95], src1.w = temp[95], src2.xyz = temp[98], src2.w = temp[98], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[99].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[99].w, srcp.w, src0.1, src2.w 135: src0.xyz = temp[99], src0.w = temp[99], src1.xyz = temp[101], src1.w = temp[101], src2.xyz = temp[104], src2.w = temp[104], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[105].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[105].w, srcp.w, src0.1, src2.w 136: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = temp[107], src1.w = temp[107], src2.xyz = const[5], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[109].xyz, srcp.xyz, src2.zzz, src0.000 MAD temp[109].w, srcp.w, src2.z, src0.0 137: src0.xyz = temp[109], src0.w = temp[109] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = const[2], src1.w = const[2], src2.xyz = input[0] MAD temp[52].xy, src0.xy_, src1.wz_, src2.xy_ 1: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 2: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[19].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[22].xy, src0.xy_, src1.xx_, src2.xy_ 5: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[25].xy, src0.xy_, src1.yz_, src2.xy_ 6: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[31].xy, src0.xy_, src1.xy_, src2.xy_ 7: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[40].xy, src0.xy_, src1.yy_, src2.xy_ 8: BEGIN_TEX; 9: TEX temp[53], temp[52].xy__, 2D[0]; 10: TEX temp[3], temp[2].xy__, 2D[0]; 11: TEX temp[11], temp[10].xy__, 2D[0]; 12: TEX temp[20], temp[19].xy__, 2D[0]; 13: TEX temp[23], temp[22].xy__, 2D[0]; 14: TEX temp[26], temp[25].xy__, 2D[0]; 15: TEX temp[32], temp[31].xy__, 2D[0]; 16: TEX temp[41], temp[40].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 17: src0.xyz = const[0], src1.xyz = const[5], src2.xyz = input[0] MAD temp[46].xy, src0.xy_, src1.xy_, src2.xy_ 18: src0.xyz = const[0], src0.w = const[2], src1.xyz = input[0] MAD temp[55].xy, src0.xy_, src0.ww_, src1.xy_ 19: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[73].xy, src0.xy_, src1.zx_, src2.xy_ 20: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[76].xy, src0.xy_, src1.zx_, src2.xy_ 21: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[79].xy, src0.xy_, src1.yz_, src2.xy_ 22: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[103].xy, src0.xy_, src1.zx_, src2.xy_ 23: src0.xyz = const[0], src1.xyz = input[0] MAD temp[67].xy, src0.xy_, -src0.HH_, src1.xy_ 24: src0.xyz = const[1] MAD temp[0].x, src0.x__, src0.111, src0.000 25: src0.xyz = const[1] MAD temp[0].y, src0._z_, src0.111, src0.000 26: src0.xyz = const[1] MAD temp[1].x, src0.x__, src0.111, src0.000 27: src0.w = const[1] MAD temp[1].y, src0._w_, src0.111, src0.000 28: src0.xyz = const[2] MAD temp[6].x, src0.x__, src0.111, src0.000 29: src0.xyz = const[2] MAD temp[12].x, src0.x__, src0.111, src0.000 30: src0.w = const[2] MAD temp[12].y, src0._w_, src0.111, src0.000 31: src0.xyz = const[3] MAD temp[18].x, src0.y__, src0.111, src0.000 32: src0.w = const[3] MAD temp[18].y, src0._w_, src0.111, src0.000 33: src0.xyz = const[4] MAD temp[24].x, src0.x__, src0.111, src0.000 34: src0.xyz = const[4] MAD temp[30].x, src0.x__, src0.111, src0.000 35: src0.xyz = const[0], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[4].xy, src0.xy_, src1.xy_, src2.xy_ 36: BEGIN_TEX; 37: TEX temp[47], temp[46].xy__, 2D[0]; 38: TEX temp[56], temp[55].xy__, 2D[0]; 39: TEX temp[74], temp[73].xy__, 2D[0]; 40: TEX temp[77], temp[76].xy__, 2D[0]; 41: TEX temp[80], temp[79].xy__, 2D[0]; 42: TEX temp[104], temp[103].xy__, 2D[0]; 43: TEX temp[68], temp[67].xy__, 2D[0]; 44: TEX temp[5], temp[4].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.w = const[4] MAD temp[30].y, src0._w_, src0.111, src0.000 46: src0.xyz = const[0], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 47: src0.xyz = const[3] MAD temp[36].y, src0._x_, src0.111, src0.000 48: src0.xyz = const[3] MAD temp[36].x, src0.y__, src0.111, src0.000 49: src0.w = const[2] MAD temp[42].x, src0.w__, src0.111, src0.000 50: src0.xyz = const[0], src1.xyz = temp[12], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xy_, src2.xy_ 51: src0.xyz = const[4] MAD temp[48].y, src0._x_, src0.111, src0.000 52: src0.w = const[4] MAD temp[48].x, src0.w__, src0.111, src0.000 53: src0.xyz = const[0], src1.xyz = temp[18], src2.xyz = input[0] MAD temp[28].xy, src0.xy_, src1.xy_, src2.xy_ 54: src0.xyz = const[2] MAD temp[54].y, src0._x_, src0.111, src0.000 55: src0.w = const[2] MAD temp[54].x, src0.w__, src0.111, src0.000 56: src0.w = const[2] MAD temp[66].y, src0._w_, src0.111, src0.000 57: src0.w = const[2] MAD temp[72].y, src0._w_, src0.111, src0.000 58: src0.xyz = const[4] MAD temp[78].y, src0._x_, src0.111, src0.000 59: src0.xyz = const[2] MAD temp[84].y, src0._x_, src0.111, src0.000 60: src0.xyz = const[5] MAD temp[90].y, src0._x_, src0.111, src0.000 61: src0.xyz = const[0], src1.xyz = temp[30], src2.xyz = input[0] MAD temp[37].xy, src0.xy_, src1.xy_, src2.xy_ 62: src0.xyz = const[5] MAD temp[90].x, src0.y__, src0.111, src0.000 63: src0.xyz = const[3] MAD temp[96].y, src0._y_, src0.111, src0.000 64: src0.w = const[3] MAD temp[96].x, src0.w__, src0.111, src0.000 65: src0.xyz = const[0], src1.xyz = temp[36], src2.xyz = input[0] MAD temp[43].xy, src0.xy_, src1.xy_, src2.xy_ 66: src0.xyz = const[1] MAD temp[102].y, src0._x_, src0.111, src0.000 67: src0.w = const[1] MAD temp[102].x, src0.w__, src0.111, src0.000 68: src0.xyz = const[3] MAD temp[108].y, src0._y_, src0.111, src0.000 69: src0.xyz = const[3] MAD temp[108].x, src0.z__, src0.111, src0.000 70: src0.xyz = const[1] MAD temp[110].y, src0._x_, src0.111, src0.000 71: src0.xyz = const[0], src1.xyz = temp[48], src2.xyz = input[0] MAD temp[58].xy, src0.xy_, src1.xy_, src2.xy_ 72: src0.xyz = const[1] MAD temp[110].x, src0.y__, src0.111, src0.000 73: src0.xyz = const[0], src1.xyz = temp[54], src2.xyz = input[0] MAD temp[61].xy, src0.xy_, src1.xy_, src2.xy_ 74: src0.xyz = const[0], src1.xyz = temp[90], src2.xyz = input[0] MAD temp[91].xy, src0.xy_, src1.xy_, src2.xy_ 75: BEGIN_TEX; 76: TEX temp[8], temp[7].xy__, 2D[0]; 77: TEX temp[17], temp[16].xy__, 2D[0]; 78: TEX temp[29], temp[28].xy__, 2D[0]; 79: TEX temp[38], temp[37].xy__, 2D[0]; 80: TEX temp[44], temp[43].xy__, 2D[0]; 81: TEX temp[59], temp[58].xy__, 2D[0]; 82: TEX temp[62], temp[61].xy__, 2D[0]; 83: TEX temp[92], temp[91].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 84: src0.xyz = const[0], src1.xyz = temp[96], src2.xyz = input[0] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ 85: src0.xyz = const[0], src1.xyz = temp[102], src2.xyz = input[0] MAD temp[97].xy, src0.xy_, src1.xy_, src2.xy_ 86: src0.xyz = const[0], src1.xyz = temp[108], src2.xyz = input[0] MAD temp[100].xy, src0.xy_, src1.xy_, src2.xy_ 87: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = temp[5], src1.w = temp[5], src2.xyz = temp[8], src2.w = temp[8], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[9].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[9].w, srcp.w, src0.1, src2.w 88: src0.xyz = const[0], src1.xyz = temp[110], src2.xyz = input[0] MAD temp[106].xy, src0.xy_, src1.xy_, src2.xy_ 89: MAD temp[6].y, -src0._H_, src0.111, src0.000 90: src0.xyz = const[0], src1.xyz = temp[6], src2.xyz = input[0] MAD temp[13].xy, src0.xy_, src1.xy_, src2.xy_ 91: MAD temp[24].y, -src0._H_, src0.111, src0.000 92: src0.xyz = const[0], src1.xyz = temp[24], src2.xyz = input[0] MAD temp[34].xy, src0.xy_, src1.xy_, src2.xy_ 93: MAD temp[42].y, src0._H_, src0.111, src0.000 94: src0.xyz = const[0], src1.xyz = temp[42], src2.xyz = input[0] MAD temp[49].xy, src0.xy_, src1.xy_, src2.xy_ 95: MAD temp[60].x, -src0.H__, src0.111, src0.000 96: MAD temp[60].y, src0._H_, src0.111, src0.000 97: src0.xyz = const[0], src1.xyz = temp[60], src2.xyz = input[0] MAD temp[64].xy, src0.xy_, src1.xy_, src2.xy_ 98: BEGIN_TEX; 99: TEX temp[95], temp[94].xy__, 2D[0]; 100: TEX temp[98], temp[97].xy__, 2D[0]; 101: TEX temp[101], temp[100].xy__, 2D[0]; 102: TEX temp[107], temp[106].xy__, 2D[0]; 103: TEX temp[14], temp[13].xy__, 2D[0]; 104: TEX temp[35], temp[34].xy__, 2D[0]; 105: TEX temp[50], temp[49].xy__, 2D[0]; 106: TEX temp[65], temp[64].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 107: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[11], src1.w = temp[11], src2.xyz = temp[14], src2.w = temp[14], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[15].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[15].w, srcp.w, src0.1, src2.w 108: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[17], src1.w = temp[17], src2.xyz = temp[20], src2.w = temp[20], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[21].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[21].w, srcp.w, src0.1, src2.w 109: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[23], src1.w = temp[23], src2.xyz = temp[26], src2.w = temp[26], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[27].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[27].w, srcp.w, src0.1, src2.w 110: src0.xyz = temp[27], src0.w = temp[27], src1.xyz = temp[29], src1.w = temp[29], src2.xyz = temp[32], src2.w = temp[32], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[33].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[33].w, srcp.w, src0.1, src2.w 111: src0.xyz = temp[33], src0.w = temp[33], src1.xyz = temp[35], src1.w = temp[35], src2.xyz = temp[38], src2.w = temp[38], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[39].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[39].w, srcp.w, src0.1, src2.w 112: src0.xyz = temp[39], src0.w = temp[39], src1.xyz = temp[41], src1.w = temp[41], src2.xyz = temp[44], src2.w = temp[44], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[45].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[45].w, srcp.w, src0.1, src2.w 113: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = temp[47], src1.w = temp[47], src2.xyz = temp[50], src2.w = temp[50], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[51].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[51].w, srcp.w, src0.1, src2.w 114: src0.xyz = temp[51], src0.w = temp[51], src1.xyz = temp[53], src1.w = temp[53], src2.xyz = temp[56], src2.w = temp[56], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[57].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[57].w, srcp.w, src0.1, src2.w 115: src0.xyz = temp[57], src0.w = temp[57], src1.xyz = temp[59], src1.w = temp[59], src2.xyz = temp[62], src2.w = temp[62], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[63].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[63].w, srcp.w, src0.1, src2.w 116: src0.xyz = temp[63], src0.w = temp[63], src1.xyz = temp[65], src1.w = temp[65], src2.xyz = temp[68], src2.w = temp[68], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[69].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[69].w, srcp.w, src0.1, src2.w 117: MAD temp[66].x, -src0.H__, src0.111, src0.000 118: src0.xyz = const[0], src1.xyz = temp[66], src2.xyz = input[0] MAD temp[70].xy, src0.xy_, src1.xy_, src2.xy_ 119: MAD temp[72].x, src0.H__, src0.111, src0.000 120: src0.xyz = const[0], src1.xyz = temp[72], src2.xyz = input[0] MAD temp[82].xy, src0.xy_, src1.xy_, src2.xy_ 121: MAD temp[78].x, src0.H__, src0.111, src0.000 122: src0.xyz = const[0], src1.xyz = temp[78], src2.xyz = input[0] MAD temp[85].xy, src0.xy_, src1.xy_, src2.xy_ 123: MAD temp[84].x, src0.H__, src0.111, src0.000 124: src0.xyz = const[0], src1.xyz = temp[84], src2.xyz = input[0] MAD temp[88].xy, src0.xy_, src1.xy_, src2.xy_ 125: BEGIN_TEX; 126: TEX temp[71], temp[70].xy__, 2D[0]; 127: TEX temp[83], temp[82].xy__, 2D[0]; 128: TEX temp[86], temp[85].xy__, 2D[0]; 129: TEX temp[89], temp[88].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 130: src0.xyz = temp[69], src0.w = temp[69], src1.xyz = temp[71], src1.w = temp[71], src2.xyz = temp[74], src2.w = temp[74], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[75].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[75].w, srcp.w, src0.1, src2.w 131: src0.xyz = temp[75], src0.w = temp[75], src1.xyz = temp[77], src1.w = temp[77], src2.xyz = temp[80], src2.w = temp[80], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[81].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[81].w, srcp.w, src0.1, src2.w 132: src0.xyz = temp[81], src0.w = temp[81], src1.xyz = temp[83], src1.w = temp[83], src2.xyz = temp[86], src2.w = temp[86], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[87].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[87].w, srcp.w, src0.1, src2.w 133: src0.xyz = temp[87], src0.w = temp[87], src1.xyz = temp[89], src1.w = temp[89], src2.xyz = temp[92], src2.w = temp[92], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[93].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[93].w, srcp.w, src0.1, src2.w 134: src0.xyz = temp[93], src0.w = temp[93], src1.xyz = temp[95], src1.w = temp[95], src2.xyz = temp[98], src2.w = temp[98], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[99].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[99].w, srcp.w, src0.1, src2.w 135: src0.xyz = temp[99], src0.w = temp[99], src1.xyz = temp[101], src1.w = temp[101], src2.xyz = temp[104], src2.w = temp[104], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[105].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[105].w, srcp.w, src0.1, src2.w 136: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = temp[107], src1.w = temp[107], src2.xyz = const[5], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[109].xyz, srcp.xyz, src2.zzz, src0.000 MAD temp[109].w, srcp.w, src2.z, src0.0 137: src0.xyz = temp[109], src0.w = temp[109] 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], src1.xyz = const[2], src1.w = const[2], src2.xyz = input[0] MAD temp[1].xy, src0.xy_, src1.wz_, src2.xy_ 1: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 2: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[3].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[4].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[5].xy, src0.xy_, src1.xx_, src2.xy_ 5: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[6].xy, src0.xy_, src1.yz_, src2.xy_ 6: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 7: src0.xyz = const[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[8].xy, src0.xy_, src1.yy_, src2.xy_ 8: BEGIN_TEX; 9: TEX temp[1], temp[1].xy__, 2D[0]; 10: TEX temp[2], temp[2].xy__, 2D[0]; 11: TEX temp[3], temp[3].xy__, 2D[0]; 12: TEX temp[4], temp[4].xy__, 2D[0]; 13: TEX temp[5], temp[5].xy__, 2D[0]; 14: TEX temp[6], temp[6].xy__, 2D[0]; 15: TEX temp[7], temp[7].xy__, 2D[0]; 16: TEX temp[8], temp[8].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 17: src0.xyz = const[0], src1.xyz = const[5], src2.xyz = input[0] MAD temp[9].xy, src0.xy_, src1.xy_, src2.xy_ 18: src0.xyz = const[0], src0.w = const[2], src1.xyz = input[0] MAD temp[10].xy, src0.xy_, src0.ww_, src1.xy_ 19: src0.xyz = const[0], src1.xyz = const[4], src2.xyz = input[0] MAD temp[11].xy, src0.xy_, src1.zx_, src2.xy_ 20: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[12].xy, src0.xy_, src1.zx_, src2.xy_ 21: src0.xyz = const[0], src1.xyz = const[2], src2.xyz = input[0] MAD temp[13].xy, src0.xy_, src1.yz_, src2.xy_ 22: src0.xyz = const[0], src1.xyz = const[1], src2.xyz = input[0] MAD temp[14].xy, src0.xy_, src1.zx_, src2.xy_ 23: src0.xyz = const[0], src1.xyz = input[0] MAD temp[15].xy, src0.xy_, -src0.HH_, src1.xy_ 24: src0.xyz = const[1] MAD temp[16].x, src0.x__, src0.11_, src0.00_ 25: src0.xyz = const[1] MAD temp[16].y, src0._z_, src0.11_, src0.00_ 26: src0.xyz = const[1] MAD temp[17].x, src0.x__, src0.11_, src0.00_ 27: src0.w = const[1] MAD temp[17].y, src0._w_, src0.11_, src0.00_ 28: src0.xyz = const[2] MAD temp[18].x, src0.x__, src0.11_, src0.00_ 29: src0.xyz = const[2] MAD temp[19].x, src0.x__, src0.11_, src0.00_ 30: src0.w = const[2] MAD temp[19].y, src0._w_, src0.11_, src0.00_ 31: src0.xyz = const[3] MAD temp[20].x, src0.y__, src0.11_, src0.00_ 32: src0.w = const[3] MAD temp[20].y, src0._w_, src0.11_, src0.00_ 33: src0.xyz = const[4] MAD temp[21].x, src0.x__, src0.11_, src0.00_ 34: src0.xyz = const[4] MAD temp[22].x, src0.x__, src0.11_, src0.00_ 35: src0.xyz = const[0], src1.xyz = temp[16], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xy_, src2.xy_ 36: BEGIN_TEX; 37: TEX temp[9], temp[9].xy__, 2D[0]; 38: TEX temp[10], temp[10].xy__, 2D[0]; 39: TEX temp[11], temp[11].xy__, 2D[0]; 40: TEX temp[12], temp[12].xy__, 2D[0]; 41: TEX temp[13], temp[13].xy__, 2D[0]; 42: TEX temp[14], temp[14].xy__, 2D[0]; 43: TEX temp[15], temp[15].xy__, 2D[0]; 44: TEX temp[16], temp[16].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.w = const[4] MAD temp[22].y, src0._w_, src0.11_, src0.00_ 46: src0.xyz = const[0], src1.xyz = temp[17], src2.xyz = input[0] MAD temp[17].xy, src0.xy_, src1.xy_, src2.xy_ 47: src0.xyz = const[3] MAD temp[23].y, src0._x_, src0.11_, src0.00_ 48: src0.xyz = const[3] MAD temp[23].x, src0.y__, src0.11_, src0.00_ 49: src0.w = const[2] MAD temp[24].x, src0.w__, src0.11_, src0.00_ 50: src0.xyz = const[0], src1.xyz = temp[19], src2.xyz = input[0] MAD temp[19].xy, src0.xy_, src1.xy_, src2.xy_ 51: src0.xyz = const[4] MAD temp[25].y, src0._x_, src0.11_, src0.00_ 52: src0.w = const[4] MAD temp[25].x, src0.w__, src0.11_, src0.00_ 53: src0.xyz = const[0], src1.xyz = temp[20], src2.xyz = input[0] MAD temp[20].xy, src0.xy_, src1.xy_, src2.xy_ 54: src0.xyz = const[2] MAD temp[26].y, src0._x_, src0.11_, src0.00_ 55: src0.w = const[2] MAD temp[26].x, src0.w__, src0.11_, src0.00_ 56: src0.w = const[2] MAD temp[27].y, src0._w_, src0.11_, src0.00_ 57: src0.w = const[2] MAD temp[28].y, src0._w_, src0.11_, src0.00_ 58: src0.xyz = const[4] MAD temp[29].y, src0._x_, src0.11_, src0.00_ 59: src0.xyz = const[2] MAD temp[30].y, src0._x_, src0.11_, src0.00_ 60: src0.xyz = const[5] MAD temp[31].y, src0._x_, src0.11_, src0.00_ 61: src0.xyz = const[0], src1.xyz = temp[22], src2.xyz = input[0] MAD temp[22].xy, src0.xy_, src1.xy_, src2.xy_ 62: src0.xyz = const[5] MAD temp[31].x, src0.y__, src0.11_, src0.00_ 63: src0.xyz = const[3] MAD temp[32].y, src0._y_, src0.11_, src0.00_ 64: src0.w = const[3] MAD temp[32].x, src0.w__, src0.11_, src0.00_ 65: src0.xyz = const[0], src1.xyz = temp[23], src2.xyz = input[0] MAD temp[23].xy, src0.xy_, src1.xy_, src2.xy_ 66: src0.xyz = const[1] MAD temp[33].y, src0._x_, src0.11_, src0.00_ 67: src0.w = const[1] MAD temp[33].x, src0.w__, src0.11_, src0.00_ 68: src0.xyz = const[3] MAD temp[34].y, src0._y_, src0.11_, src0.00_ 69: src0.xyz = const[3] MAD temp[34].x, src0.z__, src0.11_, src0.00_ 70: src0.xyz = const[1] MAD temp[35].y, src0._x_, src0.11_, src0.00_ 71: src0.xyz = const[0], src1.xyz = temp[25], src2.xyz = input[0] MAD temp[25].xy, src0.xy_, src1.xy_, src2.xy_ 72: src0.xyz = const[1] MAD temp[35].x, src0.y__, src0.11_, src0.00_ 73: src0.xyz = const[0], src1.xyz = temp[26], src2.xyz = input[0] MAD temp[26].xy, src0.xy_, src1.xy_, src2.xy_ 74: src0.xyz = const[0], src1.xyz = temp[31], src2.xyz = input[0] MAD temp[31].xy, src0.xy_, src1.xy_, src2.xy_ 75: BEGIN_TEX; 76: TEX temp[17], temp[17].xy__, 2D[0]; 77: TEX temp[19], temp[19].xy__, 2D[0]; 78: TEX temp[20], temp[20].xy__, 2D[0]; 79: TEX temp[22], temp[22].xy__, 2D[0]; 80: TEX temp[23], temp[23].xy__, 2D[0]; 81: TEX temp[25], temp[25].xy__, 2D[0]; 82: TEX temp[26], temp[26].xy__, 2D[0]; 83: TEX temp[31], temp[31].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 84: src0.xyz = const[0], src1.xyz = temp[32], src2.xyz = input[0] MAD temp[32].xy, src0.xy_, src1.xy_, src2.xy_ 85: src0.xyz = const[0], src1.xyz = temp[33], src2.xyz = input[0] MAD temp[33].xy, src0.xy_, src1.xy_, src2.xy_ 86: src0.xyz = const[0], src1.xyz = temp[34], src2.xyz = input[0] MAD temp[34].xy, src0.xy_, src1.xy_, src2.xy_ 87: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = temp[16], src1.w = temp[16], src2.xyz = temp[17], src2.w = temp[17], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 88: src0.xyz = const[0], src1.xyz = temp[35], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xy_, src2.xy_ 89: MAD temp[18].y, -src0._H_, src0.11_, src0.00_ 90: src0.xyz = const[0], src1.xyz = temp[18], src2.xyz = input[0] MAD temp[17].xy, src0.xy_, src1.xy_, src2.xy_ 91: MAD temp[21].y, -src0._H_, src0.11_, src0.00_ 92: src0.xyz = const[0], src1.xyz = temp[21], src2.xyz = input[0] MAD temp[18].xy, src0.xy_, src1.xy_, src2.xy_ 93: MAD temp[24].y, src0._H_, src0.11_, src0.00_ 94: src0.xyz = const[0], src1.xyz = temp[24], src2.xyz = input[0] MAD temp[21].xy, src0.xy_, src1.xy_, src2.xy_ 95: MAD temp[24].x, -src0.H__, src0.11_, src0.00_ 96: MAD temp[24].y, src0._H_, src0.11_, src0.00_ 97: src0.xyz = const[0], src1.xyz = temp[24], src2.xyz = input[0] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 98: BEGIN_TEX; 99: TEX temp[32], temp[32].xy__, 2D[0]; 100: TEX temp[33], temp[33].xy__, 2D[0]; 101: TEX temp[34], temp[34].xy__, 2D[0]; 102: TEX temp[16], temp[16].xy__, 2D[0]; 103: TEX temp[17], temp[17].xy__, 2D[0]; 104: TEX temp[18], temp[18].xy__, 2D[0]; 105: TEX temp[21], temp[21].xy__, 2D[0]; 106: TEX temp[24], temp[24].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 107: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[3], src1.w = temp[3], src2.xyz = temp[17], src2.w = temp[17], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 108: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[19], src1.w = temp[19], src2.xyz = temp[4], src2.w = temp[4], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 109: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[5], src1.w = temp[5], src2.xyz = temp[6], src2.w = temp[6], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 110: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[20], src1.w = temp[20], src2.xyz = temp[7], src2.w = temp[7], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 111: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[18], src1.w = temp[18], src2.xyz = temp[22], src2.w = temp[22], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 112: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[8], src1.w = temp[8], src2.xyz = temp[23], src2.w = temp[23], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 113: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[9], src1.w = temp[9], src2.xyz = temp[21], src2.w = temp[21], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[2].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 114: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1], src2.xyz = temp[10], src2.w = temp[10], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[1].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 115: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[25], src1.w = temp[25], src2.xyz = temp[26], src2.w = temp[26], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[1].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 116: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[24], src1.w = temp[24], src2.xyz = temp[15], src2.w = temp[15], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[1].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 117: MAD temp[27].x, -src0.H__, src0.11_, src0.00_ 118: src0.xyz = const[0], src1.xyz = temp[27], src2.xyz = input[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 119: MAD temp[28].x, src0.H__, src0.11_, src0.00_ 120: src0.xyz = const[0], src1.xyz = temp[28], src2.xyz = input[0] MAD temp[3].xy, src0.xy_, src1.xy_, src2.xy_ 121: MAD temp[29].x, src0.H__, src0.11_, src0.00_ 122: src0.xyz = const[0], src1.xyz = temp[29], src2.xyz = input[0] MAD temp[4].xy, src0.xy_, src1.xy_, src2.xy_ 123: MAD temp[30].x, src0.H__, src0.11_, src0.00_ 124: src0.xyz = const[0], src1.xyz = temp[30], src2.xyz = input[0] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 125: BEGIN_TEX; 126: TEX temp[2], temp[2].xy__, 2D[0]; 127: TEX temp[3], temp[3].xy__, 2D[0]; 128: TEX temp[4], temp[4].xy__, 2D[0]; 129: TEX temp[5], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 130: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2], src1.w = temp[2], src2.xyz = temp[11], src2.w = temp[11], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) SEM_WAIT MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 131: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[12], src1.w = temp[12], src2.xyz = temp[13], src2.w = temp[13], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 132: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[3], src1.w = temp[3], src2.xyz = temp[4], src2.w = temp[4], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 133: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[5], src1.w = temp[5], src2.xyz = temp[31], src2.w = temp[31], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 134: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[32], src1.w = temp[32], src2.xyz = temp[33], src2.w = temp[33], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 135: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[34], src1.w = temp[34], src2.xyz = temp[14], src2.w = temp[14], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src0.111, src2.xyz MAD temp[0].w, srcp.w, src0.1, src2.w 136: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[16], src1.w = temp[16], src2.xyz = const[5], srcp.xyz = (src1 + src0), srcp.w = (src1 + src0) MAD temp[0].xyz, srcp.xyz, src2.zzz, src0.000 MAD temp[0].w, srcp.w, src2.z, src0.0 137: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 r300compiler error: compiler/r300_fragprog_emit.c::begin_tex(): Too many texture indirections r300 FP: Compiler Error: compiler/r300_fragprog_emit.c::begin_tex(): Too many texture indirections 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 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.0001; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.0001; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.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 'dead sources' # 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=6************************************* Hardware program ---------------- code_offset_ext: 00000000 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], COLOR, COLOR DCL IN[2], GENERIC[12], PERSPECTIVE DCL IN[3], GENERIC[13], PERSPECTIVE DCL IN[4], GENERIC[14], PERSPECTIVE DCL IN[5], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[5] DCL CONST[3] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL DCL TEMP[6], LOCAL DCL TEMP[7], LOCAL DCL TEMP[8], LOCAL IMM FLT32 { 5.7000, 8.1000, 0.0000, 1.0000} IMM FLT32 { 2.0000, 0.2500, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[5].xxxx, CONST[5].yyyy 2: MUL TEMP[1].x, IMM[0].yyyy, TEMP[0].xxxx 3: MAD TEMP[1].x, IMM[0].xxxx, TEMP[0].yyyy, TEMP[1].xxxx 4: MOV TEMP[2].z, IMM[0].zzzz 5: SIN TEMP[2].x, TEMP[1].xxxx 6: COS TEMP[1].x, TEMP[1].xxxx 7: MOV TEMP[2].y, TEMP[1].xxxx 8: MUL TEMP[1].xyz, TEMP[2].xyzz, CONST[3].wwww 9: MUL TEMP[2].xyz, TEMP[2].yxzz, CONST[3].xyzz 10: RCP TEMP[3].x, IN[5].wwww 11: MUL TEMP[3].xyz, IN[5].xyzz, TEMP[3].xxxx 12: ADD TEMP[4].xyz, TEMP[3].xyzz, TEMP[1].xyzz 13: ADD TEMP[1].xyz, TEMP[3].xyzz, -TEMP[1].xyzz 14: ADD TEMP[5].xyz, TEMP[3].xyzz, TEMP[2].xyzz 15: ADD TEMP[2].xyz, TEMP[3].xyzz, -TEMP[2].xyzz 16: TEX TEMP[3], IN[2].xyyy, SAMP[0], 2D 17: MOV TEMP[6].w, IMM[0].wwww 18: TEX TEMP[7], IN[3].xyyy, SAMP[1], 2D 19: MUL TEMP[7], IN[1], TEMP[7] 20: TXP TEMP[8], IN[5].xyyw, SAMP[2], 2D 21: MUL TEMP[8], IN[4].xxxx, TEMP[8] 22: TEX TEMP[4].z, TEMP[4].xyzy, SAMP[3], SHADOW2D 23: TEX TEMP[1].z, TEMP[1].xyzy, SAMP[3], SHADOW2D 24: ADD TEMP[1].x, TEMP[4].zzzz, TEMP[1].zzzz 25: TEX TEMP[4].z, TEMP[5].xyzy, SAMP[3], SHADOW2D 26: ADD TEMP[1].x, TEMP[1].xxxx, TEMP[4].zzzz 27: TEX TEMP[2].z, TEMP[2].xyzy, SAMP[3], SHADOW2D 28: ADD TEMP[1].x, TEMP[1].xxxx, TEMP[2].zzzz 29: MUL TEMP[1], TEMP[8], TEMP[1].xxxx 30: MUL TEMP[1], TEMP[1], IMM[1].yyyy 31: MAD TEMP[1].xyz, TEMP[7], IMM[1].xxxx, TEMP[1] 32: MOV TEMP[6].xyz, TEMP[1].xyzx 33: MUL TEMP[1].xyz, TEMP[3], TEMP[6] 34: MOV TEMP[1].xyz, TEMP[1].xyzx 35: MOV TEMP[1].w, TEMP[3].wwww 36: MOV OUT[0], TEMP[1] 37: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[7].yyyy; 34: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MOV temp[1].xyz, temp[1].xyzx; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[7].yyyy; 34: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MOV temp[1].xyz, temp[1].xyzx; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[7].yyyy; 34: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MOV temp[1].xyz, temp[1].xyzx; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[7].yyyy; 34: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MOV temp[1].xyz, temp[1].xyzx; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[7].yyyy; 34: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MOV temp[1].xyz, temp[1].xyzx; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[6].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[10], temp[4].xyzy, 2DSHADOW[3]; 26: MOV_SAT temp[11].w, temp[4].zzzz; 27: ADD temp[11].w, -temp[11].wwww, temp[10].xxxx; 28: CMP temp[4].z, temp[11].www1, none.0001, none.1111; 29: TEX temp[12], temp[1].xyzy, 2DSHADOW[3]; 30: MOV_SAT temp[13].w, temp[1].zzzz; 31: ADD temp[13].w, -temp[13].wwww, temp[12].xxxx; 32: CMP temp[1].z, temp[13].www1, none.0001, none.1111; 33: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 34: TEX temp[14], temp[5].xyzy, 2DSHADOW[3]; 35: MOV_SAT temp[15].w, temp[5].zzzz; 36: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 37: CMP temp[4].z, temp[15].www1, none.0001, none.1111; 38: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 39: TEX temp[16], temp[2].xyzy, 2DSHADOW[3]; 40: MOV_SAT temp[17].w, temp[2].zzzz; 41: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 42: CMP temp[2].z, temp[17].www1, none.0001, none.1111; 43: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 44: MUL temp[1], temp[8], temp[1].xxxx; 45: MUL temp[1], temp[1], const[7].yyyy; 46: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 47: MOV temp[6].xyz, temp[1].xyzx; 48: MUL temp[1].xyz, temp[3], temp[6]; 49: MOV temp[1].xyz, temp[1].xyzx; 50: MOV temp[1].w, temp[3].wwww; 51: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[8].xyz0, const[9].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[5].xxxx, const[5].yyyy; 5: MUL temp[1].x, const[6].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[6].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[6].zzzz; 8: MAD temp[18].w, temp[1].xxxx, const[11].zzzz, const[11].yyyy; 9: FRC temp[18].w, temp[18].wwww; 10: MAD temp[18].w, temp[18].wwww, const[11].wwww, -const[10].zzzz; 11: MUL temp[19].xy, temp[18].wwww, const[10]; 12: MAD temp[19].x, temp[19].yyyy, |temp[18].wwww|, temp[19].xxxx; 13: MAD temp[19].y, temp[19].xxxx, |temp[19].xxxx|, -temp[19].xxxx; 14: MAD temp[2].x, temp[19].yyyy, const[10].wwww, temp[19].xxxx; 15: MAD temp[20].w, temp[1].xxxx, const[11].zzzz, const[11].xxxx; 16: FRC temp[20].w, temp[20].wwww; 17: MAD temp[20].w, temp[20].wwww, const[11].wwww, -const[10].zzzz; 18: MUL temp[21].xy, temp[20].wwww, const[10]; 19: MAD temp[21].x, temp[21].yyyy, |temp[20].wwww|, temp[21].xxxx; 20: MAD temp[21].y, temp[21].xxxx, |temp[21].xxxx|, -temp[21].xxxx; 21: MAD temp[1].x, temp[21].yyyy, const[10].wwww, temp[21].xxxx; 22: MOV temp[2].y, temp[1].xxxx; 23: MUL temp[1].xyz, temp[2].xyzz, const[3].wwww; 24: MUL temp[2].xyz, temp[2].yxzz, const[3].xyzz; 25: RCP temp[3].x, input[5].wwww; 26: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 27: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 28: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 29: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 30: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 31: TEX temp[3], input[2].xyyy, 2D[0]; 32: MOV temp[6].w, const[6].wwww; 33: TEX temp[7], input[3].xyyy, 2D[1]; 34: MUL temp[7], input[1], temp[7]; 35: TXP temp[8], input[5].xyyw, 2D[2]; 36: MUL temp[8], input[4].xxxx, temp[8]; 37: TEX temp[10], temp[4].xyzy, 2DSHADOW[3]; 38: MOV_SAT temp[11].w, temp[4].zzzz; 39: ADD temp[11].w, -temp[11].wwww, temp[10].xxxx; 40: CMP temp[4].z, temp[11].www1, none.0001, none.1111; 41: TEX temp[12], temp[1].xyzy, 2DSHADOW[3]; 42: MOV_SAT temp[13].w, temp[1].zzzz; 43: ADD temp[13].w, -temp[13].wwww, temp[12].xxxx; 44: CMP temp[1].z, temp[13].www1, none.0001, none.1111; 45: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 46: TEX temp[14], temp[5].xyzy, 2DSHADOW[3]; 47: MOV_SAT temp[15].w, temp[5].zzzz; 48: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 49: CMP temp[4].z, temp[15].www1, none.0001, none.1111; 50: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 51: TEX temp[16], temp[2].xyzy, 2DSHADOW[3]; 52: MOV_SAT temp[17].w, temp[2].zzzz; 53: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 54: CMP temp[2].z, temp[17].www1, none.0001, none.1111; 55: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 56: MUL temp[1], temp[8], temp[1].xxxx; 57: MUL temp[1], temp[1], const[7].yyyy; 58: MAD temp[1].xyz, temp[7], const[7].xxxx, temp[1]; 59: MOV temp[6].xyz, temp[1].xyzx; 60: MUL temp[1].xyz, temp[3], temp[6]; 61: MOV temp[1].xyz, temp[1].xyzx; 62: MOV temp[1].w, temp[3].wwww; 63: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[9].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[9].ww__; 2: MAD temp[9].xy, temp[9].xy__, const[8].xy__, const[9].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[5]._x__, const[5]._y__; 5: MUL temp[1].x, const[6].y___, temp[0].x___; 6: MAD temp[1].x, const[6].x___, temp[0].y___, temp[1].x___; 7: MOV temp[2].z, const[6].__z_; 8: MAD temp[18].w, temp[1].___x, const[11].___z, const[11].___y; 9: FRC temp[18].w, temp[18].___w; 10: MAD temp[18].w, temp[18].___w, const[11].___w, -const[10].___z; 11: MUL temp[19].xy, temp[18].ww__, const[10].xy__; 12: MAD temp[19].x, temp[19].y___, |temp[18].w___|, temp[19].x___; 13: MAD temp[19].y, temp[19]._x__, |temp[19]._x__|, -temp[19]._x__; 14: MAD temp[2].x, temp[19].y___, const[10].w___, temp[19].x___; 15: MAD temp[20].w, temp[1].___x, const[11].___z, const[11].___x; 16: FRC temp[20].w, temp[20].___w; 17: MAD temp[20].w, temp[20].___w, const[11].___w, -const[10].___z; 18: MUL temp[21].xy, temp[20].ww__, const[10].xy__; 19: MAD temp[21].x, temp[21].y___, |temp[20].w___|, temp[21].x___; 20: MAD temp[21].y, temp[21]._x__, |temp[21]._x__|, -temp[21]._x__; 21: MAD temp[1].x, temp[21].y___, const[10].w___, temp[21].x___; 22: MOV temp[2].y, temp[1]._x__; 23: MUL temp[1].xyz, temp[2].xyz_, const[3].www_; 24: MUL temp[2].xyz, temp[2].yxz_, const[3].xyz_; 25: RCP temp[3].x, input[5].w___; 26: MUL temp[3].xyz, input[5].xyz_, temp[3].xxx_; 27: ADD temp[4].xyz, temp[3].xyz_, temp[1].xyz_; 28: ADD temp[1].xyz, temp[3].xyz_, -temp[1].xyz_; 29: ADD temp[5].xyz, temp[3].xyz_, temp[2].xyz_; 30: ADD temp[2].xyz, temp[3].xyz_, -temp[2].xyz_; 31: TEX temp[3], input[2].xy__, 2D[0]; 32: TEX temp[7].xyz, input[3].xy__, 2D[1]; 33: MUL temp[7].xyz, input[1].xyz_, temp[7].xyz_; 34: TXP temp[8].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[8].xyz, input[4].xxx_, temp[8].xyz_; 36: TEX temp[10].x, temp[4].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[11].w, temp[4].___z; 38: ADD temp[11].w, -temp[11].___w, temp[10].___x; 39: CMP temp[4].z, temp[11].__w_, none.__0_, none.__1_; 40: TEX temp[12].x, temp[1].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[13].w, temp[1].___z; 42: ADD temp[13].w, -temp[13].___w, temp[12].___x; 43: CMP temp[1].z, temp[13].__w_, none.__0_, none.__1_; 44: ADD temp[1].x, temp[4].z___, temp[1].z___; 45: TEX temp[14].x, temp[5].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[15].w, temp[5].___z; 47: ADD temp[15].w, -temp[15].___w, temp[14].___x; 48: CMP temp[4].z, temp[15].__w_, none.__0_, none.__1_; 49: ADD temp[1].x, temp[1].x___, temp[4].z___; 50: TEX temp[16].x, temp[2].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[17].w, temp[2].___z; 52: ADD temp[17].w, -temp[17].___w, temp[16].___x; 53: CMP temp[2].z, temp[17].__w_, none.__0_, none.__1_; 54: ADD temp[1].x, temp[1].x___, temp[2].z___; 55: MUL temp[1].xyz, temp[8].xyz_, temp[1].xxx_; 56: MUL temp[1].xyz, temp[1].xyz_, const[7].yyy_; 57: MAD temp[1].xyz, temp[7].xyz_, const[7].xxx_, temp[1].xyz_; 58: MOV temp[6].xyz, temp[1].xyz_; 59: MUL temp[1].xyz, temp[3].xyz_, temp[6].xyz_; 60: MOV temp[1].xyz, temp[1].xyz_; 61: MOV temp[1].w, temp[3].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[9].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[9].ww__; 2: MAD temp[9].xy, temp[9].xy__, const[8].xy__, const[9].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[5]._x__, const[5]._y__; 5: MUL temp[1].x, const[6].y___, temp[0].x___; 6: MAD temp[1].x, const[6].x___, temp[0].y___, temp[1].x___; 7: MOV temp[2].z, const[6].__z_; 8: MAD temp[18].w, temp[1].___x, const[11].___z, const[11].___y; 9: FRC temp[18].w, temp[18].___w; 10: MAD temp[18].w, temp[18].___w, const[11].___w, -const[10].___z; 11: MUL temp[19].xy, temp[18].ww__, const[10].xy__; 12: MAD temp[19].x, temp[19].y___, |temp[18].w___|, temp[19].x___; 13: MAD temp[19].y, temp[19]._x__, |temp[19]._x__|, -temp[19]._x__; 14: MAD temp[2].x, temp[19].y___, const[10].w___, temp[19].x___; 15: MAD temp[20].w, temp[1].___x, const[11].___z, const[11].___x; 16: FRC temp[20].w, temp[20].___w; 17: MAD temp[20].w, temp[20].___w, const[11].___w, -const[10].___z; 18: MUL temp[21].xy, temp[20].ww__, const[10].xy__; 19: MAD temp[21].x, temp[21].y___, |temp[20].w___|, temp[21].x___; 20: MAD temp[21].y, temp[21]._x__, |temp[21]._x__|, -temp[21]._x__; 21: MAD temp[1].x, temp[21].y___, const[10].w___, temp[21].x___; 22: MOV temp[2].y, temp[1]._x__; 23: MUL temp[1].xyz, temp[2].xyz_, const[3].www_; 24: MUL temp[2].xyz, temp[2].yxz_, const[3].xyz_; 25: RCP temp[3].x, input[5].w___; 26: MUL temp[3].xyz, input[5].xyz_, temp[3].xxx_; 27: ADD temp[4].xyz, temp[3].xyz_, temp[1].xyz_; 28: ADD temp[1].xyz, temp[3].xyz_, -temp[1].xyz_; 29: ADD temp[5].xyz, temp[3].xyz_, temp[2].xyz_; 30: ADD temp[2].xyz, temp[3].xyz_, -temp[2].xyz_; 31: TEX temp[3], input[2].xy__, 2D[0]; 32: TEX temp[7].xyz, input[3].xy__, 2D[1]; 33: MUL temp[7].xyz, input[1].xyz_, temp[7].xyz_; 34: TXP temp[8].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[8].xyz, input[4].xxx_, temp[8].xyz_; 36: TEX temp[10].x, temp[4].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[11].w, temp[4].___z; 38: ADD temp[11].w, -temp[11].___w, temp[10].___x; 39: CMP temp[4].z, temp[11].__w_, none.__0_, none.__1_; 40: TEX temp[12].x, temp[1].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[13].w, temp[1].___z; 42: ADD temp[13].w, -temp[13].___w, temp[12].___x; 43: CMP temp[1].z, temp[13].__w_, none.__0_, none.__1_; 44: ADD temp[1].x, temp[4].z___, temp[1].z___; 45: TEX temp[14].x, temp[5].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[15].w, temp[5].___z; 47: ADD temp[15].w, -temp[15].___w, temp[14].___x; 48: CMP temp[4].z, temp[15].__w_, none.__0_, none.__1_; 49: ADD temp[1].x, temp[1].x___, temp[4].z___; 50: TEX temp[16].x, temp[2].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[17].w, temp[2].___z; 52: ADD temp[17].w, -temp[17].___w, temp[16].___x; 53: CMP temp[2].z, temp[17].__w_, none.__0_, none.__1_; 54: ADD temp[1].x, temp[1].x___, temp[2].z___; 55: MUL temp[1].xyz, temp[8].xyz_, temp[1].xxx_; 56: MUL temp[1].xyz, temp[1].xyz_, const[7].yyy_; 57: MAD temp[1].xyz, temp[7].xyz_, const[7].xxx_, temp[1].xyz_; 58: MOV temp[6].xyz, temp[1].xyz_; 59: MUL temp[1].xyz, temp[3].xyz_, temp[6].xyz_; 60: MOV temp[1].xyz, temp[1].xyz_; 61: MOV temp[1].w, temp[3].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[8].xy__, const[9].xy__; 3: MOV temp[25].x, temp[24].x___; 4: MAD temp[26].y, temp[24]._y__, const[5]._x__, const[5]._y__; 5: MUL temp[27].x, const[6].y___, temp[25].x___; 6: MAD temp[28].x, const[6].x___, temp[26].y___, temp[27].x___; 7: MOV temp[2].z, const[6].__z_; 8: MAD temp[29].w, temp[28].___x, const[11].___z, const[11].___y; 9: FRC temp[30].w, temp[29].___w; 10: MAD temp[31].w, temp[30].___w, const[11].___w, -const[10].___z; 11: MUL temp[32].xy, temp[31].ww__, const[10].xy__; 12: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 13: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 14: MAD temp[2].x, temp[34].y___, const[10].w___, temp[33].x___; 15: MAD temp[35].w, temp[28].___x, const[11].___z, const[11].___x; 16: FRC temp[36].w, temp[35].___w; 17: MAD temp[37].w, temp[36].___w, const[11].___w, -const[10].___z; 18: MUL temp[38].xy, temp[37].ww__, const[10].xy__; 19: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 20: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 21: MAD temp[41].x, temp[40].y___, const[10].w___, temp[39].x___; 22: MOV temp[2].y, temp[41]._x__; 23: MUL temp[42].xyz, temp[2].xyz_, const[3].www_; 24: MUL temp[43].xyz, temp[2].yxz_, const[3].xyz_; 25: RCP temp[44].x, input[5].w___; 26: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 27: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 28: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 29: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 30: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 31: TEX temp[50], input[2].xy__, 2D[0]; 32: TEX temp[51].xyz, input[3].xy__, 2D[1]; 33: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 34: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 36: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[56].w, temp[46].___z; 38: ADD temp[57].w, -temp[56].___w, temp[55].___x; 39: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 40: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[60].w, temp[47].___z; 42: ADD temp[61].w, -temp[60].___w, temp[59].___x; 43: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 44: ADD temp[63].x, temp[58].z___, temp[62].z___; 45: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[65].w, temp[48].___z; 47: ADD temp[66].w, -temp[65].___w, temp[64].___x; 48: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 49: ADD temp[68].x, temp[63].x___, temp[67].z___; 50: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[70].w, temp[49].___z; 52: ADD temp[71].w, -temp[70].___w, temp[69].___x; 53: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 54: ADD temp[73].x, temp[68].x___, temp[72].z___; 55: MUL temp[74].xyz, temp[54].xyz_, temp[73].xxx_; 56: MUL temp[75].xyz, temp[74].xyz_, const[7].yyy_; 57: MAD temp[76].xyz, temp[52].xyz_, const[7].xxx_, temp[75].xyz_; 58: MOV temp[77].xyz, temp[76].xyz_; 59: MUL temp[78].xyz, temp[50].xyz_, temp[77].xyz_; 60: MOV temp[1].xyz, temp[78].xyz_; 61: MOV temp[1].w, temp[50].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[8].xy__, const[9].xy__; 3: MAD temp[26].y, temp[24]._y__, const[5]._x__, const[5]._y__; 4: MUL temp[27].x, const[6].y___, temp[24].x___; 5: MAD temp[28].x, const[6].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[11].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[11].___w, -const[10].___z; 10: MUL temp[32].xy, temp[31].ww__, const[10].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[10].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[11].___z, const[11].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[11].___w, -const[10].___z; 17: MUL temp[38].xy, temp[37].ww__, const[10].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[10].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[3].www_; 23: MUL temp[43].xyz, temp[2].yxz_, const[3].xyz_; 24: RCP temp[44].x, input[5].w___; 25: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 26: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 27: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 28: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 29: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 30: TEX temp[50], input[2].xy__, 2D[0]; 31: TEX temp[51].xyz, input[3].xy__, 2D[1]; 32: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 33: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 34: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 35: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 36: MOV_SAT temp[56].w, temp[46].___z; 37: ADD temp[57].w, -temp[56].___w, temp[55].___x; 38: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 39: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 40: MOV_SAT temp[60].w, temp[47].___z; 41: ADD temp[61].w, -temp[60].___w, temp[59].___x; 42: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 43: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 44: MOV_SAT temp[65].w, temp[48].___z; 45: ADD temp[66].w, -temp[65].___w, temp[64].___x; 46: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 47: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 48: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 49: MOV_SAT temp[70].w, temp[49].___z; 50: ADD temp[71].w, -temp[70].___w, temp[69].___x; 51: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 52: ADD temp[73].x, temp[68].x___, temp[72].z___; 53: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 54: MAD temp[76].xyz, temp[52].xyz_, const[7].xxx_, temp[75].xyz_; 55: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 56: MOV temp[1].xyz, temp[78].xyz_; 57: MOV temp[1].w, temp[50].___w; 58: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[8].xy__, const[9].xy__; 3: MAD temp[26].y, temp[24]._y__, const[5]._x__, const[5]._y__; 4: MUL temp[27].x, const[6].y___, temp[24].x___; 5: MAD temp[28].x, const[6].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[11].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[11].___w, -const[10].___z; 10: MUL temp[32].xy, temp[31].ww__, const[10].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[10].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[11].___z, const[11].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[11].___w, -const[10].___z; 17: MUL temp[38].xy, temp[37].ww__, const[10].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[10].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[3].www_; 23: MOV temp[0].z, temp[2].__z_; 24: MOV temp[0].y, temp[2]._x__; 25: MOV temp[0].x, temp[2].y___; 26: MUL temp[43].xyz, temp[0].xyz_, const[3].xyz_; 27: RCP temp[44].x, input[5].w___; 28: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 29: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 30: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 31: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 32: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: MOV_SAT temp[56].w, temp[46].___z; 40: ADD temp[57].w, -temp[56].___w, temp[55].___x; 41: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: MOV_SAT temp[60].w, temp[47].___z; 44: ADD temp[61].w, -temp[60].___w, temp[59].___x; 45: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: MOV_SAT temp[65].w, temp[48].___z; 48: ADD temp[66].w, -temp[65].___w, temp[64].___x; 49: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 50: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: MOV_SAT temp[70].w, temp[49].___z; 53: ADD temp[71].w, -temp[70].___w, temp[69].___x; 54: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 55: ADD temp[73].x, temp[68].x___, temp[72].z___; 56: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 57: MAD temp[76].xyz, temp[52].xyz_, const[7].xxx_, temp[75].xyz_; 58: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 59: MOV temp[1].xyz, temp[78].xyz_; 60: MOV temp[1].w, temp[50].___w; 61: MOV output[0], temp[1]; CONST[2] = { 5.7000 8.1000 0.0000 1.0000 } CONST[3] = { 2.0000 0.2500 0.0000 0.0000 } CONST[6] = { 1.2732 -0.4053 3.1416 0.2225 } CONST[7] = { 0.7500 0.5000 0.1592 6.2832 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[4].xy__, const[5].xy__; 3: MAD temp[26].y, temp[24]._y__, const[1]._x__, const[1]._y__; 4: MUL temp[27].x, const[2].y___, temp[24].x___; 5: MAD temp[28].x, const[2].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[7].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[7].___w, -const[6].___z; 10: MUL temp[32].xy, temp[31].ww__, const[6].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[6].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[7].___z, const[7].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[7].___w, -const[6].___z; 17: MUL temp[38].xy, temp[37].ww__, const[6].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[6].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[0].www_; 23: MOV temp[0].z, temp[2].__z_; 24: MOV temp[0].y, temp[2]._x__; 25: MOV temp[0].x, temp[2].y___; 26: MUL temp[43].xyz, temp[0].xyz_, const[0].xyz_; 27: RCP temp[44].x, input[5].w___; 28: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 29: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 30: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 31: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 32: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: MOV_SAT temp[56].w, temp[46].___z; 40: ADD temp[57].w, -temp[56].___w, temp[55].___x; 41: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: MOV_SAT temp[60].w, temp[47].___z; 44: ADD temp[61].w, -temp[60].___w, temp[59].___x; 45: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: MOV_SAT temp[65].w, temp[48].___z; 48: ADD temp[66].w, -temp[65].___w, temp[64].___x; 49: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 50: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: MOV_SAT temp[70].w, temp[49].___z; 53: ADD temp[71].w, -temp[70].___w, temp[69].___x; 54: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 55: ADD temp[73].x, temp[68].x___, temp[72].z___; 56: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 57: MAD temp[76].xyz, temp[52].xyz_, const[3].xxx_, temp[75].xyz_; 58: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 59: MOV temp[1].xyz, temp[78].xyz_; 60: MOV temp[1].w, temp[50].___w; 61: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = const[5] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[1] MAD temp[26].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = const[2], src1.xyz = temp[24] MAD temp[27].x, src0.y__, src1.x__, src0.000 5: src0.xyz = const[2], src1.xyz = temp[26], src2.xyz = temp[27] MAD temp[28].x, src0.x__, src1.y__, src2.x__ 6: MAD temp[2].z, src0.__0, src0.111, src0.000 7: src0.xyz = temp[28], src1.xyz = const[7] MAD temp[29].w, src0.x, src1.z, src0.H 8: src0.w = temp[29] FRC temp[30].w, src0.w 9: src0.xyz = const[6], src0.w = temp[30], src1.w = const[7] MAD temp[31].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[6], src0.w = temp[31] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 11: src0.xyz = temp[32], src0.w = temp[31] MAD temp[33].x, src0.y__, |src0.w__|, src0.x__ 12: src0.xyz = temp[33] MAD temp[34].y, src0._x_, |src0._x_|, -src0._x_ 13: src0.xyz = temp[34], src0.w = const[6], src1.xyz = temp[33] MAD temp[2].x, src0.y__, src0.w__, src1.x__ 14: src0.xyz = temp[28], src1.xyz = const[7] MAD temp[35].w, src0.x, src1.z, src1.x 15: src0.w = temp[35] FRC temp[36].w, src0.w 16: src0.xyz = const[6], src0.w = temp[36], src1.w = const[7] MAD temp[37].w, src0.w, src1.w, -src0.z 17: src0.xyz = const[6], src0.w = temp[37] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 18: src0.xyz = temp[38], src0.w = temp[37] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ 19: src0.xyz = temp[39] MAD temp[40].y, src0._x_, |src0._x_|, -src0._x_ 20: src0.xyz = temp[40], src0.w = const[6], src1.xyz = temp[39] MAD temp[41].x, src0.y__, src0.w__, src1.x__ 21: src0.xyz = temp[41] MAD temp[2].y, src0._x_, src0.111, src0.000 22: src0.xyz = temp[2], src0.w = const[0] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 23: src0.xyz = temp[2] MAD temp[0].z, src0.__z, src0.111, src0.000 24: src0.xyz = temp[2] MAD temp[0].y, src0._x_, src0.111, src0.000 25: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 26: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 27: src0.w = input[5] REPL_ALPHA temp[44].x RCP, src0.w 28: src0.xyz = input[5], src1.xyz = temp[44] MAD temp[45].xyz, src0.xyz, src1.xxx, src0.000 29: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 30: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz 32: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: src0.xyz = input[1], src1.xyz = temp[51] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: src0.xyz = input[4], src1.xyz = temp[53] MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: src0.xyz = temp[46] MAD_SAT temp[56].w, src0.z, src0.1, src0.0 40: src0.xyz = temp[55], src0.w = temp[56] MAD temp[57].w, -src0.w, src0.1, src0.x 41: src0.w = temp[57] CMP temp[58].z, src0.__1, src0.__0, src0.__w 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: src0.xyz = temp[47] MAD_SAT temp[60].w, src0.z, src0.1, src0.0 44: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 45: src0.w = temp[61] CMP temp[62].z, src0.__1, src0.__0, src0.__w 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: src0.xyz = temp[48] MAD_SAT temp[65].w, src0.z, src0.1, src0.0 48: src0.xyz = temp[64], src0.w = temp[65] MAD temp[66].w, -src0.w, src0.1, src0.x 49: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 50: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: src0.xyz = temp[49] MAD_SAT temp[70].w, src0.z, src0.1, src0.0 53: src0.xyz = temp[69], src0.w = temp[70] MAD temp[71].w, -src0.w, src0.1, src0.x 54: src0.w = temp[71] CMP temp[72].z, src0.__1, src0.__0, src0.__w 55: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 56: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 57: src0.xyz = temp[52], src1.xyz = const[3], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 58: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 59: src0.xyz = temp[78] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 60: src0.w = temp[50] MAD temp[1].w, src0.w, src0.1, src0.0 61: 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.w = input[0] MAD temp[2].z, src0.__0, src0.111, src0.000 RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22], src1.w = input[5] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 RCP temp[44].w, src1.w 2: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = const[5] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[1], src2.xyz = const[2] MAD temp[26].y, src0._y_, src1._x_, src1._y_ MAD temp[27].w, src2.y, src0.x, src0.0 4: src0.xyz = input[5], src0.w = temp[44], src1.xyz = temp[44] MAD temp[45].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[2], src0.w = temp[27], src1.xyz = temp[26], src2.xyz = temp[27] MAD temp[28].w, src0.x, src1.y, src0.w 6: src0.xyz = temp[28], src0.w = temp[28], src1.xyz = const[7] MAD temp[35].w, src0.w, src1.z, src1.x 7: src0.xyz = temp[28], src0.w = temp[28], src1.xyz = const[7] MAD temp[29].w, src0.w, src1.z, src0.H 8: src0.w = temp[35] FRC temp[36].w, src0.w 9: src0.xyz = const[6], src0.w = temp[36], src1.w = const[7] MAD temp[37].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[6], src0.w = temp[37], src1.w = temp[29] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 FRC temp[30].w, src1.w 11: src0.xyz = temp[38], src0.w = temp[37], src1.xyz = const[6], src1.w = temp[30], src2.w = const[7] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ MAD temp[31].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[6], src0.w = temp[31], src1.xyz = temp[39] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 MAD temp[40].w, src1.x, |src1.x|, -src1.x 13: src0.xyz = temp[40], src0.w = const[6], src1.xyz = temp[39], src1.w = temp[40], src2.xyz = temp[32], src2.w = temp[31] MAD temp[41].x, src1.w__, src0.w__, src1.x__ MAD temp[33].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[41], src0.w = temp[33] MAD temp[2].y, src0._x_, src0.111, src0.000 MAD temp[34].w, src0.w, |src0.w|, -src0.w 15: src0.xyz = temp[34], src0.w = const[6], src1.xyz = temp[33], src1.w = temp[33], src2.w = temp[34] MAD temp[2].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[2], src0.w = const[0] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[2], src1.xyz = temp[47] MAD temp[0].y, src0._x_, src0.111, src0.000 MAD_SAT temp[60].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[2], src1.xyz = temp[46] MAD temp[0].z, src0.__z, src0.111, src0.000 MAD_SAT temp[56].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[45], src1.xyz = temp[43], src2.xyz = temp[49] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[70].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[50], input[2].xy__, 2D[0]; 27: TEX temp[51].xyz, input[3].xy__, 2D[1]; 28: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 29: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 30: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 31: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 32: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[4], src0.w = temp[50], src1.xyz = temp[53] SEM_WAIT MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 34: src0.xyz = input[1], src1.xyz = temp[51], src2.xyz = temp[48] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[65].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[55], src0.w = temp[61], src1.w = temp[56] CMP temp[62].z, src0.__1, src0.__0, src0.__w MAD temp[57].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[69], src0.w = temp[57], src1.w = temp[70] CMP temp[58].z, src0.__1, src0.__0, src0.__w MAD temp[71].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[64], src0.w = temp[71], src1.w = temp[65] CMP temp[72].z, src0.__1, src0.__0, src0.__w MAD temp[66].w, -src1.w, src0.1, src0.x 39: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 40: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 41: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 42: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[52], src1.xyz = const[3], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[78] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 46: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.w = input[0] MAD temp[2].z, src0.__0, src0.111, src0.000 RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22], src1.w = input[5] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 RCP temp[44].w, src1.w 2: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = const[5] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[1], src2.xyz = const[2] MAD temp[26].y, src0._y_, src1._x_, src1._y_ MAD temp[27].w, src2.y, src0.x, src0.0 4: src0.xyz = input[5], src0.w = temp[44] MAD temp[45].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[2], src0.w = temp[27], src1.xyz = temp[26] MAD temp[28].w, src0.x, src1.y, src0.w 6: src0.w = temp[28], src1.xyz = const[7] MAD temp[35].w, src0.w, src1.z, src1.x 7: src0.w = temp[28], src1.xyz = const[7] MAD temp[29].w, src0.w, src1.z, src0.H 8: src0.w = temp[35] FRC temp[36].w, src0.w 9: src0.xyz = const[6], src0.w = temp[36], src1.w = const[7] MAD temp[37].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[6], src0.w = temp[37], src1.w = temp[29] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 FRC temp[30].w, src1.w 11: src0.xyz = temp[38], src0.w = temp[37], src1.xyz = const[6], src1.w = temp[30], src2.w = const[7] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ MAD temp[31].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[6], src0.w = temp[31], src1.xyz = temp[39] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 MAD temp[40].w, src1.x, |src1.x|, -src1.x 13: src0.w = const[6], src1.xyz = temp[39], src1.w = temp[40], src2.xyz = temp[32], src2.w = temp[31] MAD temp[41].x, src1.w__, src0.w__, src1.x__ MAD temp[33].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[41], src0.w = temp[33] MAD temp[2].y, src0._x_, src0.111, src0.000 MAD temp[34].w, src0.w, |src0.w|, -src0.w 15: src0.w = const[6], src1.w = temp[33], src2.w = temp[34] MAD temp[2].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[2], src0.w = const[0] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[2], src1.xyz = temp[47] MAD temp[0].y, src0._x_, src0.111, src0.000 MAD_SAT temp[60].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[2], src1.xyz = temp[46] MAD temp[0].z, src0.__z, src0.111, src0.000 MAD_SAT temp[56].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[45], src1.xyz = temp[43], src2.xyz = temp[49] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[70].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[50], input[2].xy__, 2D[0]; 27: TEX temp[51].xyz, input[3].xy__, 2D[1]; 28: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 29: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 30: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 31: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 32: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[4], src0.w = temp[50], src1.xyz = temp[53] SEM_WAIT MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 34: src0.xyz = input[1], src1.xyz = temp[51], src2.xyz = temp[48] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[65].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[55], src0.w = temp[61], src1.w = temp[56] CMP temp[62].z, src0.__1, src0.__0, src0.__w MAD temp[57].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[69], src0.w = temp[57], src1.w = temp[70] CMP temp[58].z, src0.__1, src0.__0, src0.__w MAD temp[71].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[64], src0.w = temp[71], src1.w = temp[65] CMP temp[72].z, src0.__1, src0.__0, src0.__w MAD temp[66].w, -src1.w, src0.1, src0.x 39: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 40: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 41: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 42: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[52], src1.xyz = const[3], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[78] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 46: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.w = input[5] MAD temp[6].z, src0.__0, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[5], src0.w = temp[0], src1.w = input[4] MAD temp[5].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.w 2: src0.xyz = temp[5], src1.xyz = const[4], src2.xyz = const[5] MAD temp[5].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[5], src1.xyz = const[1], src2.xyz = const[2] MAD temp[1].z, src0.__y, src1.__x, src1.__y MAD temp[1].w, src2.y, src0.x, src0.0 4: src0.xyz = input[4], src0.w = temp[0] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[2], src0.w = temp[1], src1.xyz = temp[1] MAD temp[0].w, src0.x, src1.z, src0.w 6: src0.w = temp[0], src1.xyz = const[7] MAD temp[1].w, src0.w, src1.z, src1.x 7: src0.w = temp[0], src1.xyz = const[7] MAD temp[0].w, src0.w, src1.z, src0.H 8: src0.w = temp[1] FRC temp[1].w, src0.w 9: src0.xyz = const[6], src0.w = temp[1], src1.w = const[7] MAD temp[1].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[6], src0.w = temp[1], src1.w = temp[0] MAD temp[7].xy, src0.ww_, src0.xy_, src0.00_ FRC temp[0].w, src1.w 11: src0.xyz = temp[7], src0.w = temp[1], src1.xyz = const[6], src1.w = temp[0], src2.w = const[7] MAD temp[1].z, src0.__y, |src0.__w|, src0.__x MAD temp[0].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[6], src0.w = temp[0], src1.xyz = temp[1] MAD temp[7].xy, src0.ww_, src0.xy_, src0.00_ MAD temp[1].w, src1.z, |src1.z|, -src1.z 13: src0.w = const[6], src1.xyz = temp[1], src1.w = temp[1], src2.xyz = temp[7], src2.w = temp[0] MAD temp[1].z, src1.__w, src0.__w, src1.__z MAD temp[0].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[1], src0.w = temp[0] MAD temp[6].y, src0._z_, src0.111, src0.000 MAD temp[1].w, src0.w, |src0.w|, -src0.w 15: src0.w = const[6], src1.w = temp[0], src2.w = temp[1] MAD temp[6].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[6], src0.w = const[0] MAD temp[7].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[6] MAD temp[8].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[5], src1.xyz = temp[7] MAD temp[9].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[6], src1.xyz = temp[9] MAD temp[8].y, src0._x_, src0.111, src0.000 MAD_SAT temp[0].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[5], src1.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[6], src1.xyz = temp[7] MAD temp[8].z, src0.__z, src0.111, src0.000 MAD_SAT temp[1].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[8], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[5], src1.xyz = temp[6] MAD temp[8].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[5], src1.xyz = temp[6], src2.xyz = temp[8] MAD temp[5].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[2].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[6], input[1].xy__, 2D[0]; 27: TEX temp[10].xyz, input[2].xy__, 2D[1]; 28: TXP temp[4].xyz, input[4].xy_w, 2D[2]; 29: TEX temp[9].x, temp[9].xy__, 2DSHADOW[3]; 30: TEX temp[7].x, temp[7].xy__, 2DSHADOW[3]; 31: TEX temp[8].x, temp[8].xy__, 2DSHADOW[3]; 32: TEX temp[11].x, temp[5].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[3], src0.w = temp[6], src1.xyz = temp[4] SEM_WAIT MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[3].w, src0.w, src0.1, src0.0 34: src0.xyz = input[0], src1.xyz = temp[10], src2.xyz = temp[5] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[4].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[9], src0.w = temp[0] MAD temp[0].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[7], src0.w = temp[0], src1.w = temp[1] CMP temp[2].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[8], src0.w = temp[0], src1.w = temp[2] CMP temp[3].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[11], src0.w = temp[0], src1.w = temp[4] CMP temp[2].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 39: src0.w = temp[0] CMP temp[2].y, src0._1_, src0._0_, src0._w_ 40: src0.xyz = temp[3], src1.xyz = temp[2], src2.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[2].y, srcp._z_, src0._1_, src2._y_ 41: src0.xyz = temp[2], src1.xyz = temp[2] MAD temp[2].x, src0.y__, src0.1__, src1.x__ 42: src0.xyz = temp[1], src1.xyz = temp[2] MAD temp[1].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[0], src1.xyz = const[3], src2.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 46: src0.xyz = temp[0], src0.w = temp[3] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=7************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 24, tex_end: 0 (code_addr: 00000600) 0: xyz: t0 t0 t0 bias-> t6.z (02180000) w: t5 t0 t0 bias-> t0.w (00800005) xyz: 0.0 1.0 0.0 op: 00050a94 w: t5.w t0.x t0.x op: 05000009 1: xyz: t5 t0 t0 bias-> t5.xy (01940005) w: t0 t4 t0 bias-> t0.w (00800100) xyz: t5.xyz t0.www 0.0 op: 00050600 w: t4.w t5.x t5.x op: 0500000a 2: xyz: t5 c4 c5 bias-> t5.xy (01965905) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz c4.xyz c5.xyz op: 00020200 w: t5.x t5.x t5.x op: 00000000 3: xyz: t5 c1 c2 bias-> t1.z (02062845) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t5.yyy c1.xxx c1.yyy op: 00018282 w: c2.y t5.x 0.0 op: 00040007 4: xyz: t4 t32 t0 bias-> t5.xyz (03940004) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz t0.www 0.0 op: 00050600 w: t4.x t4.x t4.x op: 00000000 5: xyz: c2 t1 t0 bias-> (00000062) w: t1 t0 t0 bias-> t0.w (00800001) xyz: c2.xxx c2.xxx c2.xxx op: 00004081 w: c2.x t1.z t1.w op: 00024280 6: xyz: t0 c7 t0 bias-> (000009c0) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w c7.z c7.x op: 0000c289 7: xyz: t0 c7 t0 bias-> (000009c0) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w c7.z 0.5 op: 00048289 8: xyz: t0 t0 t0 bias-> (00000000) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t1.w t0.x t0.x op: 03800009 9: xyz: c6 t0 t0 bias-> (00000026) w: t1 c7 t0 bias-> t1.w (008409c1) xyz: c6.xxx c6.xxx c6.xxx op: 00004081 w: t1.w c7.w -c6.z op: 00088509 10: xyz: c6 t0 t0 bias-> t7.xy (019c0026) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.www c6.xyz 0.0 op: 0005000c w: t0.w c6.x c6.x op: 0380000a 11: xyz: t7 c6 t0 bias-> t1.z (02040987) w: t1 t0 c7 bias-> t0.w (00827001) xyz: t7.yyy |t1.www| t7.xxx op: 00006602 w: t0.w c7.w -c6.z op: 0009458a 12: xyz: c6 t1 t0 bias-> t7.xy (019c0066) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.www c6.xyz 0.0 op: 0005000c w: t1.z |t1.z| -t1.z op: 00096285 13: xyz: t32 t1 t7 bias-> t1.z (02047040) w: c6 t1 t0 bias-> t0.w (00800066) xyz: t1.www c6.www t1.xyz op: 0001060d w: t7.y |t0.w| t7.x op: 0001a587 14: xyz: t1 t0 t0 bias-> t6.y (01180001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.zzz 1.0 0.0 op: 00050a83 w: t0.w |t0.w| -t0.w op: 000a6489 15: xyz: t32 t32 t0 bias-> t6.x (00980000) w: c6 t0 t1 bias-> (00001026) xyz: t1.www c6.www t0.www op: 0003460e w: t32.x t32.x t32.x op: 00000000 16: xyz: t6 t0 t0 bias-> t7.xyz (039c0006) w: c0 t0 t0 bias-> (00000020) xyz: t6.xyz c0.www 0.0 op: 00050600 w: t6.x t6.x t6.x op: 00000000 17: xyz: t6 t0 t0 bias-> t8.x (00a00006) w: t0 t0 t0 bias-> (00000000) xyz: t6.yyy 1.0 0.0 op: 00050a82 w: t6.x t6.x t6.x op: 00000000 18: xyz: t5 t7 t0 bias-> t9.xyz (03a401c5) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 -t7.xyz op: 00090a80 w: t5.x t5.x t5.x op: 00000000 19: xyz: t6 t9 t0 bias-> t8.y (01200246) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xxx 1.0 0.0 op: 00050a81 w: t9.z 1.0 0.0 op: 40040885 20: xyz: t5 t7 t0 bias-> t7.xyz (039c01c5) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 t7.xyz op: 00010a80 w: t5.x t5.x t5.x op: 00000000 21: xyz: t6 t7 t0 bias-> t8.z (022001c6) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t6.xyz 1.0 0.0 op: 00050a80 w: t7.z 1.0 0.0 op: 40040885 22: xyz: t8 c0 t0 bias-> t6.xyz (03980808) w: t0 t0 t0 bias-> (00000000) xyz: t8.xyz c0.xyz 0.0 op: 00050200 w: t8.x t8.x t8.x op: 00000000 23: xyz: t5 t6 t0 bias-> t8.xyz (03a00185) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 -t6.xyz op: 00090a80 w: t5.x t5.x t5.x op: 00000000 24: xyz: t5 t6 t8 bias-> t5.xyz (03948185) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t5.xyz 1.0 t6.xyz op: 00010a80 w: t8.z 1.0 0.0 op: 40040888 NODE 1: alu_offset: 25, tex_offset: 0, alu_end: 13, tex_end: 6 (code_addr: 004c0359) TEX: TEX t6, t1, texture[0] (00008181) TEX t10, t2, texture[1] (00008a82) TXP t4, t4, texture[2] (00019104) TEX t9, t9, texture[3] (00009a49) TEX t7, t7, texture[3] (000099c7) TEX t8, t8, texture[3] (00009a08) TEX t11, t5, texture[3] (00009ac5) 25: xyz: t3 t4 t0 bias-> t1.xyz (03840103) w: t6 t0 t0 bias-> t3.w (008c0006) xyz: t3.xxx t4.xyz 0.0 op: 00050201 w: t6.w 1.0 0.0 op: 00040889 26: xyz: t0 t10 t5 bias-> t0.xyz (03805280) w: t0 t0 t0 bias-> t4.w (00900000) xyz: t0.xyz t10.xyz 0.0 op: 00050200 w: t5.z 1.0 0.0 op: 40040888 27: xyz: t9 t0 t0 bias-> (00000009) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t9.xxx t9.xxx t9.xxx op: 00004081 w: -t0.w 1.0 t9.x op: 000008a9 28: xyz: t7 t0 t0 bias-> t2.z (02080007) w: t0 t1 t0 bias-> t0.w (00800040) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t1.w 1.0 t7.x op: 000008aa 29: xyz: t8 t0 t0 bias-> t3.z (020c0008) w: t0 t2 t0 bias-> t0.w (00800080) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t2.w 1.0 t8.x op: 000008aa 30: xyz: t11 t0 t0 bias-> t2.x (0088000b) w: t0 t4 t0 bias-> t0.w (00800100) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t4.w 1.0 t11.x op: 000008aa 31: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 t0.www op: 04030a15 w: t0.x t0.x t0.x op: 00000000 32: xyz: t3 t2 t2 add-> t2.y (01082083) w: t0 t0 t0 bias-> (00000000) xyz: srcp.zzz 1.0 t2.xyz op: 00420a92 w: t3.x t3.x t3.x op: 00000000 33: xyz: t2 t2 t0 bias-> t2.x (00880082) w: t0 t0 t0 bias-> (00000000) xyz: t2.yyy 1.0 t2.xyz op: 00010a82 w: t2.x t2.x t2.x op: 00000000 34: xyz: t1 t2 t0 bias-> t1.xyz (03840081) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t2.xxx 0.0 op: 28050280 w: t1.x t1.x t1.x op: 00000000 35: xyz: t0 c3 t1 bias-> t0.xyz (038018c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c3.xxx t1.xyz op: 00020280 w: t0.x t0.x t0.x op: 00000000 36: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz t0.xyz 0.0 op: 00050200 w: t6.x t6.x t6.x op: 00000000 37: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 38: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t3 t0 t0 bias-> o0.w (01000003) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t3.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR 0: END Fragment Program: before compilation # Radeon Compiler Program Fragment Program: after 'rewrite depth out' # Radeon Compiler Program Fragment Program: after 'transform KILP' # Radeon Compiler Program Fragment Program: after 'transform loops' # Radeon Compiler Program Fragment Program: after 'emulate branches' # Radeon Compiler Program Fragment Program: after 'transform TEX' # Radeon Compiler Program Fragment Program: after 'native rewrite' # Radeon Compiler Program Fragment Program: after 'deadcode' # Radeon Compiler Program Fragment Program: after 'emulate loops' # Radeon Compiler Program Fragment Program: after 'register rename' # Radeon Compiler Program Fragment Program: after 'dataflow optimize' # Radeon Compiler Program Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program Fragment Program: after 'dead constants' # Radeon Compiler Program Fragment Program: after 'pair translate' # Radeon Compiler Program Fragment Program: after 'pair scheduling' # Radeon Compiler Program Fragment Program: after 'dead sources' # Radeon Compiler Program Fragment Program: after 'register allocation' # Radeon Compiler Program pc=8************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x t0.x t0.x op: 00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], COLOR, COLOR DCL IN[2], GENERIC[12], PERSPECTIVE DCL IN[3], GENERIC[13], PERSPECTIVE DCL IN[4], GENERIC[14], PERSPECTIVE DCL IN[5], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[6] DCL CONST[0] DCL CONST[4] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL DCL TEMP[6], LOCAL DCL TEMP[7], LOCAL DCL TEMP[8], LOCAL IMM FLT32 { 5.7000, 8.1000, 0.0000, 1.0000} IMM FLT32 { 2.0000, 0.2500, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[6].xxxx, CONST[6].yyyy 2: MUL TEMP[1].x, IMM[0].yyyy, TEMP[0].xxxx 3: MAD TEMP[1].x, IMM[0].xxxx, TEMP[0].yyyy, TEMP[1].xxxx 4: MOV TEMP[2].z, IMM[0].zzzz 5: SIN TEMP[2].x, TEMP[1].xxxx 6: COS TEMP[1].x, TEMP[1].xxxx 7: MOV TEMP[2].y, TEMP[1].xxxx 8: MUL TEMP[1].xyz, TEMP[2].xyzz, CONST[4].wwww 9: MUL TEMP[2].xyz, TEMP[2].yxzz, CONST[4].xyzz 10: RCP TEMP[3].x, IN[5].wwww 11: MUL TEMP[3].xyz, IN[5].xyzz, TEMP[3].xxxx 12: ADD TEMP[4].xyz, TEMP[3].xyzz, TEMP[1].xyzz 13: ADD TEMP[1].xyz, TEMP[3].xyzz, -TEMP[1].xyzz 14: ADD TEMP[5].xyz, TEMP[3].xyzz, TEMP[2].xyzz 15: ADD TEMP[2].xyz, TEMP[3].xyzz, -TEMP[2].xyzz 16: TEX TEMP[3], IN[2].xyyy, SAMP[0], 2D 17: MOV TEMP[6].w, IMM[0].wwww 18: TEX TEMP[7], IN[3].xyyy, SAMP[1], 2D 19: MUL TEMP[7], IN[1], TEMP[7] 20: TXP TEMP[8], IN[5].xyyw, SAMP[2], 2D 21: MUL TEMP[8], IN[4].xxxx, TEMP[8] 22: TEX TEMP[4].z, TEMP[4].xyzy, SAMP[3], SHADOW2D 23: TEX TEMP[1].z, TEMP[1].xyzy, SAMP[3], SHADOW2D 24: ADD TEMP[1].x, TEMP[4].zzzz, TEMP[1].zzzz 25: TEX TEMP[4].z, TEMP[5].xyzy, SAMP[3], SHADOW2D 26: ADD TEMP[1].x, TEMP[1].xxxx, TEMP[4].zzzz 27: TEX TEMP[2].z, TEMP[2].xyzy, SAMP[3], SHADOW2D 28: ADD TEMP[1].x, TEMP[1].xxxx, TEMP[2].zzzz 29: MUL TEMP[1], TEMP[8], TEMP[1].xxxx 30: MUL TEMP[1], TEMP[1], IMM[1].yyyy 31: MAD TEMP[1].xyz, TEMP[7], IMM[1].xxxx, TEMP[1] 32: MOV TEMP[6].xyz, TEMP[1].xyzx 33: MUL TEMP[1].xyz, TEMP[3], TEMP[6] 34: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[0].xyzz 35: MOV TEMP[1].w, TEMP[3].wwww 36: MOV OUT[0], TEMP[1] 37: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[8].yyyy; 34: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[8].yyyy; 34: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[8].yyyy; 34: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[8].yyyy; 34: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[4].z, temp[4].xyzy, 2DSHADOW[3]; 26: TEX temp[1].z, temp[1].xyzy, 2DSHADOW[3]; 27: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 28: TEX temp[4].z, temp[5].xyzy, 2DSHADOW[3]; 29: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 30: TEX temp[2].z, temp[2].xyzy, 2DSHADOW[3]; 31: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 32: MUL temp[1], temp[8], temp[1].xxxx; 33: MUL temp[1], temp[1], const[8].yyyy; 34: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 35: MOV temp[6].xyz, temp[1].xyzx; 36: MUL temp[1].xyz, temp[3], temp[6]; 37: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 38: MOV temp[1].w, temp[3].wwww; 39: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: SIN temp[2].x, temp[1].xxxx; 9: COS temp[1].x, temp[1].xxxx; 10: MOV temp[2].y, temp[1].xxxx; 11: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 12: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 13: RCP temp[3].x, input[5].wwww; 14: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 15: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 16: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 17: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 18: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 19: TEX temp[3], input[2].xyyy, 2D[0]; 20: MOV temp[6].w, const[7].wwww; 21: TEX temp[7], input[3].xyyy, 2D[1]; 22: MUL temp[7], input[1], temp[7]; 23: TXP temp[8], input[5].xyyw, 2D[2]; 24: MUL temp[8], input[4].xxxx, temp[8]; 25: TEX temp[10], temp[4].xyzy, 2DSHADOW[3]; 26: MOV_SAT temp[11].w, temp[4].zzzz; 27: ADD temp[11].w, -temp[11].wwww, temp[10].xxxx; 28: CMP temp[4].z, temp[11].www1, none.0001, none.1111; 29: TEX temp[12], temp[1].xyzy, 2DSHADOW[3]; 30: MOV_SAT temp[13].w, temp[1].zzzz; 31: ADD temp[13].w, -temp[13].wwww, temp[12].xxxx; 32: CMP temp[1].z, temp[13].www1, none.0001, none.1111; 33: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 34: TEX temp[14], temp[5].xyzy, 2DSHADOW[3]; 35: MOV_SAT temp[15].w, temp[5].zzzz; 36: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 37: CMP temp[4].z, temp[15].www1, none.0001, none.1111; 38: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 39: TEX temp[16], temp[2].xyzy, 2DSHADOW[3]; 40: MOV_SAT temp[17].w, temp[2].zzzz; 41: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 42: CMP temp[2].z, temp[17].www1, none.0001, none.1111; 43: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 44: MUL temp[1], temp[8], temp[1].xxxx; 45: MUL temp[1], temp[1], const[8].yyyy; 46: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 47: MOV temp[6].xyz, temp[1].xyzx; 48: MUL temp[1].xyz, temp[3], temp[6]; 49: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 50: MOV temp[1].w, temp[3].wwww; 51: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[9].w, input[0].wwww; 1: MUL temp[9].xyz, input[0], temp[9].wwww; 2: MAD temp[9].xyz, temp[9].xyz0, const[9].xyz0, const[10].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[6].xxxx, const[6].yyyy; 5: MUL temp[1].x, const[7].yyyy, temp[0].xxxx; 6: MAD temp[1].x, const[7].xxxx, temp[0].yyyy, temp[1].xxxx; 7: MOV temp[2].z, const[7].zzzz; 8: MAD temp[18].w, temp[1].xxxx, const[12].zzzz, const[12].yyyy; 9: FRC temp[18].w, temp[18].wwww; 10: MAD temp[18].w, temp[18].wwww, const[12].wwww, -const[11].zzzz; 11: MUL temp[19].xy, temp[18].wwww, const[11]; 12: MAD temp[19].x, temp[19].yyyy, |temp[18].wwww|, temp[19].xxxx; 13: MAD temp[19].y, temp[19].xxxx, |temp[19].xxxx|, -temp[19].xxxx; 14: MAD temp[2].x, temp[19].yyyy, const[11].wwww, temp[19].xxxx; 15: MAD temp[20].w, temp[1].xxxx, const[12].zzzz, const[12].xxxx; 16: FRC temp[20].w, temp[20].wwww; 17: MAD temp[20].w, temp[20].wwww, const[12].wwww, -const[11].zzzz; 18: MUL temp[21].xy, temp[20].wwww, const[11]; 19: MAD temp[21].x, temp[21].yyyy, |temp[20].wwww|, temp[21].xxxx; 20: MAD temp[21].y, temp[21].xxxx, |temp[21].xxxx|, -temp[21].xxxx; 21: MAD temp[1].x, temp[21].yyyy, const[11].wwww, temp[21].xxxx; 22: MOV temp[2].y, temp[1].xxxx; 23: MUL temp[1].xyz, temp[2].xyzz, const[4].wwww; 24: MUL temp[2].xyz, temp[2].yxzz, const[4].xyzz; 25: RCP temp[3].x, input[5].wwww; 26: MUL temp[3].xyz, input[5].xyzz, temp[3].xxxx; 27: ADD temp[4].xyz, temp[3].xyzz, temp[1].xyzz; 28: ADD temp[1].xyz, temp[3].xyzz, -temp[1].xyzz; 29: ADD temp[5].xyz, temp[3].xyzz, temp[2].xyzz; 30: ADD temp[2].xyz, temp[3].xyzz, -temp[2].xyzz; 31: TEX temp[3], input[2].xyyy, 2D[0]; 32: MOV temp[6].w, const[7].wwww; 33: TEX temp[7], input[3].xyyy, 2D[1]; 34: MUL temp[7], input[1], temp[7]; 35: TXP temp[8], input[5].xyyw, 2D[2]; 36: MUL temp[8], input[4].xxxx, temp[8]; 37: TEX temp[10], temp[4].xyzy, 2DSHADOW[3]; 38: MOV_SAT temp[11].w, temp[4].zzzz; 39: ADD temp[11].w, -temp[11].wwww, temp[10].xxxx; 40: CMP temp[4].z, temp[11].www1, none.0001, none.1111; 41: TEX temp[12], temp[1].xyzy, 2DSHADOW[3]; 42: MOV_SAT temp[13].w, temp[1].zzzz; 43: ADD temp[13].w, -temp[13].wwww, temp[12].xxxx; 44: CMP temp[1].z, temp[13].www1, none.0001, none.1111; 45: ADD temp[1].x, temp[4].zzzz, temp[1].zzzz; 46: TEX temp[14], temp[5].xyzy, 2DSHADOW[3]; 47: MOV_SAT temp[15].w, temp[5].zzzz; 48: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 49: CMP temp[4].z, temp[15].www1, none.0001, none.1111; 50: ADD temp[1].x, temp[1].xxxx, temp[4].zzzz; 51: TEX temp[16], temp[2].xyzy, 2DSHADOW[3]; 52: MOV_SAT temp[17].w, temp[2].zzzz; 53: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 54: CMP temp[2].z, temp[17].www1, none.0001, none.1111; 55: ADD temp[1].x, temp[1].xxxx, temp[2].zzzz; 56: MUL temp[1], temp[8], temp[1].xxxx; 57: MUL temp[1], temp[1], const[8].yyyy; 58: MAD temp[1].xyz, temp[7], const[8].xxxx, temp[1]; 59: MOV temp[6].xyz, temp[1].xyzx; 60: MUL temp[1].xyz, temp[3], temp[6]; 61: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 62: MOV temp[1].w, temp[3].wwww; 63: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[9].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[9].ww__; 2: MAD temp[9].xy, temp[9].xy__, const[9].xy__, const[10].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[6]._x__, const[6]._y__; 5: MUL temp[1].x, const[7].y___, temp[0].x___; 6: MAD temp[1].x, const[7].x___, temp[0].y___, temp[1].x___; 7: MOV temp[2].z, const[7].__z_; 8: MAD temp[18].w, temp[1].___x, const[12].___z, const[12].___y; 9: FRC temp[18].w, temp[18].___w; 10: MAD temp[18].w, temp[18].___w, const[12].___w, -const[11].___z; 11: MUL temp[19].xy, temp[18].ww__, const[11].xy__; 12: MAD temp[19].x, temp[19].y___, |temp[18].w___|, temp[19].x___; 13: MAD temp[19].y, temp[19]._x__, |temp[19]._x__|, -temp[19]._x__; 14: MAD temp[2].x, temp[19].y___, const[11].w___, temp[19].x___; 15: MAD temp[20].w, temp[1].___x, const[12].___z, const[12].___x; 16: FRC temp[20].w, temp[20].___w; 17: MAD temp[20].w, temp[20].___w, const[12].___w, -const[11].___z; 18: MUL temp[21].xy, temp[20].ww__, const[11].xy__; 19: MAD temp[21].x, temp[21].y___, |temp[20].w___|, temp[21].x___; 20: MAD temp[21].y, temp[21]._x__, |temp[21]._x__|, -temp[21]._x__; 21: MAD temp[1].x, temp[21].y___, const[11].w___, temp[21].x___; 22: MOV temp[2].y, temp[1]._x__; 23: MUL temp[1].xyz, temp[2].xyz_, const[4].www_; 24: MUL temp[2].xyz, temp[2].yxz_, const[4].xyz_; 25: RCP temp[3].x, input[5].w___; 26: MUL temp[3].xyz, input[5].xyz_, temp[3].xxx_; 27: ADD temp[4].xyz, temp[3].xyz_, temp[1].xyz_; 28: ADD temp[1].xyz, temp[3].xyz_, -temp[1].xyz_; 29: ADD temp[5].xyz, temp[3].xyz_, temp[2].xyz_; 30: ADD temp[2].xyz, temp[3].xyz_, -temp[2].xyz_; 31: TEX temp[3], input[2].xy__, 2D[0]; 32: TEX temp[7].xyz, input[3].xy__, 2D[1]; 33: MUL temp[7].xyz, input[1].xyz_, temp[7].xyz_; 34: TXP temp[8].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[8].xyz, input[4].xxx_, temp[8].xyz_; 36: TEX temp[10].x, temp[4].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[11].w, temp[4].___z; 38: ADD temp[11].w, -temp[11].___w, temp[10].___x; 39: CMP temp[4].z, temp[11].__w_, none.__0_, none.__1_; 40: TEX temp[12].x, temp[1].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[13].w, temp[1].___z; 42: ADD temp[13].w, -temp[13].___w, temp[12].___x; 43: CMP temp[1].z, temp[13].__w_, none.__0_, none.__1_; 44: ADD temp[1].x, temp[4].z___, temp[1].z___; 45: TEX temp[14].x, temp[5].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[15].w, temp[5].___z; 47: ADD temp[15].w, -temp[15].___w, temp[14].___x; 48: CMP temp[4].z, temp[15].__w_, none.__0_, none.__1_; 49: ADD temp[1].x, temp[1].x___, temp[4].z___; 50: TEX temp[16].x, temp[2].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[17].w, temp[2].___z; 52: ADD temp[17].w, -temp[17].___w, temp[16].___x; 53: CMP temp[2].z, temp[17].__w_, none.__0_, none.__1_; 54: ADD temp[1].x, temp[1].x___, temp[2].z___; 55: MUL temp[1].xyz, temp[8].xyz_, temp[1].xxx_; 56: MUL temp[1].xyz, temp[1].xyz_, const[8].yyy_; 57: MAD temp[1].xyz, temp[7].xyz_, const[8].xxx_, temp[1].xyz_; 58: MOV temp[6].xyz, temp[1].xyz_; 59: MUL temp[1].xyz, temp[3].xyz_, temp[6].xyz_; 60: MUL temp[1].xyz, temp[1].xyz_, const[0].xyz_; 61: MOV temp[1].w, temp[3].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[9].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[9].ww__; 2: MAD temp[9].xy, temp[9].xy__, const[9].xy__, const[10].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[6]._x__, const[6]._y__; 5: MUL temp[1].x, const[7].y___, temp[0].x___; 6: MAD temp[1].x, const[7].x___, temp[0].y___, temp[1].x___; 7: MOV temp[2].z, const[7].__z_; 8: MAD temp[18].w, temp[1].___x, const[12].___z, const[12].___y; 9: FRC temp[18].w, temp[18].___w; 10: MAD temp[18].w, temp[18].___w, const[12].___w, -const[11].___z; 11: MUL temp[19].xy, temp[18].ww__, const[11].xy__; 12: MAD temp[19].x, temp[19].y___, |temp[18].w___|, temp[19].x___; 13: MAD temp[19].y, temp[19]._x__, |temp[19]._x__|, -temp[19]._x__; 14: MAD temp[2].x, temp[19].y___, const[11].w___, temp[19].x___; 15: MAD temp[20].w, temp[1].___x, const[12].___z, const[12].___x; 16: FRC temp[20].w, temp[20].___w; 17: MAD temp[20].w, temp[20].___w, const[12].___w, -const[11].___z; 18: MUL temp[21].xy, temp[20].ww__, const[11].xy__; 19: MAD temp[21].x, temp[21].y___, |temp[20].w___|, temp[21].x___; 20: MAD temp[21].y, temp[21]._x__, |temp[21]._x__|, -temp[21]._x__; 21: MAD temp[1].x, temp[21].y___, const[11].w___, temp[21].x___; 22: MOV temp[2].y, temp[1]._x__; 23: MUL temp[1].xyz, temp[2].xyz_, const[4].www_; 24: MUL temp[2].xyz, temp[2].yxz_, const[4].xyz_; 25: RCP temp[3].x, input[5].w___; 26: MUL temp[3].xyz, input[5].xyz_, temp[3].xxx_; 27: ADD temp[4].xyz, temp[3].xyz_, temp[1].xyz_; 28: ADD temp[1].xyz, temp[3].xyz_, -temp[1].xyz_; 29: ADD temp[5].xyz, temp[3].xyz_, temp[2].xyz_; 30: ADD temp[2].xyz, temp[3].xyz_, -temp[2].xyz_; 31: TEX temp[3], input[2].xy__, 2D[0]; 32: TEX temp[7].xyz, input[3].xy__, 2D[1]; 33: MUL temp[7].xyz, input[1].xyz_, temp[7].xyz_; 34: TXP temp[8].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[8].xyz, input[4].xxx_, temp[8].xyz_; 36: TEX temp[10].x, temp[4].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[11].w, temp[4].___z; 38: ADD temp[11].w, -temp[11].___w, temp[10].___x; 39: CMP temp[4].z, temp[11].__w_, none.__0_, none.__1_; 40: TEX temp[12].x, temp[1].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[13].w, temp[1].___z; 42: ADD temp[13].w, -temp[13].___w, temp[12].___x; 43: CMP temp[1].z, temp[13].__w_, none.__0_, none.__1_; 44: ADD temp[1].x, temp[4].z___, temp[1].z___; 45: TEX temp[14].x, temp[5].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[15].w, temp[5].___z; 47: ADD temp[15].w, -temp[15].___w, temp[14].___x; 48: CMP temp[4].z, temp[15].__w_, none.__0_, none.__1_; 49: ADD temp[1].x, temp[1].x___, temp[4].z___; 50: TEX temp[16].x, temp[2].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[17].w, temp[2].___z; 52: ADD temp[17].w, -temp[17].___w, temp[16].___x; 53: CMP temp[2].z, temp[17].__w_, none.__0_, none.__1_; 54: ADD temp[1].x, temp[1].x___, temp[2].z___; 55: MUL temp[1].xyz, temp[8].xyz_, temp[1].xxx_; 56: MUL temp[1].xyz, temp[1].xyz_, const[8].yyy_; 57: MAD temp[1].xyz, temp[7].xyz_, const[8].xxx_, temp[1].xyz_; 58: MOV temp[6].xyz, temp[1].xyz_; 59: MUL temp[1].xyz, temp[3].xyz_, temp[6].xyz_; 60: MUL temp[1].xyz, temp[1].xyz_, const[0].xyz_; 61: MOV temp[1].w, temp[3].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[9].xy__, const[10].xy__; 3: MOV temp[25].x, temp[24].x___; 4: MAD temp[26].y, temp[24]._y__, const[6]._x__, const[6]._y__; 5: MUL temp[27].x, const[7].y___, temp[25].x___; 6: MAD temp[28].x, const[7].x___, temp[26].y___, temp[27].x___; 7: MOV temp[2].z, const[7].__z_; 8: MAD temp[29].w, temp[28].___x, const[12].___z, const[12].___y; 9: FRC temp[30].w, temp[29].___w; 10: MAD temp[31].w, temp[30].___w, const[12].___w, -const[11].___z; 11: MUL temp[32].xy, temp[31].ww__, const[11].xy__; 12: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 13: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 14: MAD temp[2].x, temp[34].y___, const[11].w___, temp[33].x___; 15: MAD temp[35].w, temp[28].___x, const[12].___z, const[12].___x; 16: FRC temp[36].w, temp[35].___w; 17: MAD temp[37].w, temp[36].___w, const[12].___w, -const[11].___z; 18: MUL temp[38].xy, temp[37].ww__, const[11].xy__; 19: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 20: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 21: MAD temp[41].x, temp[40].y___, const[11].w___, temp[39].x___; 22: MOV temp[2].y, temp[41]._x__; 23: MUL temp[42].xyz, temp[2].xyz_, const[4].www_; 24: MUL temp[43].xyz, temp[2].yxz_, const[4].xyz_; 25: RCP temp[44].x, input[5].w___; 26: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 27: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 28: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 29: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 30: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 31: TEX temp[50], input[2].xy__, 2D[0]; 32: TEX temp[51].xyz, input[3].xy__, 2D[1]; 33: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 34: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 35: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 36: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 37: MOV_SAT temp[56].w, temp[46].___z; 38: ADD temp[57].w, -temp[56].___w, temp[55].___x; 39: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 40: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 41: MOV_SAT temp[60].w, temp[47].___z; 42: ADD temp[61].w, -temp[60].___w, temp[59].___x; 43: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 44: ADD temp[63].x, temp[58].z___, temp[62].z___; 45: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 46: MOV_SAT temp[65].w, temp[48].___z; 47: ADD temp[66].w, -temp[65].___w, temp[64].___x; 48: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 49: ADD temp[68].x, temp[63].x___, temp[67].z___; 50: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 51: MOV_SAT temp[70].w, temp[49].___z; 52: ADD temp[71].w, -temp[70].___w, temp[69].___x; 53: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 54: ADD temp[73].x, temp[68].x___, temp[72].z___; 55: MUL temp[74].xyz, temp[54].xyz_, temp[73].xxx_; 56: MUL temp[75].xyz, temp[74].xyz_, const[8].yyy_; 57: MAD temp[76].xyz, temp[52].xyz_, const[8].xxx_, temp[75].xyz_; 58: MOV temp[77].xyz, temp[76].xyz_; 59: MUL temp[78].xyz, temp[50].xyz_, temp[77].xyz_; 60: MUL temp[1].xyz, temp[78].xyz_, const[0].xyz_; 61: MOV temp[1].w, temp[50].___w; 62: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[9].xy__, const[10].xy__; 3: MAD temp[26].y, temp[24]._y__, const[6]._x__, const[6]._y__; 4: MUL temp[27].x, const[7].y___, temp[24].x___; 5: MAD temp[28].x, const[7].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[12].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[12].___w, -const[11].___z; 10: MUL temp[32].xy, temp[31].ww__, const[11].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[11].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[12].___z, const[12].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[12].___w, -const[11].___z; 17: MUL temp[38].xy, temp[37].ww__, const[11].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[11].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[4].www_; 23: MUL temp[43].xyz, temp[2].yxz_, const[4].xyz_; 24: RCP temp[44].x, input[5].w___; 25: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 26: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 27: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 28: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 29: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 30: TEX temp[50], input[2].xy__, 2D[0]; 31: TEX temp[51].xyz, input[3].xy__, 2D[1]; 32: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 33: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 34: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 35: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 36: MOV_SAT temp[56].w, temp[46].___z; 37: ADD temp[57].w, -temp[56].___w, temp[55].___x; 38: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 39: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 40: MOV_SAT temp[60].w, temp[47].___z; 41: ADD temp[61].w, -temp[60].___w, temp[59].___x; 42: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 43: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 44: MOV_SAT temp[65].w, temp[48].___z; 45: ADD temp[66].w, -temp[65].___w, temp[64].___x; 46: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 47: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 48: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 49: MOV_SAT temp[70].w, temp[49].___z; 50: ADD temp[71].w, -temp[70].___w, temp[69].___x; 51: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 52: ADD temp[73].x, temp[68].x___, temp[72].z___; 53: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 54: MAD temp[76].xyz, temp[52].xyz_, const[8].xxx_, temp[75].xyz_; 55: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 56: MUL temp[1].xyz, temp[78].xyz_, const[0].xyz_; 57: MOV temp[1].w, temp[50].___w; 58: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[9].xy__, const[10].xy__; 3: MAD temp[26].y, temp[24]._y__, const[6]._x__, const[6]._y__; 4: MUL temp[27].x, const[7].y___, temp[24].x___; 5: MAD temp[28].x, const[7].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[12].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[12].___w, -const[11].___z; 10: MUL temp[32].xy, temp[31].ww__, const[11].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[11].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[12].___z, const[12].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[12].___w, -const[11].___z; 17: MUL temp[38].xy, temp[37].ww__, const[11].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[11].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[4].www_; 23: MOV temp[0].z, temp[2].__z_; 24: MOV temp[0].y, temp[2]._x__; 25: MOV temp[0].x, temp[2].y___; 26: MUL temp[43].xyz, temp[0].xyz_, const[4].xyz_; 27: RCP temp[44].x, input[5].w___; 28: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 29: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 30: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 31: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 32: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: MOV_SAT temp[56].w, temp[46].___z; 40: ADD temp[57].w, -temp[56].___w, temp[55].___x; 41: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: MOV_SAT temp[60].w, temp[47].___z; 44: ADD temp[61].w, -temp[60].___w, temp[59].___x; 45: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: MOV_SAT temp[65].w, temp[48].___z; 48: ADD temp[66].w, -temp[65].___w, temp[64].___x; 49: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 50: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: MOV_SAT temp[70].w, temp[49].___z; 53: ADD temp[71].w, -temp[70].___w, temp[69].___x; 54: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 55: ADD temp[73].x, temp[68].x___, temp[72].z___; 56: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 57: MAD temp[76].xyz, temp[52].xyz_, const[8].xxx_, temp[75].xyz_; 58: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 59: MUL temp[1].xyz, temp[78].xyz_, const[0].xyz_; 60: MOV temp[1].w, temp[50].___w; 61: MOV output[0], temp[1]; CONST[3] = { 5.7000 8.1000 0.0000 1.0000 } CONST[4] = { 2.0000 0.2500 0.0000 0.0000 } CONST[7] = { 1.2732 -0.4053 3.1416 0.2225 } CONST[8] = { 0.7500 0.5000 0.1592 6.2832 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[22].w, input[0].___w; 1: MUL temp[23].xy, input[0].xy__, temp[22].ww__; 2: MAD temp[24].xy, temp[23].xy__, const[5].xy__, const[6].xy__; 3: MAD temp[26].y, temp[24]._y__, const[2]._x__, const[2]._y__; 4: MUL temp[27].x, const[3].y___, temp[24].x___; 5: MAD temp[28].x, const[3].x___, temp[26].y___, temp[27].x___; 6: MOV temp[2].z, none.__0_; 7: MAD temp[29].w, temp[28].___x, const[8].___z, none.___H; 8: FRC temp[30].w, temp[29].___w; 9: MAD temp[31].w, temp[30].___w, const[8].___w, -const[7].___z; 10: MUL temp[32].xy, temp[31].ww__, const[7].xy__; 11: MAD temp[33].x, temp[32].y___, |temp[31].w___|, temp[32].x___; 12: MAD temp[34].y, temp[33]._x__, |temp[33]._x__|, -temp[33]._x__; 13: MAD temp[2].x, temp[34].y___, const[7].w___, temp[33].x___; 14: MAD temp[35].w, temp[28].___x, const[8].___z, const[8].___x; 15: FRC temp[36].w, temp[35].___w; 16: MAD temp[37].w, temp[36].___w, const[8].___w, -const[7].___z; 17: MUL temp[38].xy, temp[37].ww__, const[7].xy__; 18: MAD temp[39].x, temp[38].y___, |temp[37].w___|, temp[38].x___; 19: MAD temp[40].y, temp[39]._x__, |temp[39]._x__|, -temp[39]._x__; 20: MAD temp[41].x, temp[40].y___, const[7].w___, temp[39].x___; 21: MOV temp[2].y, temp[41]._x__; 22: MUL temp[42].xyz, temp[2].xyz_, const[1].www_; 23: MOV temp[0].z, temp[2].__z_; 24: MOV temp[0].y, temp[2]._x__; 25: MOV temp[0].x, temp[2].y___; 26: MUL temp[43].xyz, temp[0].xyz_, const[1].xyz_; 27: RCP temp[44].x, input[5].w___; 28: MUL temp[45].xyz, input[5].xyz_, temp[44].xxx_; 29: ADD temp[46].xyz, temp[45].xyz_, temp[42].xyz_; 30: ADD temp[47].xyz, temp[45].xyz_, -temp[42].xyz_; 31: ADD temp[48].xyz, temp[45].xyz_, temp[43].xyz_; 32: ADD temp[49].xyz, temp[45].xyz_, -temp[43].xyz_; 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: MUL temp[52].xyz, input[1].xyz_, temp[51].xyz_; 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: MUL temp[54].xyz, input[4].xxx_, temp[53].xyz_; 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: MOV_SAT temp[56].w, temp[46].___z; 40: ADD temp[57].w, -temp[56].___w, temp[55].___x; 41: CMP temp[58].z, temp[57].__w_, none.__0_, none.__1_; 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: MOV_SAT temp[60].w, temp[47].___z; 44: ADD temp[61].w, -temp[60].___w, temp[59].___x; 45: CMP temp[62].z, temp[61].__w_, none.__0_, none.__1_; 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: MOV_SAT temp[65].w, temp[48].___z; 48: ADD temp[66].w, -temp[65].___w, temp[64].___x; 49: CMP temp[67].z, temp[66].__w_, none.__0_, none.__1_; 50: ADD temp[68].x, (temp[62] + temp[58]).z___, temp[67].z___; 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: MOV_SAT temp[70].w, temp[49].___z; 53: ADD temp[71].w, -temp[70].___w, temp[69].___x; 54: CMP temp[72].z, temp[71].__w_, none.__0_, none.__1_; 55: ADD temp[73].x, temp[68].x___, temp[72].z___; 56: MUL temp[75].xyz / 4, temp[54].xyz_, temp[73].xxx_; 57: MAD temp[76].xyz, temp[52].xyz_, const[4].xxx_, temp[75].xyz_; 58: MUL temp[78].xyz, temp[50].xyz_, temp[76].xyz_; 59: MUL temp[1].xyz, temp[78].xyz_, const[0].xyz_; 60: MOV temp[1].w, temp[50].___w; 61: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[23], src1.xyz = const[5], src2.xyz = const[6] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[2] MAD temp[26].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = const[3], src1.xyz = temp[24] MAD temp[27].x, src0.y__, src1.x__, src0.000 5: src0.xyz = const[3], src1.xyz = temp[26], src2.xyz = temp[27] MAD temp[28].x, src0.x__, src1.y__, src2.x__ 6: MAD temp[2].z, src0.__0, src0.111, src0.000 7: src0.xyz = temp[28], src1.xyz = const[8] MAD temp[29].w, src0.x, src1.z, src0.H 8: src0.w = temp[29] FRC temp[30].w, src0.w 9: src0.xyz = const[7], src0.w = temp[30], src1.w = const[8] MAD temp[31].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[7], src0.w = temp[31] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 11: src0.xyz = temp[32], src0.w = temp[31] MAD temp[33].x, src0.y__, |src0.w__|, src0.x__ 12: src0.xyz = temp[33] MAD temp[34].y, src0._x_, |src0._x_|, -src0._x_ 13: src0.xyz = temp[34], src0.w = const[7], src1.xyz = temp[33] MAD temp[2].x, src0.y__, src0.w__, src1.x__ 14: src0.xyz = temp[28], src1.xyz = const[8] MAD temp[35].w, src0.x, src1.z, src1.x 15: src0.w = temp[35] FRC temp[36].w, src0.w 16: src0.xyz = const[7], src0.w = temp[36], src1.w = const[8] MAD temp[37].w, src0.w, src1.w, -src0.z 17: src0.xyz = const[7], src0.w = temp[37] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 18: src0.xyz = temp[38], src0.w = temp[37] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ 19: src0.xyz = temp[39] MAD temp[40].y, src0._x_, |src0._x_|, -src0._x_ 20: src0.xyz = temp[40], src0.w = const[7], src1.xyz = temp[39] MAD temp[41].x, src0.y__, src0.w__, src1.x__ 21: src0.xyz = temp[41] MAD temp[2].y, src0._x_, src0.111, src0.000 22: src0.xyz = temp[2], src0.w = const[1] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 23: src0.xyz = temp[2] MAD temp[0].z, src0.__z, src0.111, src0.000 24: src0.xyz = temp[2] MAD temp[0].y, src0._x_, src0.111, src0.000 25: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 26: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 27: src0.w = input[5] REPL_ALPHA temp[44].x RCP, src0.w 28: src0.xyz = input[5], src1.xyz = temp[44] MAD temp[45].xyz, src0.xyz, src1.xxx, src0.000 29: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 30: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz 32: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 33: TEX temp[50], input[2].xy__, 2D[0]; 34: TEX temp[51].xyz, input[3].xy__, 2D[1]; 35: src0.xyz = input[1], src1.xyz = temp[51] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 36: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 37: src0.xyz = input[4], src1.xyz = temp[53] MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 38: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 39: src0.xyz = temp[46] MAD_SAT temp[56].w, src0.z, src0.1, src0.0 40: src0.xyz = temp[55], src0.w = temp[56] MAD temp[57].w, -src0.w, src0.1, src0.x 41: src0.w = temp[57] CMP temp[58].z, src0.__1, src0.__0, src0.__w 42: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 43: src0.xyz = temp[47] MAD_SAT temp[60].w, src0.z, src0.1, src0.0 44: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 45: src0.w = temp[61] CMP temp[62].z, src0.__1, src0.__0, src0.__w 46: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3]; 47: src0.xyz = temp[48] MAD_SAT temp[65].w, src0.z, src0.1, src0.0 48: src0.xyz = temp[64], src0.w = temp[65] MAD temp[66].w, -src0.w, src0.1, src0.x 49: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 50: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 51: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 52: src0.xyz = temp[49] MAD_SAT temp[70].w, src0.z, src0.1, src0.0 53: src0.xyz = temp[69], src0.w = temp[70] MAD temp[71].w, -src0.w, src0.1, src0.x 54: src0.w = temp[71] CMP temp[72].z, src0.__1, src0.__0, src0.__w 55: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 56: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 57: src0.xyz = temp[52], src1.xyz = const[4], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 58: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 59: src0.xyz = temp[78], src1.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 60: src0.w = temp[50] MAD temp[1].w, src0.w, src0.1, src0.0 61: 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.w = input[0] MAD temp[2].z, src0.__0, src0.111, src0.000 RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22], src1.w = input[5] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 RCP temp[44].w, src1.w 2: src0.xyz = temp[23], src1.xyz = const[5], src2.xyz = const[6] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[2], src2.xyz = const[3] MAD temp[26].y, src0._y_, src1._x_, src1._y_ MAD temp[27].w, src2.y, src0.x, src0.0 4: src0.xyz = input[5], src0.w = temp[44], src1.xyz = temp[44] MAD temp[45].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[3], src0.w = temp[27], src1.xyz = temp[26], src2.xyz = temp[27] MAD temp[28].w, src0.x, src1.y, src0.w 6: src0.xyz = temp[28], src0.w = temp[28], src1.xyz = const[8] MAD temp[35].w, src0.w, src1.z, src1.x 7: src0.xyz = temp[28], src0.w = temp[28], src1.xyz = const[8] MAD temp[29].w, src0.w, src1.z, src0.H 8: src0.w = temp[35] FRC temp[36].w, src0.w 9: src0.xyz = const[7], src0.w = temp[36], src1.w = const[8] MAD temp[37].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[7], src0.w = temp[37], src1.w = temp[29] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 FRC temp[30].w, src1.w 11: src0.xyz = temp[38], src0.w = temp[37], src1.xyz = const[7], src1.w = temp[30], src2.w = const[8] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ MAD temp[31].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[7], src0.w = temp[31], src1.xyz = temp[39] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 MAD temp[40].w, src1.x, |src1.x|, -src1.x 13: src0.xyz = temp[40], src0.w = const[7], src1.xyz = temp[39], src1.w = temp[40], src2.xyz = temp[32], src2.w = temp[31] MAD temp[41].x, src1.w__, src0.w__, src1.x__ MAD temp[33].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[41], src0.w = temp[33] MAD temp[2].y, src0._x_, src0.111, src0.000 MAD temp[34].w, src0.w, |src0.w|, -src0.w 15: src0.xyz = temp[34], src0.w = const[7], src1.xyz = temp[33], src1.w = temp[33], src2.w = temp[34] MAD temp[2].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[2], src0.w = const[1] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[2], src1.xyz = temp[47] MAD temp[0].y, src0._x_, src0.111, src0.000 MAD_SAT temp[60].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[2], src1.xyz = temp[46] MAD temp[0].z, src0.__z, src0.111, src0.000 MAD_SAT temp[56].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[45], src1.xyz = temp[43], src2.xyz = temp[49] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[70].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[50], input[2].xy__, 2D[0]; 27: TEX temp[51].xyz, input[3].xy__, 2D[1]; 28: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 29: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 30: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 31: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 32: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[4], src0.w = temp[50], src1.xyz = temp[53] SEM_WAIT MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 34: src0.xyz = input[1], src1.xyz = temp[51], src2.xyz = temp[48] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[65].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[55], src0.w = temp[61], src1.w = temp[56] CMP temp[62].z, src0.__1, src0.__0, src0.__w MAD temp[57].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[69], src0.w = temp[57], src1.w = temp[70] CMP temp[58].z, src0.__1, src0.__0, src0.__w MAD temp[71].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[64], src0.w = temp[71], src1.w = temp[65] CMP temp[72].z, src0.__1, src0.__0, src0.__w MAD temp[66].w, -src1.w, src0.1, src0.x 39: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 40: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 41: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 42: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[52], src1.xyz = const[4], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[78], src1.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 46: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.w = input[0] MAD temp[2].z, src0.__0, src0.111, src0.000 RCP temp[22].w, src0.w 1: src0.xyz = input[0], src0.w = temp[22], src1.w = input[5] MAD temp[23].xy, src0.xy_, src0.ww_, src0.000 RCP temp[44].w, src1.w 2: src0.xyz = temp[23], src1.xyz = const[5], src2.xyz = const[6] MAD temp[24].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[24], src1.xyz = const[2], src2.xyz = const[3] MAD temp[26].y, src0._y_, src1._x_, src1._y_ MAD temp[27].w, src2.y, src0.x, src0.0 4: src0.xyz = input[5], src0.w = temp[44] MAD temp[45].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[3], src0.w = temp[27], src1.xyz = temp[26] MAD temp[28].w, src0.x, src1.y, src0.w 6: src0.w = temp[28], src1.xyz = const[8] MAD temp[35].w, src0.w, src1.z, src1.x 7: src0.w = temp[28], src1.xyz = const[8] MAD temp[29].w, src0.w, src1.z, src0.H 8: src0.w = temp[35] FRC temp[36].w, src0.w 9: src0.xyz = const[7], src0.w = temp[36], src1.w = const[8] MAD temp[37].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[7], src0.w = temp[37], src1.w = temp[29] MAD temp[38].xy, src0.ww_, src0.xy_, src0.000 FRC temp[30].w, src1.w 11: src0.xyz = temp[38], src0.w = temp[37], src1.xyz = const[7], src1.w = temp[30], src2.w = const[8] MAD temp[39].x, src0.y__, |src0.w__|, src0.x__ MAD temp[31].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[7], src0.w = temp[31], src1.xyz = temp[39] MAD temp[32].xy, src0.ww_, src0.xy_, src0.000 MAD temp[40].w, src1.x, |src1.x|, -src1.x 13: src0.w = const[7], src1.xyz = temp[39], src1.w = temp[40], src2.xyz = temp[32], src2.w = temp[31] MAD temp[41].x, src1.w__, src0.w__, src1.x__ MAD temp[33].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[41], src0.w = temp[33] MAD temp[2].y, src0._x_, src0.111, src0.000 MAD temp[34].w, src0.w, |src0.w|, -src0.w 15: src0.w = const[7], src1.w = temp[33], src2.w = temp[34] MAD temp[2].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[2], src0.w = const[1] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[2] MAD temp[0].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[47].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[2], src1.xyz = temp[47] MAD temp[0].y, src0._x_, src0.111, src0.000 MAD_SAT temp[60].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[45], src1.xyz = temp[42] MAD temp[46].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[2], src1.xyz = temp[46] MAD temp[0].z, src0.__z, src0.111, src0.000 MAD_SAT temp[56].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[43].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[45], src1.xyz = temp[43] MAD temp[49].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[45], src1.xyz = temp[43], src2.xyz = temp[49] MAD temp[48].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[70].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[50], input[2].xy__, 2D[0]; 27: TEX temp[51].xyz, input[3].xy__, 2D[1]; 28: TXP temp[53].xyz, input[5].xy_w, 2D[2]; 29: TEX temp[59].x, temp[47].xy__, 2DSHADOW[3]; 30: TEX temp[55].x, temp[46].xy__, 2DSHADOW[3]; 31: TEX temp[69].x, temp[49].xy__, 2DSHADOW[3]; 32: TEX temp[64].x, temp[48].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[4], src0.w = temp[50], src1.xyz = temp[53] SEM_WAIT MAD temp[54].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src0.w, src0.1, src0.0 34: src0.xyz = input[1], src1.xyz = temp[51], src2.xyz = temp[48] MAD temp[52].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[65].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[59], src0.w = temp[60] MAD temp[61].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[55], src0.w = temp[61], src1.w = temp[56] CMP temp[62].z, src0.__1, src0.__0, src0.__w MAD temp[57].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[69], src0.w = temp[57], src1.w = temp[70] CMP temp[58].z, src0.__1, src0.__0, src0.__w MAD temp[71].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[64], src0.w = temp[71], src1.w = temp[65] CMP temp[72].z, src0.__1, src0.__0, src0.__w MAD temp[66].w, -src1.w, src0.1, src0.x 39: src0.w = temp[66] CMP temp[67].z, src0.__1, src0.__0, src0.__w 40: src0.xyz = temp[58], src1.xyz = temp[62], src2.xyz = temp[67], srcp.xyz = (src1 + src0) MAD temp[68].x, srcp.z__, src0.111, src2.z__ 41: src0.xyz = temp[68], src1.xyz = temp[72] MAD temp[73].x, src0.x__, src0.111, src1.z__ 42: src0.xyz = temp[54], src1.xyz = temp[73] MAD temp[75].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[52], src1.xyz = const[4], src2.xyz = temp[75] MAD temp[76].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[50], src1.xyz = temp[76] MAD temp[78].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[78], src1.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 46: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.w = input[5] MAD temp[6].z, src0.__0, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[5], src0.w = temp[0], src1.w = input[4] MAD temp[5].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.w 2: src0.xyz = temp[5], src1.xyz = const[5], src2.xyz = const[6] MAD temp[5].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[5], src1.xyz = const[2], src2.xyz = const[3] MAD temp[1].z, src0.__y, src1.__x, src1.__y MAD temp[1].w, src2.y, src0.x, src0.0 4: src0.xyz = input[4], src0.w = temp[0] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[3], src0.w = temp[1], src1.xyz = temp[1] MAD temp[0].w, src0.x, src1.z, src0.w 6: src0.w = temp[0], src1.xyz = const[8] MAD temp[1].w, src0.w, src1.z, src1.x 7: src0.w = temp[0], src1.xyz = const[8] MAD temp[0].w, src0.w, src1.z, src0.H 8: src0.w = temp[1] FRC temp[1].w, src0.w 9: src0.xyz = const[7], src0.w = temp[1], src1.w = const[8] MAD temp[1].w, src0.w, src1.w, -src0.z 10: src0.xyz = const[7], src0.w = temp[1], src1.w = temp[0] MAD temp[7].xy, src0.ww_, src0.xy_, src0.00_ FRC temp[0].w, src1.w 11: src0.xyz = temp[7], src0.w = temp[1], src1.xyz = const[7], src1.w = temp[0], src2.w = const[8] MAD temp[1].z, src0.__y, |src0.__w|, src0.__x MAD temp[0].w, src1.w, src2.w, -src1.z 12: src0.xyz = const[7], src0.w = temp[0], src1.xyz = temp[1] MAD temp[7].xy, src0.ww_, src0.xy_, src0.00_ MAD temp[1].w, src1.z, |src1.z|, -src1.z 13: src0.w = const[7], src1.xyz = temp[1], src1.w = temp[1], src2.xyz = temp[7], src2.w = temp[0] MAD temp[1].z, src1.__w, src0.__w, src1.__z MAD temp[0].w, src2.y, |src2.w|, src2.x 14: src0.xyz = temp[1], src0.w = temp[0] MAD temp[6].y, src0._z_, src0.111, src0.000 MAD temp[1].w, src0.w, |src0.w|, -src0.w 15: src0.w = const[7], src1.w = temp[0], src2.w = temp[1] MAD temp[6].x, src2.w__, src0.w__, src1.w__ 16: src0.xyz = temp[6], src0.w = const[1] MAD temp[7].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[6] MAD temp[8].x, src0.y__, src0.111, src0.000 18: src0.xyz = temp[5], src1.xyz = temp[7] MAD temp[9].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[6], src1.xyz = temp[9] MAD temp[8].y, src0._x_, src0.111, src0.000 MAD_SAT temp[0].w, src1.z, src0.1, src0.0 20: src0.xyz = temp[5], src1.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src0.111, src1.xyz 21: src0.xyz = temp[6], src1.xyz = temp[7] MAD temp[8].z, src0.__z, src0.111, src0.000 MAD_SAT temp[1].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[8], src1.xyz = const[1] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[5], src1.xyz = temp[6] MAD temp[8].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[5], src1.xyz = temp[6], src2.xyz = temp[8] MAD temp[5].xyz, src0.xyz, src0.111, src1.xyz MAD_SAT temp[2].w, src2.z, src0.1, src0.0 25: BEGIN_TEX; 26: TEX temp[6], input[1].xy__, 2D[0]; 27: TEX temp[10].xyz, input[2].xy__, 2D[1]; 28: TXP temp[4].xyz, input[4].xy_w, 2D[2]; 29: TEX temp[9].x, temp[9].xy__, 2DSHADOW[3]; 30: TEX temp[7].x, temp[7].xy__, 2DSHADOW[3]; 31: TEX temp[8].x, temp[8].xy__, 2DSHADOW[3]; 32: TEX temp[11].x, temp[5].xy__, 2DSHADOW[3] SEM_WAIT SEM_ACQUIRE; 33: src0.xyz = input[3], src0.w = temp[6], src1.xyz = temp[4] SEM_WAIT MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[3].w, src0.w, src0.1, src0.0 34: src0.xyz = input[0], src1.xyz = temp[10], src2.xyz = temp[5] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[4].w, src2.z, src0.1, src0.0 35: src0.xyz = temp[9], src0.w = temp[0] MAD temp[0].w, -src0.w, src0.1, src0.x 36: src0.xyz = temp[7], src0.w = temp[0], src1.w = temp[1] CMP temp[2].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, -src1.w, src0.1, src0.x 37: src0.xyz = temp[8], src0.w = temp[0], src1.w = temp[2] CMP temp[3].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, -src1.w, src0.1, src0.x 38: src0.xyz = temp[11], src0.w = temp[0], src1.w = temp[4] CMP temp[2].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 39: src0.w = temp[0] CMP temp[2].y, src0._1_, src0._0_, src0._w_ 40: src0.xyz = temp[3], src1.xyz = temp[2], src2.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[2].y, srcp._z_, src0._1_, src2._y_ 41: src0.xyz = temp[2], src1.xyz = temp[2] MAD temp[2].x, src0.y__, src0.1__, src1.x__ 42: src0.xyz = temp[1], src1.xyz = temp[2] MAD temp[1].xyz / 4, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[0], src1.xyz = const[4], src2.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 45: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 46: src0.xyz = temp[0], src0.w = temp[3] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=9************************************* Hardware program ---------------- code_offset_ext: 00000000 NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 24, tex_end: 0 (code_addr: 00000600) 0: xyz: t0 t0 t0 bias-> t6.z (02180000) w: t5 t0 t0 bias-> t0.w (00800005) xyz: 0.0 1.0 0.0 op: 00050a94 w: t5.w t0.x t0.x op: 05000009 1: xyz: t5 t0 t0 bias-> t5.xy (01940005) w: t0 t4 t0 bias-> t0.w (00800100) xyz: t5.xyz t0.www 0.0 op: 00050600 w: t4.w t5.x t5.x op: 0500000a 2: xyz: t5 c5 c6 bias-> t5.xy (01966945) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz c5.xyz c6.xyz op: 00020200 w: t5.x t5.x t5.x op: 00000000 3: xyz: t5 c2 c3 bias-> t1.z (02063885) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t5.yyy c2.xxx c2.yyy op: 00018282 w: c3.y t5.x 0.0 op: 00040007 4: xyz: t4 t32 t0 bias-> t5.xyz (03940004) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz t0.www 0.0 op: 00050600 w: t4.x t4.x t4.x op: 00000000 5: xyz: c3 t1 t0 bias-> (00000063) w: t1 t0 t0 bias-> t0.w (00800001) xyz: c3.xxx c3.xxx c3.xxx op: 00004081 w: c3.x t1.z t1.w op: 00024280 6: xyz: t0 c8 t0 bias-> (00000a00) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w c8.z c8.x op: 0000c289 7: xyz: t0 c8 t0 bias-> (00000a00) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w c8.z 0.5 op: 00048289 8: xyz: t0 t0 t0 bias-> (00000000) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t1.w t0.x t0.x op: 03800009 9: xyz: c7 t0 t0 bias-> (00000027) w: t1 c8 t0 bias-> t1.w (00840a01) xyz: c7.xxx c7.xxx c7.xxx op: 00004081 w: t1.w c8.w -c7.z op: 00088509 10: xyz: c7 t0 t0 bias-> t7.xy (019c0027) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.www c7.xyz 0.0 op: 0005000c w: t0.w c7.x c7.x op: 0380000a 11: xyz: t7 c7 t0 bias-> t1.z (020409c7) w: t1 t0 c8 bias-> t0.w (00828001) xyz: t7.yyy |t1.www| t7.xxx op: 00006602 w: t0.w c8.w -c7.z op: 0009458a 12: xyz: c7 t1 t0 bias-> t7.xy (019c0067) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.www c7.xyz 0.0 op: 0005000c w: t1.z |t1.z| -t1.z op: 00096285 13: xyz: t32 t1 t7 bias-> t1.z (02047040) w: c7 t1 t0 bias-> t0.w (00800067) xyz: t1.www c7.www t1.xyz op: 0001060d w: t7.y |t0.w| t7.x op: 0001a587 14: xyz: t1 t0 t0 bias-> t6.y (01180001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.zzz 1.0 0.0 op: 00050a83 w: t0.w |t0.w| -t0.w op: 000a6489 15: xyz: t32 t32 t0 bias-> t6.x (00980000) w: c7 t0 t1 bias-> (00001027) xyz: t1.www c7.www t0.www op: 0003460e w: t32.x t32.x t32.x op: 00000000 16: xyz: t6 t0 t0 bias-> t7.xyz (039c0006) w: c1 t0 t0 bias-> (00000021) xyz: t6.xyz c1.www 0.0 op: 00050600 w: t6.x t6.x t6.x op: 00000000 17: xyz: t6 t0 t0 bias-> t8.x (00a00006) w: t0 t0 t0 bias-> (00000000) xyz: t6.yyy 1.0 0.0 op: 00050a82 w: t6.x t6.x t6.x op: 00000000 18: xyz: t5 t7 t0 bias-> t9.xyz (03a401c5) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 -t7.xyz op: 00090a80 w: t5.x t5.x t5.x op: 00000000 19: xyz: t6 t9 t0 bias-> t8.y (01200246) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xxx 1.0 0.0 op: 00050a81 w: t9.z 1.0 0.0 op: 40040885 20: xyz: t5 t7 t0 bias-> t7.xyz (039c01c5) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 t7.xyz op: 00010a80 w: t5.x t5.x t5.x op: 00000000 21: xyz: t6 t7 t0 bias-> t8.z (022001c6) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t6.xyz 1.0 0.0 op: 00050a80 w: t7.z 1.0 0.0 op: 40040885 22: xyz: t8 c1 t0 bias-> t6.xyz (03980848) w: t0 t0 t0 bias-> (00000000) xyz: t8.xyz c1.xyz 0.0 op: 00050200 w: t8.x t8.x t8.x op: 00000000 23: xyz: t5 t6 t0 bias-> t8.xyz (03a00185) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 1.0 -t6.xyz op: 00090a80 w: t5.x t5.x t5.x op: 00000000 24: xyz: t5 t6 t8 bias-> t5.xyz (03948185) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t5.xyz 1.0 t6.xyz op: 00010a80 w: t8.z 1.0 0.0 op: 40040888 NODE 1: alu_offset: 25, tex_offset: 0, alu_end: 13, tex_end: 6 (code_addr: 004c0359) TEX: TEX t6, t1, texture[0] (00008181) TEX t10, t2, texture[1] (00008a82) TXP t4, t4, texture[2] (00019104) TEX t9, t9, texture[3] (00009a49) TEX t7, t7, texture[3] (000099c7) TEX t8, t8, texture[3] (00009a08) TEX t11, t5, texture[3] (00009ac5) 25: xyz: t3 t4 t0 bias-> t1.xyz (03840103) w: t6 t0 t0 bias-> t3.w (008c0006) xyz: t3.xxx t4.xyz 0.0 op: 00050201 w: t6.w 1.0 0.0 op: 00040889 26: xyz: t0 t10 t5 bias-> t0.xyz (03805280) w: t0 t0 t0 bias-> t4.w (00900000) xyz: t0.xyz t10.xyz 0.0 op: 00050200 w: t5.z 1.0 0.0 op: 40040888 27: xyz: t9 t0 t0 bias-> (00000009) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t9.xxx t9.xxx t9.xxx op: 00004081 w: -t0.w 1.0 t9.x op: 000008a9 28: xyz: t7 t0 t0 bias-> t2.z (02080007) w: t0 t1 t0 bias-> t0.w (00800040) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t1.w 1.0 t7.x op: 000008aa 29: xyz: t8 t0 t0 bias-> t3.z (020c0008) w: t0 t2 t0 bias-> t0.w (00800080) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t2.w 1.0 t8.x op: 000008aa 30: xyz: t11 t0 t0 bias-> t2.x (0088000b) w: t0 t4 t0 bias-> t0.w (00800100) xyz: 1.0 0.0 t0.www op: 04030a15 w: -t4.w 1.0 t11.x op: 000008aa 31: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 t0.www op: 04030a15 w: t0.x t0.x t0.x op: 00000000 32: xyz: t3 t2 t2 add-> t2.y (01082083) w: t0 t0 t0 bias-> (00000000) xyz: srcp.zzz 1.0 t2.xyz op: 00420a92 w: t3.x t3.x t3.x op: 00000000 33: xyz: t2 t2 t0 bias-> t2.x (00880082) w: t0 t0 t0 bias-> (00000000) xyz: t2.yyy 1.0 t2.xyz op: 00010a82 w: t2.x t2.x t2.x op: 00000000 34: xyz: t1 t2 t0 bias-> t1.xyz (03840081) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t2.xxx 0.0 op: 28050280 w: t1.x t1.x t1.x op: 00000000 35: xyz: t0 c4 t1 bias-> t0.xyz (03801900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xxx t1.xyz op: 00020280 w: t0.x t0.x t0.x op: 00000000 36: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz t0.xyz 0.0 op: 00050200 w: t6.x t6.x t6.x op: 00000000 37: xyz: t0 c0 t0 bias-> t0.xyz (03800800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 38: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t3 t0 t0 bias-> o0.w (01000003) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t3.w 1.0 0.0 op: 00040889