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=0************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 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 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=1************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave ALSA lib setup.c:565:(add_elem) Cannot obtain info for CTL elem (MIXER,'AC97 2ch->4ch Copy Switch',0,0,0): No such file or directory ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41 ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50 ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51 ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71 ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5) ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5) ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5) ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5) ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave Cannot connect to server socket err = No such file or directory Cannot connect to server socket jack server is not running or cannot be started r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], COLOR, COLOR 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=2************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], COLOR, COLOR DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TXP TEMP[0], IN[1].xyyw, SAMP[0], RECT 1: MUL TEMP[0].xyz, TEMP[0], IN[0] 2: MOV TEMP[0].xyz, TEMP[0].xyzx 3: MOV TEMP[0].w, IN[0].wwww 4: MOV OUT[0], TEMP[0] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0].xyz, temp[0], input[0]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, input[0].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0].xyz, temp[0], input[0]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, input[0].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0].xyz, temp[0], input[0]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, input[0].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0].xyz, temp[0], input[0]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, input[0].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0].xyz, temp[0], input[0]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, input[0].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[1].xyyw, const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL temp[0].xyz, temp[0], input[0]; 3: MOV temp[0].xyz, temp[0].xyzx; 4: MOV temp[0].w, input[0].wwww; 5: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[1].xyyw, const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL temp[0].xyz, temp[0], input[0]; 3: MOV temp[0].xyz, temp[0].xyzx; 4: MOV temp[0].w, input[0].wwww; 5: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 3: MOV temp[0].xyz, temp[0].xyz_; 4: MOV temp[0].w, input[0].___w; 5: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[0].xyz, temp[1].xy_w, 2D[0]; 2: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 3: MOV temp[0].xyz, temp[0].xyz_; 4: MOV temp[0].w, input[0].___w; 5: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3].xyz, temp[2].xy_w, 2D[0]; 2: MUL temp[4].xyz, temp[3].xyz_, input[0].xyz_; 3: MOV temp[5].xyz, temp[4].xyz_; 4: MOV temp[5].w, input[0].___w; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3].xyz, temp[2].xy_w, 2D[0]; 2: MUL temp[4].xyz, temp[3].xyz_, input[0].xyz_; 3: MOV temp[5].xyz, temp[4].xyz_; 4: MOV temp[5].w, input[0].___w; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3].xyz, temp[2].xy_w, 2D[0]; 2: MUL temp[4].xyz, temp[3].xyz_, input[0].xyz_; 3: MOV temp[5].xyz, temp[4].xyz_; 4: MOV temp[5].w, input[0].___w; 5: MOV output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3].xyz, temp[2].xy_w, 2D[0]; 2: MUL temp[4].xyz, temp[3].xyz_, input[0].xyz_; 3: MOV temp[5].xyz, temp[4].xyz_; 4: MOV temp[5].w, input[0].___w; 5: MOV output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: TXP temp[3].xyz, temp[2].xy_w, 2D[0]; 2: src0.xyz = temp[3], src1.xyz = input[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 3: src0.xyz = temp[4] MAD temp[5].xyz, src0.xyz, src0.111, src0.000 4: src0.w = input[0] MAD temp[5].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[5], src0.w = temp[5] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[3].xyz, temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = input[0], src1.xyz = input[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[4] MAD temp[5].xyz, src0.xyz, src0.111, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[3].xyz, temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = input[0], src1.xyz = input[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[4] MAD temp[5].xyz, src0.xyz, src0.111, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ MAD temp[1].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1].xyz, temp[1].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[1], src0.w = input[0], src1.xyz = input[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 5: 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 ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t1 c0 t0 bias-> t1.xy (01840801) w: t1 c0 t0 bias-> t1.w (00840801) xyz: t1.xyz c0.xyz 0.0 op: 00050200 w: t1.w c0.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 2, tex_end: 0 (code_addr: 00400081) TEX: TXP t1, t1, texture[0] (00018041) 1: xyz: t1 t0 t0 bias-> t0.xyz (03800001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t0.xyz 0.0 op: 00050200 w: t0.w 1.0 0.0 op: 00040889 2: 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 3: 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], COLOR, COLOR DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TXP TEMP[0], IN[1].xyyw, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[0] 2: MOV OUT[0], TEMP[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: 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], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0], input[1].xy_w, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TXP temp[0], input[1].xy_w, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[1], input[1].xy_w, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MOV output[0], temp[2]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[1], input[1].xy_w, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MOV output[0], temp[2]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[1], input[1].xy_w, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MOV output[0], temp[2]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[1], input[1].xy_w, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MOV output[0], temp[2]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[1], input[1].xy_w, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] 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: TXP temp[1], input[1].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] 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: TXP temp[1], input[1].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] 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: TXP temp[1], input[1].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[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=4************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400040) TEX: TXP t1, t1, texture[0] (00018041) 0: xyz: t1 t0 t0 bias-> t0.xyz (03800001) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.xyz t0.xyz 0.0 op: 00050200 w: t1.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], COLOR, PERSPECTIVE DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after '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=5************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL OUT[0], COLOR IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.111, 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.111, 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.111, 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.111, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=6************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 1.0 1.0 0.0 op: 00050a95 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 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 = temp[1], src0.w = temp[1] 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[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1] 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=7************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL OUT[0], COLOR IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.111, 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.111, 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.111, 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.111, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=8************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 1.0 1.0 0.0 op: 00050a95 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], COLOR, COLOR 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=9************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: TEX TEMP[0], IN[0].xyyy, SAMP[2], 2D 1: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[1], 2D 2: ADD TEMP[2].xyz, TEMP[1].xyzz, IMM[0].xxxx 3: MUL TEMP[3].xyz, TEMP[2].xxxx, IN[3].xyzz 4: MAD TEMP[3].xyz, TEMP[2].yyyy, IN[2].xyzz, TEMP[3].xyzz 5: MAD TEMP[3].xyz, TEMP[2].zzzz, IN[4].xyzz, TEMP[3].xyzz 6: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 7: RSQ TEMP[4].x, TEMP[4].xxxx 8: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 9: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].yyyy, IMM[0].yyyy 10: MUL TEMP[3].x, IN[1].xxxx, IMM[0].zzzz 11: FLR TEMP[4].x, TEMP[3].xxxx 12: MOV TEMP[5].x, TEMP[4].xxxx 13: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 14: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].zzzz 15: FLR TEMP[4].x, TEMP[3].xxxx 16: MOV TEMP[5].y, TEMP[4].xxxx 17: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 18: MOV TEMP[5].z, TEMP[3].xxxx 19: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].wwww 20: MOV TEMP[2].xyz, TEMP[5].xyzx 21: TEX TEMP[3].xy, IN[0].xyyy, SAMP[0], 2D 22: MOV TEMP[1].w, TEMP[3].xxxx 23: MOV TEMP[2].w, TEMP[3].yyyy 24: MOV OUT[0], TEMP[0] 25: MOV OUT[1], TEMP[1] 26: MOV OUT[2], TEMP[2] 27: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, temp[4].xxxx; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FLR temp[4].x, temp[3].xxxx; 13: MOV temp[5].x, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 16: FLR temp[4].x, temp[3].xxxx; 17: MOV temp[5].y, temp[4].xxxx; 18: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 19: MOV temp[5].z, temp[3].xxxx; 20: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 21: MOV temp[2].xyz, temp[5].xyzx; 22: TEX temp[7], input[0].xyyy, 2D[0]; 23: MOV temp[3].xy, temp[7]; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[2].w, temp[3].yyyy; 26: MOV output[0], temp[0]; 27: MOV output[1], temp[1]; 28: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, |temp[4].xxxx|; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FRC temp[4].x, temp[3].xxxx; 13: ADD temp[4].x, temp[3].xxxx, -temp[4]; 14: MOV temp[5].x, temp[4].xxxx; 15: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 16: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 17: FRC temp[4].x, temp[3].xxxx; 18: ADD temp[4].x, temp[3].xxxx, -temp[4]; 19: MOV temp[5].y, temp[4].xxxx; 20: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 21: MOV temp[5].z, temp[3].xxxx; 22: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 23: MOV temp[2].xyz, temp[5].xyzx; 24: TEX temp[7], input[0].xyyy, 2D[0]; 25: MOV temp[3].xy, temp[7]; 26: MOV temp[1].w, temp[3].xxxx; 27: MOV temp[2].w, temp[3].yyyy; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: MOV temp[10].xyz, temp[9].xyz_; 3: ADD temp[11].xyz, temp[10].xyz_, const[0].xxx_; 4: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 5: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 6: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 7: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 8: RSQ temp[16].x, |temp[15].x___|; 9: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 10: MAD temp[18].xyz, temp[17].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[19].x, input[1].x___, const[0].z___; 12: FRC temp[20].x, temp[19].x___; 13: ADD temp[21].x, temp[19].x___, -temp[20].x___; 14: MOV temp[22].x, temp[21].x___; 15: ADD temp[23].x, temp[19].x___, -temp[21].x___; 16: MUL temp[24].x, temp[23].x___, const[0].z___; 17: FRC temp[25].x, temp[24].x___; 18: ADD temp[26].x, temp[24].x___, -temp[25].x___; 19: MOV temp[22].y, temp[26]._x__; 20: ADD temp[27].x, temp[24].x___, -temp[26].x___; 21: MOV temp[28].z, temp[27].__x_; 22: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 23: MOV temp[29].xyz, temp[28].xyz_; 24: TEX temp[30].xy, input[0].xy__, 2D[0]; 25: MOV temp[31].xy, temp[30].xy__; 26: MOV temp[18].w, temp[31].___x; 27: MOV temp[29].w, temp[31].___y; 28: MOV output[0], temp[8]; 29: MOV output[1], temp[18]; 30: MOV output[2], temp[29]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: src0.xyz = temp[9] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH 3: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 4: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 5: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 6: src0.xyz = temp[14] DP3 temp[15].x, src0.xyz, src0.xyz 7: src0.xyz = temp[15] REPL_ALPHA temp[16].x RSQ, |src0.x| 8: src0.xyz = temp[14], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src1.xxx, src0.000 9: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 10: src0.xyz = input[1], src1.xyz = const[0] MAD temp[19].x, src0.x__, src1.z__, src0.000 11: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 12: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 13: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].x, src1.x__, src0.111, -srcp.x__ 14: src0.xyz = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.x__, src1.z__, src0.000 15: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 16: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 17: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[27].x, src1.x__, src0.111, -srcp.x__ 18: src0.xyz = temp[27] MAD temp[28].z, src0.__x, src0.111, src0.000 19: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: src0.xyz = temp[30] MAD temp[18].w, src0.x, src0.1, src0.0 23: src0.xyz = temp[30] MAD temp[29].w, src0.y, src0.1, src0.0 24: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 25: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 26: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[23], src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.xyz = temp[27], src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[0].xy__, 2D[2]; 2: TEX temp[6].xyz, input[0].xy__, 2D[1]; 3: TEX temp[0].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[0] SEM_WAIT MAD temp[1].x, src0.x__, src1.z__, src0.0__ MAD temp[1].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[0].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[1] FRC temp[6].x, src0.x__ 7: src0.xyz = temp[0], src1.xyz = input[3] MAD temp[3].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 9: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[2].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[0], src1.xyz = input[2], src2.xyz = temp[3] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[2], src1.xyz = const[0] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 12: src0.xyz = temp[0], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[0].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[2] FRC temp[1].x, src0.x__ 14: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[0], srcp.xyz = (src1 - src0) DP3 temp[1].y, src2.xyz, src2.xyz MAD temp[2].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ RSQ temp[3].w, |src2.y| 16: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[0], src0.w = temp[3] MAD temp[0].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[7], src0.w = const[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[5], src0.w = temp[5] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[0], src0.w = temp[1] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[1], src0.w = temp[0] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=10************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 19, tex_end: 2 (code_addr: 004404c0) TEX: TEX t5, t0, texture[2] (00009140) TEX t6, t0, texture[1] (00008980) TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.zzz 0.0 op: 00050380 w: t0.x 1.0 0.0 op: 00040886 1: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t0.y 1.0 0.0 op: 00040884 2: xyz: t1 t0 t0 bias-> t6.x (00980001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xxx t1.xxx op: 04804080 w: t1.x t1.x t1.x op: 00000000 3: xyz: t0 t3 t0 bias-> t3.xyz (038c00c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t3.xyz 0.0 op: 00050201 w: t0.x t0.x t0.x op: 00000000 4: xyz: t6 t1 t0 sub-> t7.x (009c0046) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 5: xyz: t6 t1 t0 sub-> (00000046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 t2 t3 bias-> t1.xyz (03843080) w: t0 t0 t0 bias-> (00000000) xyz: t0.yyy t2.xyz t3.xyz op: 00020202 w: t0.x t0.x t0.x op: 00000000 7: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t2 t0 t0 bias-> (00000002) xyz: t2.www c0.zzz 0.0 op: 0005038c w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 t4 t1 bias-> t0.xyz (03801100) w: t0 t0 t0 bias-> (00000000) xyz: t0.zzz t4.xyz t1.xyz op: 00020203 w: t0.x t0.x t0.x op: 00000000 9: xyz: t2 t0 t0 bias-> t1.x (00840002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 10: xyz: t1 t2 t0 sub-> t1.y (01040081) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz t0.xyz t1.xxx op: 00a04408 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t1 t2 t1 sub-> t7.y (011c1081) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: |t1.y| t1.x t1.x op: 05800047 12: xyz: t0 t0 t0 bias-> t1.z (02040000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 13: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t3 t0 t0 bias-> (00000003) xyz: t0.xyz t3.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 14: xyz: t7 t0 t0 bias-> t1.xy (01840007) w: c0 t0 t0 bias-> (00000020) xyz: t7.xyz c0.www 0.0 op: 00050600 w: t7.x t7.x t7.x op: 00000000 15: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.5 0.5 op: 00058b00 w: t0.x t0.x t0.x op: 00000000 16: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 17: xyz: t5 t0 t0 bias-> o0.xyz (1c000005) w: t5 t0 t0 bias-> o0.w (01000005) xyz: t5.xyz 1.0 0.0 op: 00050a80 w: t5.w 1.0 0.0 op: 00040889 18: xyz: t0 t0 t0 bias-> o1.xyz (3c000000) w: t1 t0 t0 bias-> o1.w (03000001) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 19: xyz: t1 t0 t0 bias-> o2.xyz (5c000001) w: t0 t0 t0 bias-> o2.w (05000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL IN[5], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL DCL TEMP[6], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: DP3 TEMP[0].x, IN[1].xyzz, IN[1].xyzz 1: RSQ TEMP[0].x, TEMP[0].xxxx 2: MUL TEMP[0].xyz, IN[1].xyzz, TEMP[0].xxxx 3: TEX TEMP[1].w, IN[0].xyyy, SAMP[0], 2D 4: MUL TEMP[1].x, TEMP[1].wwww, CONST[0].xxxx 5: MAD TEMP[0].xy, TEMP[0].xyzz, TEMP[1].xxxx, IN[0].xyzz 6: TEX TEMP[1], TEMP[0].xyyy, SAMP[3], 2D 7: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[2], 2D 8: ADD TEMP[3].xyz, TEMP[2].xyzz, IMM[0].xxxx 9: MUL TEMP[4].xyz, TEMP[3].xxxx, IN[4].xyzz 10: MAD TEMP[4].xyz, TEMP[3].yyyy, IN[3].xyzz, TEMP[4].xyzz 11: MAD TEMP[4].xyz, TEMP[3].zzzz, IN[5].xyzz, TEMP[4].xyzz 12: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 13: RSQ TEMP[5].x, TEMP[5].xxxx 14: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 15: MAD TEMP[2].xyz, TEMP[4].xyzz, IMM[0].yyyy, IMM[0].yyyy 16: MUL TEMP[4].x, IN[2].xxxx, IMM[0].zzzz 17: FLR TEMP[5].x, TEMP[4].xxxx 18: MOV TEMP[6].x, TEMP[5].xxxx 19: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 20: MUL TEMP[4].x, TEMP[4].xxxx, IMM[0].zzzz 21: FLR TEMP[5].x, TEMP[4].xxxx 22: MOV TEMP[6].y, TEMP[5].xxxx 23: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 24: MOV TEMP[6].z, TEMP[4].xxxx 25: MUL TEMP[6].xy, TEMP[6].xyyy, IMM[0].wwww 26: MOV TEMP[3].xyz, TEMP[6].xyzx 27: TEX TEMP[0].xy, TEMP[0].xyyy, SAMP[1], 2D 28: MOV TEMP[2].w, TEMP[0].xxxx 29: MOV TEMP[3].w, TEMP[0].yyyy 30: MOV OUT[0], TEMP[1] 31: MOV OUT[1], TEMP[2] 32: MOV OUT[2], TEMP[3] 33: END Fragment Program: before compilation # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FLR temp[5].x, temp[4].xxxx; 20: MOV temp[6].x, temp[5].xxxx; 21: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 22: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 23: FLR temp[5].x, temp[4].xxxx; 24: MOV temp[6].y, temp[5].xxxx; 25: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 26: MOV temp[6].z, temp[4].xxxx; 27: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 28: MOV temp[3].xyz, temp[6].xyzx; 29: TEX temp[9], temp[0].xyyy, 2D[1]; 30: MOV temp[0].xy, temp[9]; 31: MOV temp[2].w, temp[0].xxxx; 32: MOV temp[3].w, temp[0].yyyy; 33: MOV output[0], temp[1]; 34: MOV output[1], temp[2]; 35: MOV output[2], temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, |temp[0].xxxx|; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, |temp[5].xxxx|; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FRC temp[5].x, temp[4].xxxx; 20: ADD temp[5].x, temp[4].xxxx, -temp[5]; 21: MOV temp[6].x, temp[5].xxxx; 22: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 23: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 24: FRC temp[5].x, temp[4].xxxx; 25: ADD temp[5].x, temp[4].xxxx, -temp[5]; 26: MOV temp[6].y, temp[5].xxxx; 27: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 28: MOV temp[6].z, temp[4].xxxx; 29: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 30: MOV temp[3].xyz, temp[6].xyzx; 31: TEX temp[9], temp[0].xyyy, 2D[1]; 32: MOV temp[0].xy, temp[9]; 33: MOV temp[2].w, temp[0].xxxx; 34: MOV temp[3].w, temp[0].yyyy; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MOV temp[14].w, temp[13].___w; 5: MUL temp[15].x, temp[14].w___, const[0].x___; 6: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 7: TEX temp[17], temp[16].xy__, 2D[3]; 8: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 9: MOV temp[19].xyz, temp[18].xyz_; 10: ADD temp[20].xyz, temp[19].xyz_, const[1].xxx_; 11: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 12: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 13: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 14: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 15: RSQ temp[25].x, |temp[24].x___|; 16: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 17: MAD temp[27].xyz, temp[26].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[28].x, input[2].x___, const[1].z___; 19: FRC temp[29].x, temp[28].x___; 20: ADD temp[30].x, temp[28].x___, -temp[29].x___; 21: MOV temp[31].x, temp[30].x___; 22: ADD temp[32].x, temp[28].x___, -temp[30].x___; 23: MUL temp[33].x, temp[32].x___, const[1].z___; 24: FRC temp[34].x, temp[33].x___; 25: ADD temp[35].x, temp[33].x___, -temp[34].x___; 26: MOV temp[31].y, temp[35]._x__; 27: ADD temp[36].x, temp[33].x___, -temp[35].x___; 28: MOV temp[37].z, temp[36].__x_; 29: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 30: MOV temp[38].xyz, temp[37].xyz_; 31: TEX temp[39].xy, temp[16].xy__, 2D[1]; 32: MOV temp[40].xy, temp[39].xy__; 33: MOV temp[27].w, temp[40].___x; 34: MOV temp[38].w, temp[40].___y; 35: MOV output[0], temp[17]; 36: MOV output[1], temp[27]; 37: MOV output[2], temp[38]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 1: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 2: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: src0.xyz = const[0], src0.w = temp[13] MAD temp[15].x, src0.w__, src0.x__, src0.000 5: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: src0.xyz = temp[18] MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH 9: src0.xyz = temp[20], src1.xyz = input[4] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 10: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 12: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 13: src0.xyz = temp[24] REPL_ALPHA temp[25].x RSQ, |src0.x| 14: src0.xyz = temp[23], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src1.xxx, src0.000 15: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 16: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 17: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 18: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 19: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].x, src1.x__, src0.111, -srcp.x__ 20: src0.xyz = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.x__, src1.z__, src0.000 21: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 22: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 23: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[36].x, src1.x__, src0.111, -srcp.x__ 24: src0.xyz = temp[36] MAD temp[37].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[31], src0.w = const[1] MAD temp[37].xy, src0.xy_, src0.ww_, src0.000 26: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: src0.xyz = temp[39] MAD temp[27].w, src0.x, src0.1, src0.0 29: src0.xyz = temp[39] MAD temp[38].w, src0.y, src0.1, src0.0 30: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 32: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.xyz = temp[32], src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.xyz = temp[36], src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[2].x, src0.x__, src1.z__, src0.0__ 1: src0.xyz = input[1] DP3 temp[0].z, src0.xyz, src0.xyz 2: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 3: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 4: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[0].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[0] REPL_ALPHA temp[0].z RSQ, |src0.z| 6: src0.w = temp[0], src1.xyz = const[1] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 7: src0.xyz = input[1], src1.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.zz_, src0.00_ 8: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 9: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ 10: src0.xyz = temp[6], src0.w = const[1], src1.xyz = temp[2], src2.xyz = temp[7], srcp.xyz = (src1 - src0) MAD temp[2].xy, src2.xy_, src0.ww_, src0.000 MAD temp[0].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[0] MAD temp[2].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[6].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[6] SEM_WAIT MAD temp[0].z, src0.__w, src0.__x, src0.__0 16: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[0].xy, src0.xy_, src1.zz_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[1].xy, temp[0].xy__, 2D[1]; 19: TEX temp[6].xyz, temp[0].xy__, 2D[2]; 20: TEX temp[0], temp[0].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[6], src1.xyz = temp[1] SEM_WAIT MAD temp[6].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[2].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[6], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[6], src1.xyz = input[3], src2.xyz = temp[1] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[6], src1.xyz = input[5], src2.xyz = temp[1] MAD temp[1].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[1] DP3 temp[3].x, src0.xyz, src0.xyz 26: src0.xyz = temp[3] RSQ temp[3].w, |src0.x| 27: src0.xyz = temp[1], src0.w = temp[3] MAD temp[1].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.HHH, src0.HHH 29: 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 30: src0.xyz = temp[2], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[1], src0.w = temp[2] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 pc=11************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 12, tex_end: 0 (code_addr: 00000300) 0: xyz: t2 c1 t0 bias-> t2.x (00880842) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c1.zzz 0.0 op: 00050380 w: t2.x t2.x t2.x op: 00000000 1: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 2: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 3: xyz: t6 t2 t0 sub-> t7.x (009c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 4: xyz: t6 t2 t0 sub-> (00000086) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t2.x 1.0 -srcp.x op: 000b0883 5: xyz: t0 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: |t0.z| t0.x t0.x op: 05800042 6: xyz: t32 c1 t0 bias-> t2.x (00880840) w: t0 t0 t0 bias-> (00000000) xyz: t0.www c1.zzz 0.0 op: 0005038c w: t32.x t32.x t32.x op: 00000000 7: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz 0.0 op: 00050380 w: t1.x t1.x t1.x op: 00000000 8: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 9: xyz: t6 t2 t0 sub-> t7.y (011c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t6.x t6.x t6.x op: 00000000 10: xyz: t6 t2 t7 sub-> t2.xy (01887086) w: c1 t0 t0 bias-> t0.w (00800021) xyz: t7.xyz c1.www 0.0 op: 00250608 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t32 t0 t0 bias-> t2.z (02080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 1.0 0.0 op: 00050a8c w: t32.x t32.x t32.x op: 00000000 12: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 13, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 0000004d) TEX: TEX t6, t0, texture[0] (00008180) 13: xyz: c0 t0 t0 bias-> t0.z (02000020) w: t6 t0 t0 bias-> (00000006) xyz: t6.www c0.xxx 0.0 op: 0005008c w: c0.x c0.x c0.x op: 00000000 14: xyz: t1 t0 t0 bias-> t0.xy (01800001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz t0.xyz op: 00020380 w: t1.x t1.x t1.x op: 00000000 NODE 2: alu_offset: 15, tex_offset: 1, alu_end: 10, tex_end: 2 (code_addr: 0044128f) TEX: TEX t1, t0, texture[1] (00008840) TEX t6, t0, texture[2] (00009180) TEX t0, t0, texture[3] (00009800) 15: xyz: t6 t1 t0 bias-> t6.xyz (03980046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t1.x 1.0 0.0 op: 00040883 16: xyz: t6 t4 t1 bias-> t1.xyz (03841106) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t6.xxx t4.xyz 0.0 op: 00050201 w: t1.y 1.0 0.0 op: 00040887 17: xyz: t6 t3 t1 bias-> t1.xyz (038410c6) w: t0 t0 t0 bias-> (00000000) xyz: t6.yyy t3.xyz t1.xyz op: 00020202 w: t6.x t6.x t6.x op: 00000000 18: xyz: t6 t5 t1 bias-> t1.xyz (03841146) w: t0 t0 t0 bias-> (00000000) xyz: t6.zzz t5.xyz t1.xyz op: 00020203 w: t6.x t6.x t6.x op: 00000000 19: xyz: t1 t0 t0 bias-> t3.x (008c0001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 20: xyz: t3 t0 t0 bias-> (00000003) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xxx t3.xxx t3.xxx op: 00004081 w: |t3.x| t3.x t3.x op: 05800040 21: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t3 t0 t0 bias-> (00000003) xyz: t1.xyz t3.www 0.0 op: 00050600 w: t1.x t1.x t1.x op: 00000000 22: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 0.5 0.5 op: 00058b00 w: t1.x t1.x t1.x op: 00000000 23: 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 24: xyz: t2 t0 t0 bias-> o2.xyz (5c000002) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 25: xyz: t1 t0 t0 bias-> o1.xyz (3c000001) w: t2 t0 t0 bias-> o1.w (03000002) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 0.5000, 255.0000, 0.0039, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D 1: DP3 TEMP[1].x, IN[2].xyzz, IN[2].xyzz 2: RSQ TEMP[2].x, TEMP[1].xxxx 3: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[2].xxxx 4: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].xxxx, IMM[0].xxxx 5: MUL TEMP[3].x, IN[1].xxxx, IMM[0].yyyy 6: FLR TEMP[4].x, TEMP[3].xxxx 7: MOV TEMP[5].x, TEMP[4].xxxx 8: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 9: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 10: FLR TEMP[4].x, TEMP[3].xxxx 11: MOV TEMP[5].y, TEMP[4].xxxx 12: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 13: MOV TEMP[5].z, TEMP[3].xxxx 14: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].zzzz 15: MOV TEMP[2].xyz, TEMP[5].xyzx 16: TEX TEMP[3].xy, IN[0].xyyy, SAMP[0], 2D 17: MOV TEMP[1].w, TEMP[3].xxxx 18: MOV TEMP[2].w, TEMP[3].yyyy 19: MOV OUT[0], TEMP[0] 20: MOV OUT[1], TEMP[1] 21: MOV OUT[2], TEMP[2] 22: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[6], input[0].xyyy, 2D[0]; 17: MOV temp[3].xy, temp[6]; 18: MOV temp[1].w, temp[3].xxxx; 19: MOV temp[2].w, temp[3].yyyy; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, |temp[1].xxxx|; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FRC temp[4].x, temp[3].xxxx; 7: ADD temp[4].x, temp[3].xxxx, -temp[4]; 8: MOV temp[5].x, temp[4].xxxx; 9: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 10: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 11: FRC temp[4].x, temp[3].xxxx; 12: ADD temp[4].x, temp[3].xxxx, -temp[4]; 13: MOV temp[5].y, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MOV temp[5].z, temp[3].xxxx; 16: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 17: MOV temp[2].xyz, temp[5].xyzx; 18: TEX temp[6], input[0].xyyy, 2D[0]; 19: MOV temp[3].xy, temp[6]; 20: MOV temp[1].w, temp[3].xxxx; 21: MOV temp[2].w, temp[3].yyyy; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: TEX temp[6].xy, input[0].xy__, 2D[0]; 19: MOV temp[3].xy, temp[6].xy__; 20: MOV temp[1].w, temp[3].___x; 21: MOV temp[2].w, temp[3].___y; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: TEX temp[6].xy, input[0].xy__, 2D[0]; 19: MOV temp[3].xy, temp[6].xy__; 20: MOV temp[1].w, temp[3].___x; 21: MOV temp[2].w, temp[3].___y; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: ADD temp[14].x, temp[12].x___, -temp[13].x___; 8: MOV temp[15].x, temp[14].x___; 9: ADD temp[16].x, temp[12].x___, -temp[14].x___; 10: MUL temp[17].x, temp[16].x___, const[0].y___; 11: FRC temp[18].x, temp[17].x___; 12: ADD temp[19].x, temp[17].x___, -temp[18].x___; 13: MOV temp[15].y, temp[19]._x__; 14: ADD temp[20].x, temp[17].x___, -temp[19].x___; 15: MOV temp[21].z, temp[20].__x_; 16: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 17: MOV temp[22].xyz, temp[21].xyz_; 18: TEX temp[23].xy, input[0].xy__, 2D[0]; 19: MOV temp[24].xy, temp[23].xy__; 20: MOV temp[11].w, temp[24].___x; 21: MOV temp[22].w, temp[24].___y; 22: MOV output[0], temp[7]; 23: MOV output[1], temp[11]; 24: MOV output[2], temp[22]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: src0.xyz = input[2] DP3 temp[8].x, src0.xyz, src0.xyz 2: src0.xyz = temp[8] REPL_ALPHA temp[9].x RSQ, |src0.x| 3: src0.xyz = input[2], src1.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src1.xxx, src0.000 4: src0.xyz = temp[10] MAD temp[11].xyz, src0.xyz, src0.HHH, src0.HHH 5: src0.xyz = input[1], src1.xyz = const[0] MAD temp[12].x, src0.x__, src1.y__, src0.000 6: src0.xyz = temp[12] FRC temp[13].x, src0.x__ 7: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[16].x, src1.x__, src0.111, -srcp.x__ 9: src0.xyz = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.x__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].x, src1.x__, src0.111, -srcp.x__ 13: src0.xyz = temp[20] MAD temp[21].z, src0.__x, src0.111, src0.000 14: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: src0.xyz = temp[23] MAD temp[11].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[23] MAD temp[22].w, src0.y, src0.1, src0.0 19: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 20: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 21: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[23].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[23] SEM_WAIT MAD temp[12].x, src0.x__, src1.y__, src0.000 MAD temp[22].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[23] DP3 temp[8].x, src0.xyz, src0.xyz MAD temp[11].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[12], src1.xyz = temp[8] FRC temp[13].x, src0.x__ RSQ temp[9].w, |src1.x| 6: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 7: src0.xyz = input[2], src0.w = temp[9], src1.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], src2.xyz = temp[10], srcp.xyz = (src1 - src0) MAD temp[11].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[16].w, src1.x, src0.1, -srcp.x 9: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.w__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 14: src0.xyz = temp[20], src0.w = temp[20] MAD temp[21].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[23].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[23] SEM_WAIT MAD temp[12].x, src0.x__, src1.y__, src0.000 MAD temp[22].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[23] DP3 temp[8].x, src0.xyz, src0.xyz MAD temp[11].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[12], src1.xyz = temp[8] FRC temp[13].x, src0.x__ RSQ temp[9].w, |src1.x| 6: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 7: src0.xyz = input[2], src0.w = temp[9] MAD temp[10].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], src2.xyz = temp[10], srcp.xyz = (src1 - src0) MAD temp[11].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[16].w, src1.x, src0.1, -srcp.x 9: src0.w = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.w__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 14: src0.w = temp[20] MAD temp[21].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[0].xy__, 2D[1]; 2: TEX temp[0].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[0] SEM_WAIT MAD temp[1].x, src0.x__, src1.y__, src0.0__ MAD temp[1].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[0] DP3 temp[0].x, src0.xyz, src0.xyz MAD temp[0].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[1], src1.xyz = temp[0] FRC temp[0].x, src0.x__ RSQ temp[2].w, |src1.x| 6: src0.xyz = temp[0], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].x, srcp.x__, src0.11_, src0.00_ 7: src0.xyz = input[2], src0.w = temp[2] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[0].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[2].w, src1.x, src0.1, -srcp.x 9: src0.w = temp[2], src1.xyz = const[0] MAD temp[1].x, src0.w__, src1.y__, src0.0__ 10: src0.xyz = temp[1] FRC temp[2].x, src0.x__ 11: src0.xyz = temp[2], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].y, srcp._x_, src0.11_, src0.00_ 12: src0.xyz = temp[2], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[2].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[1].xy, src0.xy_, src1.zz_, src0.000 14: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[3], src0.w = temp[3] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[0], src0.w = temp[0] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[1], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=12************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 15, tex_end: 1 (code_addr: 004203c0) TEX: TEX t3, t0, texture[1] (000088c0) TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.yyy 0.0 op: 00050300 w: t0.y 1.0 0.0 op: 00040887 1: xyz: t2 t0 t0 bias-> t0.x (00800002) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t2.xyz t2.xyz t2.xxx op: 00804000 w: t0.x 1.0 0.0 op: 00040883 2: xyz: t1 t0 t0 bias-> t0.x (00800001) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: |t0.x| t1.x t1.x op: 05800043 3: xyz: t0 t1 t0 sub-> t4.x (00900040) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t0.x t0.x t0.x op: 00000000 4: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t2 t0 t0 bias-> (00000002) xyz: t2.xyz t2.www 0.0 op: 00050600 w: t2.x t2.x t2.x op: 00000000 5: xyz: t0 t1 t2 sub-> t0.xyz (03802040) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xyz 0.5 0.5 op: 00258b08 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 c0 t0 bias-> t1.x (00840800) w: t2 t0 t0 bias-> (00000002) xyz: t2.www c0.yyy 0.0 op: 0005030c w: t0.x t0.x t0.x op: 00000000 7: xyz: t1 t0 t0 bias-> t2.x (00880001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: t1.x t1.x t1.x op: 00000000 8: xyz: t2 t1 t0 sub-> t4.y (01100042) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t2.x t2.x t2.x op: 00000000 9: xyz: t2 t1 t0 sub-> (00000042) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xxx t2.xxx t2.xxx op: 00204081 w: t1.x 1.0 -srcp.x op: 000b0883 10: xyz: t4 c0 t0 bias-> t1.xy (01840804) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c0.zzz 0.0 op: 00050380 w: t4.x t4.x t4.x op: 00000000 11: xyz: t0 t0 t0 bias-> t1.z (02040000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 12: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 13: xyz: t3 t0 t0 bias-> o0.xyz (1c000003) w: t3 t0 t0 bias-> o0.w (01000003) xyz: t3.xyz 1.0 0.0 op: 00050a80 w: t3.w 1.0 0.0 op: 00040889 14: xyz: t0 t0 t0 bias-> o1.xyz (3c000000) w: t0 t0 t0 bias-> o1.w (03000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 15: xyz: t1 t0 t0 bias-> o2.xyz (5c000001) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 0.5000, 255.0000, 0.0039, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: DP3 TEMP[1].x, IN[2].xyzz, IN[2].xyzz 2: RSQ TEMP[2].x, TEMP[1].xxxx 3: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[2].xxxx 4: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].xxxx, IMM[0].xxxx 5: MUL TEMP[3].x, IN[1].xxxx, IMM[0].yyyy 6: FLR TEMP[4].x, TEMP[3].xxxx 7: MOV TEMP[5].x, TEMP[4].xxxx 8: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 9: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 10: FLR TEMP[4].x, TEMP[3].xxxx 11: MOV TEMP[5].y, TEMP[4].xxxx 12: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 13: MOV TEMP[5].z, TEMP[3].xxxx 14: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].zzzz 15: MOV TEMP[2].xyz, TEMP[5].xyzx 16: MOV TEMP[1].w, IMM[0].wwww 17: MOV TEMP[2].w, IMM[0].wwww 18: MOV OUT[0], TEMP[0] 19: MOV OUT[1], TEMP[1] 20: MOV OUT[2], TEMP[2] 21: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, |temp[1].xxxx|; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FRC temp[4].x, temp[3].xxxx; 7: ADD temp[4].x, temp[3].xxxx, -temp[4]; 8: MOV temp[5].x, temp[4].xxxx; 9: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 10: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 11: FRC temp[4].x, temp[3].xxxx; 12: ADD temp[4].x, temp[3].xxxx, -temp[4]; 13: MOV temp[5].y, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MOV temp[5].z, temp[3].xxxx; 16: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 17: MOV temp[2].xyz, temp[5].xyzx; 18: MOV temp[1].w, const[0].wwww; 19: MOV temp[2].w, const[0].wwww; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: MOV temp[1].w, const[0].___w; 19: MOV temp[2].w, const[0].___w; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: MOV temp[1].w, const[0].___w; 19: MOV temp[2].w, const[0].___w; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: ADD temp[13].x, temp[11].x___, -temp[12].x___; 8: MOV temp[14].x, temp[13].x___; 9: ADD temp[15].x, temp[11].x___, -temp[13].x___; 10: MUL temp[16].x, temp[15].x___, const[0].y___; 11: FRC temp[17].x, temp[16].x___; 12: ADD temp[18].x, temp[16].x___, -temp[17].x___; 13: MOV temp[14].y, temp[18]._x__; 14: ADD temp[19].x, temp[16].x___, -temp[18].x___; 15: MOV temp[20].z, temp[19].__x_; 16: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 17: MOV temp[21].xyz, temp[20].xyz_; 18: MOV temp[10].w, const[0].___w; 19: MOV temp[21].w, const[0].___w; 20: MOV output[0], temp[6]; 21: MOV output[1], temp[10]; 22: MOV output[2], temp[21]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz 2: src0.xyz = temp[7] REPL_ALPHA temp[8].x RSQ, |src0.x| 3: src0.xyz = input[2], src1.xyz = temp[8] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 4: src0.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src0.HHH, src0.HHH 5: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 6: src0.xyz = temp[11] FRC temp[12].x, src0.x__ 7: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 8: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[15].x, src1.x__, src0.111, -srcp.x__ 9: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.x__, src1.y__, src0.000 10: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].x, src1.x__, src0.111, -srcp.x__ 13: src0.xyz = temp[19] MAD temp[20].z, src0.__x, src0.111, src0.000 14: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 15: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 16: MAD temp[10].w, src0.0, src0.1, src0.0 17: MAD temp[21].w, src0.0, src0.1, src0.0 18: src0.xyz = temp[6], src0.w = temp[6] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 19: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 20: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 MAD temp[21].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz MAD temp[10].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[11], src1.xyz = temp[7] FRC temp[12].x, src0.x__ RSQ temp[8].w, |src1.x| 5: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 6: src0.xyz = input[2], src0.w = temp[8], src1.xyz = temp[8] MAD temp[9].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[12], src1.xyz = temp[11], src2.xyz = temp[9], srcp.xyz = (src1 - src0) MAD temp[10].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[15].w, src1.x, src0.1, -srcp.x 8: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.w__, src1.y__, src0.000 9: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 10: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 13: src0.xyz = temp[19], src0.w = temp[19] MAD temp[20].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 15: src0.xyz = temp[6], src0.w = temp[6] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 MAD temp[21].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz MAD temp[10].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[11], src1.xyz = temp[7] FRC temp[12].x, src0.x__ RSQ temp[8].w, |src1.x| 5: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 6: src0.xyz = input[2], src0.w = temp[8] MAD temp[9].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[12], src1.xyz = temp[11], src2.xyz = temp[9], srcp.xyz = (src1 - src0) MAD temp[10].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[15].w, src1.x, src0.1, -srcp.x 8: src0.w = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.w__, src1.y__, src0.000 9: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 10: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 13: src0.w = temp[19] MAD temp[20].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 15: src0.xyz = temp[6], src0.w = temp[6] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].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 = input[1], src1.xyz = const[0] MAD temp[1].x, src0.x__, src1.y__, src0.0__ MAD temp[1].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[1].y, src0.xyz, src0.xyz MAD temp[2].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[1], src1.xyz = temp[1] FRC temp[3].x, src0.x__ RSQ temp[3].w, |src1.y| 5: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].x, srcp.x__, src0.11_, src0.00_ 6: src0.xyz = input[2], src0.w = temp[3] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[3], src1.xyz = temp[1], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[1].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[3].w, src1.x, src0.1, -srcp.x 8: src0.w = temp[3], src1.xyz = const[0] MAD temp[2].x, src0.w__, src1.y__, src0.0__ 9: src0.xyz = temp[2] FRC temp[3].x, src0.x__ 10: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[4].y, srcp._x_, src0.11_, src0.00_ 11: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[3].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src1.zz_, src0.000 13: src0.w = temp[3] MAD temp[2].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 15: 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 16: src0.xyz = temp[1], src0.w = temp[2] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[2], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=13************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 15, tex_end: 0 (code_addr: 004003c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.yyy 0.0 op: 00050300 w: 0.0 1.0 0.0 op: 00040890 1: xyz: t2 t0 t0 bias-> t1.y (01040002) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xyz t2.xyz t2.xxx op: 00804000 w: 0.0 1.0 0.0 op: 00040890 2: xyz: t1 t1 t0 bias-> t3.x (008c0041) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: |t1.y| t1.x t1.x op: 05800044 3: xyz: t3 t1 t0 sub-> t4.x (00900043) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t3.x t3.x t3.x op: 00000000 4: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t3 t0 t0 bias-> (00000003) xyz: t2.xyz t3.www 0.0 op: 00050600 w: t2.x t2.x t2.x op: 00000000 5: xyz: t3 t1 t2 sub-> t1.xyz (03842043) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t2.xyz 0.5 0.5 op: 00258b08 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t3 t0 t0 bias-> (00000003) xyz: t3.www c0.yyy 0.0 op: 0005030c w: t0.x t0.x t0.x op: 00000000 7: xyz: t2 t0 t0 bias-> t3.x (008c0002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 8: xyz: t3 t2 t0 sub-> t4.y (01100083) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t3.x t3.x t3.x op: 00000000 9: xyz: t3 t2 t0 sub-> (00000083) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xxx t3.xxx t3.xxx op: 00204081 w: t2.x 1.0 -srcp.x op: 000b0883 10: xyz: t4 c0 t0 bias-> t2.xy (01880804) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c0.zzz 0.0 op: 00050380 w: t4.x t4.x t4.x op: 00000000 11: xyz: t0 t0 t0 bias-> t2.z (02080000) w: t3 t0 t0 bias-> (00000003) xyz: t3.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 12: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.x t2.x t2.x op: 00000000 13: 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 14: xyz: t1 t0 t0 bias-> o1.xyz (3c000001) w: t2 t0 t0 bias-> o1.w (03000002) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 15: xyz: t2 t0 t0 bias-> o2.xyz (5c000002) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[1] 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[1], input[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], temp[1], input[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], temp[1], input[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], temp[1], input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[0], src0.w = temp[0], src1.xyz = input[1], src1.w = input[1] 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=14************************************* Hardware program ---------------- 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: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.w t1.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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[2] DCL CONST[0] DCL TEMP[0] DCL TEMP[1], LOCAL 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[2].xxxx, CONST[2].yyyy 2: TEX TEMP[1].xyz, TEMP[0].xyyy, SAMP[0], RECT 3: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[0].xyzz 4: MOV OUT[0], TEMP[1] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[0]; 6: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 7: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[0]; 6: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 7: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[0]; 6: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 7: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[0]; 6: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 7: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[0]; 6: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 7: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: MUL temp[3], temp[0].xyyy, const[5]; 6: TEX temp[4], temp[3], 2D[0]; 7: MOV temp[1].xyz, temp[4]; 8: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 9: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[2].w, input[0].wwww; 1: MUL temp[2].xyz, input[0], temp[2].wwww; 2: MAD temp[2].xyz, temp[2].xyz0, const[3].xyz0, const[4].xyz0; 3: MOV temp[0], temp[2]; 4: MAD temp[0].y, temp[2], const[2].xxxx, const[2].yyyy; 5: MUL temp[3], temp[0].xyyy, const[5]; 6: TEX temp[4], temp[3], 2D[0]; 7: MOV temp[1].xyz, temp[4]; 8: MUL temp[1].xyz, temp[1].xyzz, const[0].xyzz; 9: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[2].w, input[0].___w; 1: MUL temp[2].xy, input[0].xy__, temp[2].ww__; 2: MAD temp[2].xy, temp[2].xy__, const[3].xy__, const[4].xy__; 3: MOV temp[0].x, temp[2].x___; 4: MAD temp[0].y, temp[2]._y__, const[2]._x__, const[2]._y__; 5: MUL temp[3].xy, temp[0].xy__, const[5].xy__; 6: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 7: MOV temp[1].xyz, temp[4].xyz_; 8: MUL temp[1].xyz, temp[1].xyz_, const[0].xyz_; 9: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[2].w, input[0].___w; 1: MUL temp[2].xy, input[0].xy__, temp[2].ww__; 2: MAD temp[2].xy, temp[2].xy__, const[3].xy__, const[4].xy__; 3: MOV temp[0].x, temp[2].x___; 4: MAD temp[0].y, temp[2]._y__, const[2]._x__, const[2]._y__; 5: MUL temp[3].xy, temp[0].xy__, const[5].xy__; 6: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 7: MOV temp[1].xyz, temp[4].xyz_; 8: MUL temp[1].xyz, temp[1].xyz_, const[0].xyz_; 9: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[7].xy, temp[6].xy__, const[3].xy__, const[4].xy__; 3: MOV temp[8].x, temp[7].x___; 4: MAD temp[8].y, temp[7]._y__, const[2]._x__, const[2]._y__; 5: MUL temp[9].xy, temp[8].xy__, const[5].xy__; 6: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 7: MOV temp[11].xyz, temp[10].xyz_; 8: MUL temp[12].xyz, temp[11].xyz_, const[0].xyz_; 9: MOV output[0], temp[12]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[7].xy, temp[6].xy__, const[3].xy__, const[4].xy__; 3: MOV temp[8].x, temp[7].x___; 4: MAD temp[8].y, temp[7]._y__, const[2]._x__, const[2]._y__; 5: MUL temp[9].xy, temp[8].xy__, const[5].xy__; 6: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 7: MUL temp[12].xyz, temp[10].xyz_, const[0].xyz_; 8: MOV output[0], temp[12]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[7].xy, temp[6].xy__, const[3].xy__, const[4].xy__; 3: MOV temp[8].x, temp[7].x___; 4: MAD temp[8].y, temp[7]._y__, const[2]._x__, const[2]._y__; 5: MUL temp[9].xy, temp[8].xy__, const[5].xy__; 6: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 7: MUL temp[12].xyz, temp[10].xyz_, const[0].xyz_; 8: MOV output[0], temp[12]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[7].xy, temp[6].xy__, const[2].xy__, const[3].xy__; 3: MOV temp[8].x, temp[7].x___; 4: MAD temp[8].y, temp[7]._y__, const[1]._x__, const[1]._y__; 5: MUL temp[9].xy, temp[8].xy__, const[4].xy__; 6: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 7: MUL temp[12].xyz, temp[10].xyz_, const[0].xyz_; 8: MOV output[0], temp[12]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[5].w, src0.w 1: src0.xyz = input[0], src0.w = temp[5] MAD temp[6].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[6], src1.xyz = const[2], src2.xyz = const[3] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[7] MAD temp[8].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[7], src1.xyz = const[1] MAD temp[8].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[8], src1.xyz = const[4] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 6: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 7: src0.xyz = temp[10], src1.xyz = const[0] MAD temp[12].xyz, src0.xyz, src1.xyz, src0.000 8: src0.xyz = temp[12], src0.w = temp[12] 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] RCP temp[5].w, src0.w 1: src0.xyz = input[0], src0.w = temp[5] MAD temp[6].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[6], src1.xyz = const[2], src2.xyz = const[3] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[7], src1.xyz = const[1] MAD temp[8].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[7] MAD temp[8].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[8], src1.xyz = const[4] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[10].xyz, temp[9].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[10], src1.xyz = const[0] SEM_WAIT MAD temp[12].xyz, src0.xyz, src1.xyz, src0.000 9: src0.xyz = temp[12], src0.w = temp[12] 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] RCP temp[5].w, src0.w 1: src0.xyz = input[0], src0.w = temp[5] MAD temp[6].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[6], src1.xyz = const[2], src2.xyz = const[3] MAD temp[7].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[7], src1.xyz = const[1] MAD temp[8].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[7] MAD temp[8].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[8], src1.xyz = const[4] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[10].xyz, temp[9].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[10], src1.xyz = const[0] SEM_WAIT MAD temp[12].xyz, src0.xyz, src1.xyz, src0.000 9: src0.xyz = temp[12], src0.w = temp[12] 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[0] RCP temp[1].w, src0.w 1: src0.xyz = input[0], src0.w = temp[1] MAD temp[0].xy, src0.xy_, src0.ww_, src0.00_ 2: src0.xyz = temp[0], src1.xyz = const[2], src2.xyz = const[3] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[1].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[0] MAD temp[1].x, src0.x__, src0.11_, src0.00_ 5: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 6: BEGIN_TEX; 7: TEX temp[0].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[0], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 9: src0.xyz = temp[0], src0.w = temp[12] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=15************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 5, tex_end: 0 (code_addr: 00000140) 0: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w t0.x t0.x op: 05000009 1: xyz: t0 t0 t0 bias-> t0.xy (01800000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xyz t1.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 2: xyz: t0 c2 c3 bias-> t0.xy (01823880) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c2.xyz c3.xyz op: 00020200 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 c1 t0 bias-> t1.y (01040840) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c1.xxx c1.xyz op: 00010280 w: t0.x t0.x t0.x op: 00000000 4: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 5: xyz: t1 c4 t0 bias-> t0.xy (01800901) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c4.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 NODE 1: alu_offset: 6, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400046) TEX: TEX t0, t0, texture[0] (00008000) 6: 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 7: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t12 t0 t0 bias-> o0.w (0100000c) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t12.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL OUT[0], COLOR IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.111, 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.111, 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.111, 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.111, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=16************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 1.0 1.0 0.0 op: 00050a95 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], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[7..8] DCL CONST[4..6] 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[0] FLT32 { 1.0000, 0.0039, 0.0000, 2.0000} IMM[1] FLT32 { -1.0000, 0.0000, 10.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[8].xxxx, CONST[8].yyyy 2: TEX TEMP[1], TEMP[0].xyyy, SAMP[2], RECT 3: TEX TEMP[2], TEMP[0].xyyy, SAMP[1], RECT 4: RCP TEMP[3].x, IN[1].zzzz 5: MUL TEMP[3].xy, IN[1].xyyy, TEMP[3].xxxx 6: MOV TEMP[3].z, CONST[4].xxxx 7: DP3 TEMP[4].x, TEMP[2].xyzz, IMM[0].xyzz 8: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 9: ADD TEMP[4].xyz, CONST[7].xyzz, -TEMP[3].xyzz 10: MUL TEMP[4].xyz, TEMP[4].xyzz, CONST[6].xxxx 11: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 12: RSQ TEMP[5].x, TEMP[5].xxxx 13: MUL TEMP[5].xyz, TEMP[4].xyzz, TEMP[5].xxxx 14: MAD TEMP[6].xyz, TEMP[1].xyzz, IMM[0].wwww, IMM[1].xxxx 15: DP3 TEMP[7].x, TEMP[6].xyzz, TEMP[6].xyzz 16: RSQ TEMP[7].x, TEMP[7].xxxx 17: MUL TEMP[6].xyz, TEMP[6].xyzz, TEMP[7].xxxx 18: MOV TEMP[3].xyz, -TEMP[3].xyzx 19: DP3 TEMP[7].x, TEMP[3].xyzz, TEMP[3].xyzz 20: RSQ TEMP[7].x, TEMP[7].xxxx 21: MAD TEMP[3].xyz, TEMP[3].xyzz, TEMP[7].xxxx, TEMP[5].xyzz 22: TEX TEMP[7].xyz, TEMP[0].xyyy, SAMP[3], RECT 23: MUL TEMP[7].xyz, TEMP[7].xyzz, CONST[5].xyzz 24: DP3 TEMP[5].x, TEMP[5].xyzz, TEMP[6].xyzz 25: MAX TEMP[5].x, TEMP[5].xxxx, IMM[1].yyyy 26: MUL TEMP[1].x, CONST[5].wwww, TEMP[1].wwww 27: DP3 TEMP[8].x, TEMP[3].xyzz, TEMP[3].xyzz 28: RSQ TEMP[8].x, TEMP[8].xxxx 29: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[8].xxxx 30: DP3_SAT TEMP[3].x, TEMP[3].xyzz, TEMP[6].xyzz 31: MUL TEMP[2].x, TEMP[2].wwww, IMM[1].zzzz 32: EX2 TEMP[2].x, TEMP[2].xxxx 33: ADD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 34: POW TEMP[2].x, TEMP[3].xxxx, TEMP[2].xxxx 35: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 36: MUL TEMP[1].xyz, TEMP[1].xxxx, CONST[5].xyzz 37: MAD TEMP[1].xyz, TEMP[7].xyzz, TEMP[5].xxxx, TEMP[1].xyzz 38: DP3 TEMP[2].x, TEMP[4].xyzz, TEMP[4].xyzz 39: TEX TEMP[2].x, TEMP[2].xxxx, SAMP[0], 1D 40: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 41: MOV OUT[0], TEMP[1] 42: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: TEX temp[1], temp[0].xyyy, RECT[2]; 6: TEX temp[2], temp[0].xyyy, RECT[1]; 7: RCP temp[3].x, input[1].zzzz; 8: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 9: MOV temp[3].z, const[4].xxxx; 10: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 11: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 12: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 13: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 18: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 19: RSQ temp[7].x, temp[7].xxxx; 20: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 21: MOV temp[3].xyz, -temp[3].xyzx; 22: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 23: RSQ temp[7].x, temp[7].xxxx; 24: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 25: TEX temp[7].xyz, temp[0].xyyy, RECT[3]; 26: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 27: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 28: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 29: MUL temp[1].x, const[5].wwww, temp[1].wwww; 30: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 31: RSQ temp[8].x, temp[8].xxxx; 32: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 33: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 34: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 35: EX2 temp[2].x, temp[2].xxxx; 36: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 37: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 38: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 39: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 40: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 41: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 42: TEX temp[2].x, temp[2].xxxx, 1D[0]; 43: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 44: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: TEX temp[1], temp[0].xyyy, RECT[2]; 6: TEX temp[2], temp[0].xyyy, RECT[1]; 7: RCP temp[3].x, input[1].zzzz; 8: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 9: MOV temp[3].z, const[4].xxxx; 10: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 11: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 12: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 13: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 18: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 19: RSQ temp[7].x, temp[7].xxxx; 20: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 21: MOV temp[3].xyz, -temp[3].xyzx; 22: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 23: RSQ temp[7].x, temp[7].xxxx; 24: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 25: TEX temp[7].xyz, temp[0].xyyy, RECT[3]; 26: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 27: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 28: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 29: MUL temp[1].x, const[5].wwww, temp[1].wwww; 30: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 31: RSQ temp[8].x, temp[8].xxxx; 32: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 33: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 34: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 35: EX2 temp[2].x, temp[2].xxxx; 36: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 37: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 38: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 39: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 40: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 41: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 42: TEX temp[2].x, temp[2].xxxx, 1D[0]; 43: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 44: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: TEX temp[1], temp[0].xyyy, RECT[2]; 6: TEX temp[2], temp[0].xyyy, RECT[1]; 7: RCP temp[3].x, input[1].zzzz; 8: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 9: MOV temp[3].z, const[4].xxxx; 10: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 11: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 12: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 13: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 18: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 19: RSQ temp[7].x, temp[7].xxxx; 20: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 21: MOV temp[3].xyz, -temp[3].xyzx; 22: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 23: RSQ temp[7].x, temp[7].xxxx; 24: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 25: TEX temp[7].xyz, temp[0].xyyy, RECT[3]; 26: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 27: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 28: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 29: MUL temp[1].x, const[5].wwww, temp[1].wwww; 30: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 31: RSQ temp[8].x, temp[8].xxxx; 32: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 33: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 34: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 35: EX2 temp[2].x, temp[2].xxxx; 36: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 37: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 38: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 39: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 40: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 41: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 42: TEX temp[2].x, temp[2].xxxx, 1D[0]; 43: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 44: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: TEX temp[1], temp[0].xyyy, RECT[2]; 6: TEX temp[2], temp[0].xyyy, RECT[1]; 7: RCP temp[3].x, input[1].zzzz; 8: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 9: MOV temp[3].z, const[4].xxxx; 10: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 11: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 12: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 13: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 18: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 19: RSQ temp[7].x, temp[7].xxxx; 20: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 21: MOV temp[3].xyz, -temp[3].xyzx; 22: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 23: RSQ temp[7].x, temp[7].xxxx; 24: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 25: TEX temp[7].xyz, temp[0].xyyy, RECT[3]; 26: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 27: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 28: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 29: MUL temp[1].x, const[5].wwww, temp[1].wwww; 30: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 31: RSQ temp[8].x, temp[8].xxxx; 32: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 33: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 34: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 35: EX2 temp[2].x, temp[2].xxxx; 36: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 37: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 38: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 39: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 40: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 41: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 42: TEX temp[2].x, temp[2].xxxx, 1D[0]; 43: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 44: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: TEX temp[1], temp[0].xyyy, RECT[2]; 6: TEX temp[2], temp[0].xyyy, RECT[1]; 7: RCP temp[3].x, input[1].zzzz; 8: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 9: MOV temp[3].z, const[4].xxxx; 10: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 11: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 12: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 13: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 18: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 19: RSQ temp[7].x, temp[7].xxxx; 20: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 21: MOV temp[3].xyz, -temp[3].xyzx; 22: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 23: RSQ temp[7].x, temp[7].xxxx; 24: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 25: TEX temp[7].xyz, temp[0].xyyy, RECT[3]; 26: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 27: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 28: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 29: MUL temp[1].x, const[5].wwww, temp[1].wwww; 30: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 31: RSQ temp[8].x, temp[8].xxxx; 32: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 33: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 34: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 35: EX2 temp[2].x, temp[2].xxxx; 36: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 37: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 38: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 39: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 40: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 41: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 42: TEX temp[2].x, temp[2].xxxx, 1D[0]; 43: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 44: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: MUL temp[10], temp[0].xyyy, const[13]; 6: TEX temp[1], temp[10], 2D[2]; 7: MUL temp[11], temp[0].xyyy, const[14]; 8: TEX temp[2], temp[11], 2D[1]; 9: RCP temp[3].x, input[1].zzzz; 10: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 11: MOV temp[3].z, const[4].xxxx; 12: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 13: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 14: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 15: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 16: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 17: RSQ temp[5].x, temp[5].xxxx; 18: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 19: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 21: RSQ temp[7].x, temp[7].xxxx; 22: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 23: MOV temp[3].xyz, -temp[3].xyzx; 24: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 25: RSQ temp[7].x, temp[7].xxxx; 26: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 27: MUL temp[12], temp[0].xyyy, const[15]; 28: TEX temp[13], temp[12], 2D[3]; 29: MOV temp[7].xyz, temp[13]; 30: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 31: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 32: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 33: MUL temp[1].x, const[5].wwww, temp[1].wwww; 34: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 35: RSQ temp[8].x, temp[8].xxxx; 36: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 37: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 38: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 39: EX2 temp[2].x, temp[2].xxxx; 40: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 41: POW temp[2].x, temp[3].xxxx, temp[2].xxxx; 42: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 43: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 44: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 45: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 46: TEX temp[14], temp[2].xxxx, 1D[0]; 47: MOV temp[2].x, temp[14]; 48: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 49: 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[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[8].xxxx, const[8].yyyy; 5: MUL temp[10], temp[0].xyyy, const[13]; 6: TEX temp[1], temp[10], 2D[2]; 7: MUL temp[11], temp[0].xyyy, const[14]; 8: TEX temp[2], temp[11], 2D[1]; 9: RCP temp[3].x, input[1].zzzz; 10: MUL temp[3].xy, input[1].xyyy, temp[3].xxxx; 11: MOV temp[3].z, const[4].xxxx; 12: DP3 temp[4].x, temp[2].xyzz, const[9].xyzz; 13: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 14: ADD temp[4].xyz, const[7].xyzz, -temp[3].xyzz; 15: MUL temp[4].xyz, temp[4].xyzz, const[6].xxxx; 16: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 17: RSQ temp[5].x, |temp[5].xxxx|; 18: MUL temp[5].xyz, temp[4].xyzz, temp[5].xxxx; 19: MAD temp[6].xyz, temp[1].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[7].x, temp[6].xyzz, temp[6].xyzz; 21: RSQ temp[7].x, |temp[7].xxxx|; 22: MUL temp[6].xyz, temp[6].xyzz, temp[7].xxxx; 23: MOV temp[3].xyz, -temp[3].xyzx; 24: DP3 temp[7].x, temp[3].xyzz, temp[3].xyzz; 25: RSQ temp[7].x, |temp[7].xxxx|; 26: MAD temp[3].xyz, temp[3].xyzz, temp[7].xxxx, temp[5].xyzz; 27: MUL temp[12], temp[0].xyyy, const[15]; 28: TEX temp[13], temp[12], 2D[3]; 29: MOV temp[7].xyz, temp[13]; 30: MUL temp[7].xyz, temp[7].xyzz, const[5].xyzz; 31: DP3 temp[5].x, temp[5].xyzz, temp[6].xyzz; 32: MAX temp[5].x, temp[5].xxxx, const[10].yyyy; 33: MUL temp[1].x, const[5].wwww, temp[1].wwww; 34: DP3 temp[8].x, temp[3].xyzz, temp[3].xyzz; 35: RSQ temp[8].x, |temp[8].xxxx|; 36: MUL temp[3].xyz, temp[3].xyzz, temp[8].xxxx; 37: DP3_SAT temp[3].x, temp[3].xyzz, temp[6].xyzz; 38: MUL temp[2].x, temp[2].wwww, const[10].zzzz; 39: EX2 temp[2].x, temp[2].xxxx; 40: ADD temp[2].x, temp[2].xxxx, const[9].xxxx; 41: LG2 temp[15].w, temp[3].xxxx; 42: MUL temp[15].w, temp[15].wwww, temp[2].xxxx; 43: EX2 temp[2].x, temp[15].wwww; 44: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 45: MUL temp[1].xyz, temp[1].xxxx, const[5].xyzz; 46: MAD temp[1].xyz, temp[7].xyzz, temp[5].xxxx, temp[1].xyzz; 47: DP3 temp[2].x, temp[4].xyzz, temp[4].xyzz; 48: TEX temp[14], temp[2].xxxx, 1D[0]; 49: MOV temp[2].x, temp[14]; 50: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 51: 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[11].xy__, const[12].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[8]._x__, const[8]._y__; 5: MUL temp[10].xy, temp[0].xy__, const[13].xy__; 6: TEX temp[1], temp[10].xy__, 2D[2]; 7: MUL temp[11].xy, temp[0].xy__, const[14].xy__; 8: TEX temp[2], temp[11].xy__, 2D[1]; 9: RCP temp[3].x, input[1].z___; 10: MUL temp[3].xy, input[1].xy__, temp[3].xx__; 11: MOV temp[3].z, const[4].__x_; 12: DP3 temp[4].x, temp[2].xyz_, const[9].xyz_; 13: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 14: ADD temp[4].xyz, const[7].xyz_, -temp[3].xyz_; 15: MUL temp[4].xyz, temp[4].xyz_, const[6].xxx_; 16: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 17: RSQ temp[5].x, |temp[5].x___|; 18: MUL temp[5].xyz, temp[4].xyz_, temp[5].xxx_; 19: MAD temp[6].xyz, temp[1].xyz_, const[9].www_, const[10].xxx_; 20: DP3 temp[7].x, temp[6].xyz_, temp[6].xyz_; 21: RSQ temp[7].x, |temp[7].x___|; 22: MUL temp[6].xyz, temp[6].xyz_, temp[7].xxx_; 23: MOV temp[3].xyz, -temp[3].xyz_; 24: DP3 temp[7].x, temp[3].xyz_, temp[3].xyz_; 25: RSQ temp[7].x, |temp[7].x___|; 26: MAD temp[3].xyz, temp[3].xyz_, temp[7].xxx_, temp[5].xyz_; 27: MUL temp[12].xy, temp[0].xy__, const[15].xy__; 28: TEX temp[13].xyz, temp[12].xy__, 2D[3]; 29: MOV temp[7].xyz, temp[13].xyz_; 30: MUL temp[7].xyz, temp[7].xyz_, const[5].xyz_; 31: DP3 temp[5].x, temp[5].xyz_, temp[6].xyz_; 32: MAX temp[5].x, temp[5].x___, const[10].y___; 33: MUL temp[1].x, const[5].w___, temp[1].w___; 34: DP3 temp[8].x, temp[3].xyz_, temp[3].xyz_; 35: RSQ temp[8].x, |temp[8].x___|; 36: MUL temp[3].xyz, temp[3].xyz_, temp[8].xxx_; 37: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 38: MUL temp[2].x, temp[2].w___, const[10].z___; 39: EX2 temp[2].x, temp[2].x___; 40: ADD temp[2].x, temp[2].x___, const[9].x___; 41: LG2 temp[15].w, temp[3].___x; 42: MUL temp[15].w, temp[15].___w, temp[2].___x; 43: EX2 temp[2].x, temp[15].w___; 44: MUL temp[1].x, temp[1].x___, temp[2].x___; 45: MUL temp[1].xyz, temp[1].xxx_, const[5].xyz_; 46: MAD temp[1].xyz, temp[7].xyz_, temp[5].xxx_, temp[1].xyz_; 47: DP3 temp[2].x, temp[4].xyz_, temp[4].xyz_; 48: TEX temp[14].x, temp[2].x___, 1D[0]; 49: MOV temp[2].x, temp[14].x___; 50: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 51: 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[11].xy__, const[12].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[8]._x__, const[8]._y__; 5: MUL temp[10].xy, temp[0].xy__, const[13].xy__; 6: TEX temp[1], temp[10].xy__, 2D[2]; 7: MUL temp[11].xy, temp[0].xy__, const[14].xy__; 8: TEX temp[2], temp[11].xy__, 2D[1]; 9: RCP temp[3].x, input[1].z___; 10: MUL temp[3].xy, input[1].xy__, temp[3].xx__; 11: MOV temp[3].z, const[4].__x_; 12: DP3 temp[4].x, temp[2].xyz_, const[9].xyz_; 13: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 14: ADD temp[4].xyz, const[7].xyz_, -temp[3].xyz_; 15: MUL temp[4].xyz, temp[4].xyz_, const[6].xxx_; 16: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 17: RSQ temp[5].x, |temp[5].x___|; 18: MUL temp[5].xyz, temp[4].xyz_, temp[5].xxx_; 19: MAD temp[6].xyz, temp[1].xyz_, const[9].www_, const[10].xxx_; 20: DP3 temp[7].x, temp[6].xyz_, temp[6].xyz_; 21: RSQ temp[7].x, |temp[7].x___|; 22: MUL temp[6].xyz, temp[6].xyz_, temp[7].xxx_; 23: MOV temp[3].xyz, -temp[3].xyz_; 24: DP3 temp[7].x, temp[3].xyz_, temp[3].xyz_; 25: RSQ temp[7].x, |temp[7].x___|; 26: MAD temp[3].xyz, temp[3].xyz_, temp[7].xxx_, temp[5].xyz_; 27: MUL temp[12].xy, temp[0].xy__, const[15].xy__; 28: TEX temp[13].xyz, temp[12].xy__, 2D[3]; 29: MOV temp[7].xyz, temp[13].xyz_; 30: MUL temp[7].xyz, temp[7].xyz_, const[5].xyz_; 31: DP3 temp[5].x, temp[5].xyz_, temp[6].xyz_; 32: MAX temp[5].x, temp[5].x___, const[10].y___; 33: MUL temp[1].x, const[5].w___, temp[1].w___; 34: DP3 temp[8].x, temp[3].xyz_, temp[3].xyz_; 35: RSQ temp[8].x, |temp[8].x___|; 36: MUL temp[3].xyz, temp[3].xyz_, temp[8].xxx_; 37: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 38: MUL temp[2].x, temp[2].w___, const[10].z___; 39: EX2 temp[2].x, temp[2].x___; 40: ADD temp[2].x, temp[2].x___, const[9].x___; 41: LG2 temp[15].w, temp[3].___x; 42: MUL temp[15].w, temp[15].___w, temp[2].___x; 43: EX2 temp[2].x, temp[15].w___; 44: MUL temp[1].x, temp[1].x___, temp[2].x___; 45: MUL temp[1].xyz, temp[1].xxx_, const[5].xyz_; 46: MAD temp[1].xyz, temp[7].xyz_, temp[5].xxx_, temp[1].xyz_; 47: DP3 temp[2].x, temp[4].xyz_, temp[4].xyz_; 48: TEX temp[14].x, temp[2].x___, 1D[0]; 49: MOV temp[2].x, temp[14].x___; 50: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 51: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[16].w, input[0].___w; 1: MUL temp[17].xy, input[0].xy__, temp[16].ww__; 2: MAD temp[18].xy, temp[17].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[19].x, temp[18].x___; 4: MAD temp[19].y, temp[18]._y__, const[8]._x__, const[8]._y__; 5: MUL temp[20].xy, temp[19].xy__, const[13].xy__; 6: TEX temp[21], temp[20].xy__, 2D[2]; 7: MUL temp[22].xy, temp[19].xy__, const[14].xy__; 8: TEX temp[23], temp[22].xy__, 2D[1]; 9: RCP temp[24].x, input[1].z___; 10: MUL temp[25].xy, input[1].xy__, temp[24].xx__; 11: MOV temp[25].z, const[4].__x_; 12: DP3 temp[26].x, temp[23].xyz_, const[9].xyz_; 13: MUL temp[27].xyz, temp[25].xyz_, temp[26].xxx_; 14: ADD temp[28].xyz, const[7].xyz_, -temp[27].xyz_; 15: MUL temp[29].xyz, temp[28].xyz_, const[6].xxx_; 16: DP3 temp[30].x, temp[29].xyz_, temp[29].xyz_; 17: RSQ temp[31].x, |temp[30].x___|; 18: MUL temp[32].xyz, temp[29].xyz_, temp[31].xxx_; 19: MAD temp[33].xyz, temp[21].xyz_, const[9].www_, const[10].xxx_; 20: DP3 temp[34].x, temp[33].xyz_, temp[33].xyz_; 21: RSQ temp[35].x, |temp[34].x___|; 22: MUL temp[36].xyz, temp[33].xyz_, temp[35].xxx_; 23: MOV temp[37].xyz, -temp[27].xyz_; 24: DP3 temp[38].x, temp[37].xyz_, temp[37].xyz_; 25: RSQ temp[39].x, |temp[38].x___|; 26: MAD temp[40].xyz, temp[37].xyz_, temp[39].xxx_, temp[32].xyz_; 27: MUL temp[41].xy, temp[19].xy__, const[15].xy__; 28: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 29: MOV temp[43].xyz, temp[42].xyz_; 30: MUL temp[44].xyz, temp[43].xyz_, const[5].xyz_; 31: DP3 temp[45].x, temp[32].xyz_, temp[36].xyz_; 32: MAX temp[46].x, temp[45].x___, const[10].y___; 33: MUL temp[47].x, const[5].w___, temp[21].w___; 34: DP3 temp[48].x, temp[40].xyz_, temp[40].xyz_; 35: RSQ temp[49].x, |temp[48].x___|; 36: MUL temp[50].xyz, temp[40].xyz_, temp[49].xxx_; 37: DP3_SAT temp[51].x, temp[50].xyz_, temp[36].xyz_; 38: MUL temp[52].x, temp[23].w___, const[10].z___; 39: EX2 temp[53].x, temp[52].x___; 40: ADD temp[54].x, temp[53].x___, const[9].x___; 41: LG2 temp[55].w, temp[51].___x; 42: MUL temp[56].w, temp[55].___w, temp[54].___x; 43: EX2 temp[57].x, temp[56].w___; 44: MUL temp[58].x, temp[47].x___, temp[57].x___; 45: MUL temp[59].xyz, temp[58].xxx_, const[5].xyz_; 46: MAD temp[60].xyz, temp[44].xyz_, temp[46].xxx_, temp[59].xyz_; 47: DP3 temp[61].x, temp[29].xyz_, temp[29].xyz_; 48: TEX temp[62].x, temp[61].x___, 1D[0]; 49: MOV temp[63].x, temp[62].x___; 50: MUL temp[21].xyz, temp[60].xyz_, temp[63].xxx_; 51: MOV output[0], temp[21]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[16].w, input[0].___w; 1: MUL temp[17].xy, input[0].xy__, temp[16].ww__; 2: MAD temp[18].xy, temp[17].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[19].x, temp[18].x___; 4: MAD temp[19].y, temp[18]._y__, const[8]._x__, const[8]._y__; 5: MUL temp[20].xy, temp[19].xy__, const[13].xy__; 6: TEX temp[21], temp[20].xy__, 2D[2]; 7: MUL temp[22].xy, temp[19].xy__, const[14].xy__; 8: TEX temp[23], temp[22].xy__, 2D[1]; 9: RCP temp[24].x, input[1].z___; 10: MUL temp[25].xy, input[1].xy__, temp[24].xx__; 11: MOV temp[25].z, const[4].__x_; 12: DP3 temp[26].x, temp[23].xyz_, const[9].xyz_; 13: MUL temp[27].xyz, temp[25].xyz_, temp[26].xxx_; 14: MUL temp[29].xyz, (const[7] - temp[27]).xyz_, const[6].xxx_; 15: DP3 temp[30].x, temp[29].xyz_, temp[29].xyz_; 16: RSQ temp[31].x, |temp[30].x___|; 17: MUL temp[32].xyz, temp[29].xyz_, temp[31].xxx_; 18: MAD temp[33].xyz, temp[21].xyz_, const[9].www_, none.-1-1-1_; 19: DP3 temp[34].x, temp[33].xyz_, temp[33].xyz_; 20: RSQ temp[35].x, |temp[34].x___|; 21: MUL temp[36].xyz, temp[33].xyz_, temp[35].xxx_; 22: DP3 temp[38].x, temp[27].-x-y-z_, temp[27].-x-y-z_; 23: RSQ temp[39].x, |temp[38].x___|; 24: MAD temp[40].xyz, temp[27].-x-y-z_, temp[39].xxx_, temp[32].xyz_; 25: MUL temp[41].xy, temp[19].xy__, const[15].xy__; 26: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 27: MUL temp[44].xyz, temp[42].xyz_, const[5].xyz_; 28: DP3 temp[45].x, temp[32].xyz_, temp[36].xyz_; 29: MAX temp[46].x, temp[45].x___, none.0___; 30: MUL temp[47].x, const[5].w___, temp[21].w___; 31: DP3 temp[48].x, temp[40].xyz_, temp[40].xyz_; 32: RSQ temp[49].x, |temp[48].x___|; 33: MUL temp[50].xyz, temp[40].xyz_, temp[49].xxx_; 34: DP3_SAT temp[51].x, temp[50].xyz_, temp[36].xyz_; 35: MUL temp[52].x, temp[23].w___, const[10].z___; 36: EX2 temp[53].x, temp[52].x___; 37: ADD temp[54].x, temp[53].x___, none.1___; 38: LG2 temp[55].w, temp[51].___x; 39: MUL temp[56].w, temp[55].___w, temp[54].___x; 40: EX2 temp[57].x, temp[56].w___; 41: MUL temp[58].x, temp[47].x___, temp[57].x___; 42: MUL temp[59].xyz, temp[58].xxx_, const[5].xyz_; 43: MAD temp[60].xyz, temp[44].xyz_, temp[46].xxx_, temp[59].xyz_; 44: DP3 temp[61].x, temp[29].xyz_, temp[29].xyz_; 45: TEX temp[62].x, temp[61].x___, 1D[0]; 46: MUL temp[21].xyz, temp[60].xyz_, temp[62].xxx_; 47: MOV output[0], temp[21]; CONST[9] = { 1.0000 0.0039 0.0000 2.0000 } CONST[10] = { -1.0000 0.0000 10.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[16].w, input[0].___w; 1: MUL temp[17].xy, input[0].xy__, temp[16].ww__; 2: MAD temp[18].xy, temp[17].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[19].x, temp[18].x___; 4: MAD temp[19].y, temp[18]._y__, const[8]._x__, const[8]._y__; 5: MUL temp[20].xy, temp[19].xy__, const[13].xy__; 6: TEX temp[21], temp[20].xy__, 2D[2]; 7: MUL temp[22].xy, temp[19].xy__, const[14].xy__; 8: TEX temp[23], temp[22].xy__, 2D[1]; 9: RCP temp[24].x, input[1].z___; 10: MUL temp[25].xy, input[1].xy__, temp[24].xx__; 11: MOV temp[25].z, const[4].__x_; 12: DP3 temp[26].x, temp[23].xyz_, const[9].xyz_; 13: MUL temp[27].xyz, temp[25].xyz_, temp[26].xxx_; 14: MUL temp[29].xyz, (const[7] - temp[27]).xyz_, const[6].xxx_; 15: DP3 temp[30].x, temp[29].xyz_, temp[29].xyz_; 16: RSQ temp[31].x, |temp[30].x___|; 17: MUL temp[32].xyz, temp[29].xyz_, temp[31].xxx_; 18: MAD temp[33].xyz, temp[21].xyz_, const[9].www_, none.-1-1-1_; 19: DP3 temp[34].x, temp[33].xyz_, temp[33].xyz_; 20: RSQ temp[35].x, |temp[34].x___|; 21: MUL temp[36].xyz, temp[33].xyz_, temp[35].xxx_; 22: DP3 temp[38].x, temp[27].-x-y-z_, temp[27].-x-y-z_; 23: RSQ temp[39].x, |temp[38].x___|; 24: MAD temp[40].xyz, temp[27].-x-y-z_, temp[39].xxx_, temp[32].xyz_; 25: MUL temp[41].xy, temp[19].xy__, const[15].xy__; 26: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 27: MUL temp[44].xyz, temp[42].xyz_, const[5].xyz_; 28: DP3 temp[45].x, temp[32].xyz_, temp[36].xyz_; 29: MAX temp[46].x, temp[45].x___, none.0___; 30: MUL temp[47].x, const[5].w___, temp[21].w___; 31: DP3 temp[48].x, temp[40].xyz_, temp[40].xyz_; 32: RSQ temp[49].x, |temp[48].x___|; 33: MUL temp[50].xyz, temp[40].xyz_, temp[49].xxx_; 34: DP3_SAT temp[51].x, temp[50].xyz_, temp[36].xyz_; 35: MUL temp[52].x, temp[23].w___, const[10].z___; 36: EX2 temp[53].x, temp[52].x___; 37: ADD temp[54].x, temp[53].x___, none.1___; 38: LG2 temp[55].w, temp[51].___x; 39: MUL temp[56].w, temp[55].___w, temp[54].___x; 40: EX2 temp[57].x, temp[56].w___; 41: MUL temp[58].x, temp[47].x___, temp[57].x___; 42: MUL temp[59].xyz, temp[58].xxx_, const[5].xyz_; 43: MAD temp[60].xyz, temp[44].xyz_, temp[46].xxx_, temp[59].xyz_; 44: DP3 temp[61].x, temp[29].xyz_, temp[29].xyz_; 45: TEX temp[62].x, temp[61].x___, 1D[0]; 46: MUL temp[21].xyz, temp[60].xyz_, temp[62].xxx_; 47: MOV output[0], temp[21]; CONST[5] = { 1.0000 0.0039 0.0000 2.0000 } CONST[6] = { -1.0000 0.0000 10.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[16].w, input[0].___w; 1: MUL temp[17].xy, input[0].xy__, temp[16].ww__; 2: MAD temp[18].xy, temp[17].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[19].x, temp[18].x___; 4: MAD temp[19].y, temp[18]._y__, const[4]._x__, const[4]._y__; 5: MUL temp[20].xy, temp[19].xy__, const[9].xy__; 6: TEX temp[21], temp[20].xy__, 2D[2]; 7: MUL temp[22].xy, temp[19].xy__, const[10].xy__; 8: TEX temp[23], temp[22].xy__, 2D[1]; 9: RCP temp[24].x, input[1].z___; 10: MUL temp[25].xy, input[1].xy__, temp[24].xx__; 11: MOV temp[25].z, const[0].__x_; 12: DP3 temp[26].x, temp[23].xyz_, const[5].xyz_; 13: MUL temp[27].xyz, temp[25].xyz_, temp[26].xxx_; 14: MUL temp[29].xyz, (const[3] - temp[27]).xyz_, const[2].xxx_; 15: DP3 temp[30].x, temp[29].xyz_, temp[29].xyz_; 16: RSQ temp[31].x, |temp[30].x___|; 17: MUL temp[32].xyz, temp[29].xyz_, temp[31].xxx_; 18: MAD temp[33].xyz, temp[21].xyz_, const[5].www_, none.-1-1-1_; 19: DP3 temp[34].x, temp[33].xyz_, temp[33].xyz_; 20: RSQ temp[35].x, |temp[34].x___|; 21: MUL temp[36].xyz, temp[33].xyz_, temp[35].xxx_; 22: DP3 temp[38].x, temp[27].-x-y-z_, temp[27].-x-y-z_; 23: RSQ temp[39].x, |temp[38].x___|; 24: MAD temp[40].xyz, temp[27].-x-y-z_, temp[39].xxx_, temp[32].xyz_; 25: MUL temp[41].xy, temp[19].xy__, const[11].xy__; 26: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 27: MUL temp[44].xyz, temp[42].xyz_, const[1].xyz_; 28: DP3 temp[45].x, temp[32].xyz_, temp[36].xyz_; 29: MAX temp[46].x, temp[45].x___, none.0___; 30: MUL temp[47].x, const[1].w___, temp[21].w___; 31: DP3 temp[48].x, temp[40].xyz_, temp[40].xyz_; 32: RSQ temp[49].x, |temp[48].x___|; 33: MUL temp[50].xyz, temp[40].xyz_, temp[49].xxx_; 34: DP3_SAT temp[51].x, temp[50].xyz_, temp[36].xyz_; 35: MUL temp[52].x, temp[23].w___, const[6].z___; 36: EX2 temp[53].x, temp[52].x___; 37: ADD temp[54].x, temp[53].x___, none.1___; 38: LG2 temp[55].w, temp[51].___x; 39: MUL temp[56].w, temp[55].___w, temp[54].___x; 40: EX2 temp[57].x, temp[56].w___; 41: MUL temp[58].x, temp[47].x___, temp[57].x___; 42: MUL temp[59].xyz, temp[58].xxx_, const[1].xyz_; 43: MAD temp[60].xyz, temp[44].xyz_, temp[46].xxx_, temp[59].xyz_; 44: DP3 temp[61].x, temp[29].xyz_, temp[29].xyz_; 45: TEX temp[62].x, temp[61].x___, 1D[0]; 46: MUL temp[21].xyz, temp[60].xyz_, temp[62].xxx_; 47: MOV output[0], temp[21]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[16].w, src0.w 1: src0.xyz = input[0], src0.w = temp[16] MAD temp[17].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[17], src1.xyz = const[7], src2.xyz = const[8] MAD temp[18].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[18] MAD temp[19].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[18], src1.xyz = const[4] MAD temp[19].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[19], src1.xyz = const[9] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 6: TEX temp[21], temp[20].xy__, 2D[2]; 7: src0.xyz = temp[19], src1.xyz = const[10] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: TEX temp[23], temp[22].xy__, 2D[1]; 9: src0.xyz = input[1] REPL_ALPHA temp[24].x RCP, src0.z 10: src0.xyz = input[1], src1.xyz = temp[24] MAD temp[25].xy, src0.xy_, src1.xx_, src0.000 11: src0.xyz = const[0] MAD temp[25].z, src0.__x, src0.111, src0.000 12: src0.xyz = temp[23], src1.xyz = const[5] DP3 temp[26].x, src0.xyz, src1.xyz 13: src0.xyz = temp[25], src1.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src1.xxx, src0.000 14: src0.xyz = temp[27], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[29].xyz, srcp.xyz, src2.xxx, src0.000 15: src0.xyz = temp[29] DP3 temp[30].x, src0.xyz, src0.xyz 16: src0.xyz = temp[30] REPL_ALPHA temp[31].x RSQ, |src0.x| 17: src0.xyz = temp[29], src1.xyz = temp[31] MAD temp[32].xyz, src0.xyz, src1.xxx, src0.000 18: src0.xyz = temp[21], src0.w = const[5] MAD temp[33].xyz, src0.xyz, src0.www, -src0.111 19: src0.xyz = temp[33] DP3 temp[34].x, src0.xyz, src0.xyz 20: src0.xyz = temp[34] REPL_ALPHA temp[35].x RSQ, |src0.x| 21: src0.xyz = temp[33], src1.xyz = temp[35] MAD temp[36].xyz, src0.xyz, src1.xxx, src0.000 22: src0.xyz = temp[27] DP3 temp[38].x, -src0.xyz, -src0.xyz 23: src0.xyz = temp[38] REPL_ALPHA temp[39].x RSQ, |src0.x| 24: src0.xyz = temp[27], src1.xyz = temp[39], src2.xyz = temp[32] MAD temp[40].xyz, -src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[19], src1.xyz = const[11] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 26: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 27: src0.xyz = temp[42], src1.xyz = const[1] MAD temp[44].xyz, src0.xyz, src1.xyz, src0.000 28: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[45].x, src0.xyz, src1.xyz 29: src0.xyz = temp[45] MAX temp[46].x, src0.x__, src0.0__ 30: src0.w = const[1], src1.w = temp[21] MAD temp[47].x, src0.w__, src1.w__, src0.000 31: src0.xyz = temp[40] DP3 temp[48].x, src0.xyz, src0.xyz 32: src0.xyz = temp[48] REPL_ALPHA temp[49].x RSQ, |src0.x| 33: src0.xyz = temp[40], src1.xyz = temp[49] MAD temp[50].xyz, src0.xyz, src1.xxx, src0.000 34: src0.xyz = temp[50], src1.xyz = temp[36] DP3_SAT temp[51].x, src0.xyz, src1.xyz 35: src0.xyz = const[6], src0.w = temp[23] MAD temp[52].x, src0.w__, src0.z__, src0.000 36: src0.xyz = temp[52] REPL_ALPHA temp[53].x EX2, src0.x 37: src0.xyz = temp[53] MAD temp[54].x, src0.x__, src0.111, src0.1__ 38: src0.xyz = temp[51] LG2 temp[55].w, src0.x 39: src0.xyz = temp[54], src0.w = temp[55] MAD temp[56].w, src0.w, src0.x, src0.0 40: src0.w = temp[56] REPL_ALPHA temp[57].x EX2, src0.w 41: src0.xyz = temp[47], src1.xyz = temp[57] MAD temp[58].x, src0.x__, src1.x__, src0.000 42: src0.xyz = temp[58], src1.xyz = const[1] MAD temp[59].xyz, src0.xxx, src1.xyz, src0.000 43: src0.xyz = temp[44], src1.xyz = temp[46], src2.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src1.xxx, src2.xyz 44: src0.xyz = temp[29] DP3 temp[61].x, src0.xyz, src0.xyz 45: TEX temp[62].x, temp[61].x___, 1D[0]; 46: src0.xyz = temp[60], src1.xyz = temp[62] MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 47: src0.xyz = temp[21], src0.w = temp[21] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = input[0] MAD temp[25].z, src0.__x, src0.111, src0.000 RCP temp[16].w, src0.w 1: src0.xyz = input[0], src0.w = temp[16], src1.xyz = input[1] MAD temp[17].xy, src0.xy_, src0.ww_, src0.000 RCP temp[24].w, src1.z 2: src0.xyz = temp[17], src1.xyz = const[7], src2.xyz = const[8] MAD temp[18].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[1], src0.w = temp[24], src1.xyz = temp[24] MAD temp[25].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[18], src1.xyz = const[4] MAD temp[19].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[18] MAD temp[19].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[19], src1.xyz = const[11] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[19], src1.xyz = const[10] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[9] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: BEGIN_TEX; 10: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 11: TEX temp[23], temp[22].xy__, 2D[1]; 12: TEX temp[21], temp[20].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[23], src0.w = const[1], src1.xyz = const[5], src1.w = temp[21] SEM_WAIT DP3 temp[26].x, src0.xyz, src1.xyz MAD temp[47].w, src0.w, src1.w, src0.0 14: src0.xyz = temp[42], src0.w = temp[23], src1.xyz = const[1], src2.xyz = const[6] MAD temp[44].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[52].w, src0.w, src2.z, src0.0 15: src0.xyz = temp[21], src0.w = const[5] MAD temp[33].xyz, src0.xyz, src0.www, -src0.111 16: src0.xyz = temp[25], src1.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src1.xxx, src0.000 17: src0.xyz = temp[52], src0.w = temp[52] REPL_ALPHA temp[53].x EX2, src0.w 18: src0.xyz = temp[33], src1.xyz = temp[53] DP3 temp[34].x, src0.xyz, src0.xyz MAD temp[54].w, src1.x, src0.1, src0.1 19: src0.xyz = temp[27], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[29].xyz, srcp.xyz, src2.xxx, src0.000 20: src0.xyz = temp[27] DP3 temp[38].x, -src0.xyz, -src0.xyz 21: src0.xyz = temp[29], src1.xyz = temp[38] DP3 temp[30].x, src0.xyz, src0.xyz RSQ temp[39].w, |src1.x| 22: src0.xyz = temp[29], src1.xyz = temp[34] DP3 temp[61].x, src0.xyz, src0.xyz RSQ temp[35].w, |src1.x| 23: src0.xyz = temp[33], src0.w = temp[35], src1.xyz = temp[35], src2.xyz = temp[30] MAD temp[36].xyz, src0.xyz, src0.www, src0.000 RSQ temp[31].w, |src2.x| 24: src0.xyz = temp[29], src0.w = temp[31], src1.xyz = temp[31] MAD temp[32].xyz, src0.xyz, src0.www, src0.000 25: src0.xyz = temp[27], src0.w = temp[39], src1.xyz = temp[39], src2.xyz = temp[32] MAD temp[40].xyz, -src0.xyz, src0.www, src2.xyz 26: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[45].x, src0.xyz, src1.xyz 27: src0.xyz = temp[40], src1.xyz = temp[45] DP3 temp[48].x, src0.xyz, src0.xyz MAX temp[46].w, src1.x, src0.0 28: src0.xyz = temp[48] REPL_ALPHA temp[49].x RSQ, |src0.x| 29: src0.xyz = temp[40], src1.xyz = temp[49] MAD temp[50].xyz, src0.xyz, src1.xxx, src0.000 30: src0.xyz = temp[50], src1.xyz = temp[36] DP3_SAT temp[51].x, src0.xyz, src1.xyz 31: src0.xyz = temp[51] LG2 temp[55].w, src0.x 32: src0.xyz = temp[54], src0.w = temp[55], src1.w = temp[54] MAD temp[56].w, src0.w, src1.w, src0.0 33: src0.w = temp[56] REPL_ALPHA temp[57].x EX2, src0.w 34: src0.xyz = temp[47], src0.w = temp[47], src1.xyz = temp[57] MAD temp[58].x, src0.w__, src1.x__, src0.000 35: src0.xyz = temp[58], src1.xyz = const[1] MAD temp[59].xyz, src0.xxx, src1.xyz, src0.000 36: src0.xyz = temp[44], src0.w = temp[46], src1.xyz = temp[46], src2.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src0.www, src2.xyz 37: BEGIN_TEX; 38: TEX temp[62].x, temp[61].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[60], src1.xyz = temp[62] SEM_WAIT MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 40: src0.xyz = temp[21], src0.w = temp[21] 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], src0.w = input[0] MAD temp[25].z, src0.__x, src0.111, src0.000 RCP temp[16].w, src0.w 1: src0.xyz = input[0], src0.w = temp[16], src1.xyz = input[1] MAD temp[17].xy, src0.xy_, src0.ww_, src0.000 RCP temp[24].w, src1.z 2: src0.xyz = temp[17], src1.xyz = const[7], src2.xyz = const[8] MAD temp[18].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[1], src0.w = temp[24] MAD temp[25].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[18], src1.xyz = const[4] MAD temp[19].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[18] MAD temp[19].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[19], src1.xyz = const[11] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[19], src1.xyz = const[10] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[9] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: BEGIN_TEX; 10: TEX temp[42].xyz, temp[41].xy__, 2D[3]; 11: TEX temp[23], temp[22].xy__, 2D[1]; 12: TEX temp[21], temp[20].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[23], src0.w = const[1], src1.xyz = const[5], src1.w = temp[21] SEM_WAIT DP3 temp[26].x, src0.xyz, src1.xyz MAD temp[47].w, src0.w, src1.w, src0.0 14: src0.xyz = temp[42], src0.w = temp[23], src1.xyz = const[1], src2.xyz = const[6] MAD temp[44].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[52].w, src0.w, src2.z, src0.0 15: src0.xyz = temp[21], src0.w = const[5] MAD temp[33].xyz, src0.xyz, src0.www, -src0.111 16: src0.xyz = temp[25], src1.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src1.xxx, src0.000 17: src0.w = temp[52] REPL_ALPHA temp[53].x EX2, src0.w 18: src0.xyz = temp[33], src1.xyz = temp[53] DP3 temp[34].x, src0.xyz, src0.xyz MAD temp[54].w, src1.x, src0.1, src0.1 19: src0.xyz = temp[27], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[29].xyz, srcp.xyz, src2.xxx, src0.000 20: src0.xyz = temp[27] DP3 temp[38].x, -src0.xyz, -src0.xyz 21: src0.xyz = temp[29], src1.xyz = temp[38] DP3 temp[30].x, src0.xyz, src0.xyz RSQ temp[39].w, |src1.x| 22: src0.xyz = temp[29], src1.xyz = temp[34] DP3 temp[61].x, src0.xyz, src0.xyz RSQ temp[35].w, |src1.x| 23: src0.xyz = temp[33], src0.w = temp[35], src2.xyz = temp[30] MAD temp[36].xyz, src0.xyz, src0.www, src0.000 RSQ temp[31].w, |src2.x| 24: src0.xyz = temp[29], src0.w = temp[31] MAD temp[32].xyz, src0.xyz, src0.www, src0.000 25: src0.xyz = temp[27], src0.w = temp[39], src2.xyz = temp[32] MAD temp[40].xyz, -src0.xyz, src0.www, src2.xyz 26: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[45].x, src0.xyz, src1.xyz 27: src0.xyz = temp[40], src1.xyz = temp[45] DP3 temp[48].x, src0.xyz, src0.xyz MAX temp[46].w, src1.x, src0.0 28: src0.xyz = temp[48] REPL_ALPHA temp[49].x RSQ, |src0.x| 29: src0.xyz = temp[40], src1.xyz = temp[49] MAD temp[50].xyz, src0.xyz, src1.xxx, src0.000 30: src0.xyz = temp[50], src1.xyz = temp[36] DP3_SAT temp[51].x, src0.xyz, src1.xyz 31: src0.xyz = temp[51] LG2 temp[55].w, src0.x 32: src0.w = temp[55], src1.w = temp[54] MAD temp[56].w, src0.w, src1.w, src0.0 33: src0.w = temp[56] REPL_ALPHA temp[57].x EX2, src0.w 34: src0.w = temp[47], src1.xyz = temp[57] MAD temp[58].x, src0.w__, src1.x__, src0.000 35: src0.xyz = temp[58], src1.xyz = const[1] MAD temp[59].xyz, src0.xxx, src1.xyz, src0.000 36: src0.xyz = temp[44], src0.w = temp[46], src2.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src0.www, src2.xyz 37: BEGIN_TEX; 38: TEX temp[62].x, temp[61].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[60], src1.xyz = temp[62] SEM_WAIT MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 40: src0.xyz = temp[21], src0.w = temp[21] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = input[1] MAD temp[2].z, src0.__x, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[1], src0.w = temp[0], src1.xyz = input[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.z 2: src0.xyz = temp[1], src1.xyz = const[7], src2.xyz = const[8] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[0], src0.w = temp[0] MAD temp[2].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[0].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[1] MAD temp[0].x, src0.x__, src0.11_, src0.00_ 6: src0.xyz = temp[0], src1.xyz = const[11] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[0], src1.xyz = const[10] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[0], src1.xyz = const[9] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 9: BEGIN_TEX; 10: TEX temp[1].xyz, temp[1].xy__, 2D[3]; 11: TEX temp[3], temp[3].xy__, 2D[1]; 12: TEX temp[0], temp[0].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[3], src0.w = const[1], src1.xyz = const[5], src1.w = temp[0] SEM_WAIT DP3 temp[4].x, src0.xyz, src1.xyz MAD temp[2].w, src0.w, src1.w, src0.0 14: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[1], src2.xyz = const[6] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src2.z, src0.0 15: src0.xyz = temp[0], src0.w = const[5] MAD temp[3].xyz, src0.xyz, src0.www, -src0.111 16: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 17: src0.w = temp[1] REPL_ALPHA temp[4].x EX2, src0.w 18: src0.xyz = temp[3], src1.xyz = temp[4] DP3 temp[4].x, src0.xyz, src0.xyz MAD temp[1].w, src1.x, src0.1, src0.1 19: src0.xyz = temp[2], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[5].xyz, srcp.xyz, src2.xxx, src0.000 20: src0.xyz = temp[2] DP3 temp[4].y, -src0.xyz, -src0.xyz 21: src0.xyz = temp[5], src1.xyz = temp[4] DP3 temp[4].y, src0.xyz, src0.xyz RSQ temp[3].w, |src1.y| 22: src0.xyz = temp[5], src1.xyz = temp[4] DP3 temp[4].x, src0.xyz, src0.xyz RSQ temp[4].w, |src1.x| 23: src0.xyz = temp[3], src0.w = temp[4], src2.xyz = temp[4] MAD temp[3].xyz, src0.xyz, src0.www, src0.000 RSQ temp[4].w, |src2.y| 24: src0.xyz = temp[5], src0.w = temp[4] MAD temp[5].xyz, src0.xyz, src0.www, src0.000 25: src0.xyz = temp[2], src0.w = temp[3], src2.xyz = temp[5] MAD temp[2].xyz, -src0.xyz, src0.www, src2.xyz 26: src0.xyz = temp[5], src1.xyz = temp[3] DP3 temp[4].y, src0.xyz, src1.xyz 27: src0.xyz = temp[2], src1.xyz = temp[4] DP3 temp[4].y, src0.xyz, src0.xyz MAX temp[3].w, src1.y, src0.0 28: src0.xyz = temp[4] REPL_ALPHA temp[4].y RSQ, |src0.y| 29: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.yyy, src0.000 30: src0.xyz = temp[2], src1.xyz = temp[3] DP3_SAT temp[2].x, src0.xyz, src1.xyz 31: src0.xyz = temp[2] LG2 temp[4].w, src0.x 32: src0.w = temp[4], src1.w = temp[1] MAD temp[1].w, src0.w, src1.w, src0.0 33: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 34: src0.w = temp[2], src1.xyz = temp[2] MAD temp[2].x, src0.w__, src1.x__, src0.0__ 35: src0.xyz = temp[2], src1.xyz = const[1] MAD temp[2].xyz, src0.xxx, src1.xyz, src0.000 36: src0.xyz = temp[1], src0.w = temp[3], src2.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src0.www, src2.xyz 37: BEGIN_TEX; 38: TEX temp[2].x, temp[4].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[1], src1.xyz = temp[2] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000 40: src0.xyz = temp[1], 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=17************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 8, tex_end: 0 (code_addr: 00000200) 0: xyz: c0 t0 t0 bias-> t2.z (02080020) w: t1 t0 t0 bias-> t0.w (00800001) xyz: c0.xxx 1.0 0.0 op: 00050a81 w: t1.w c0.x c0.x op: 05000009 1: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t0.www 0.0 op: 00050600 w: t0.z t1.x t1.x op: 05000005 2: xyz: t1 c7 c8 bias-> t1.xy (018689c1) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c7.xyz c8.xyz op: 00020200 w: t1.x t1.x t1.x op: 00000000 3: xyz: t0 t0 t0 bias-> t2.xy (01880000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 4: xyz: t1 c4 t0 bias-> t0.y (01000901) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c4.xxx c4.xyz op: 00010280 w: t1.x t1.x t1.x op: 00000000 5: xyz: t1 t0 t0 bias-> t0.x (00800001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 6: xyz: t0 c11 t0 bias-> t1.xy (01840ac0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c11.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 7: xyz: t0 c10 t0 bias-> t3.xy (018c0a80) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c10.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 c9 t0 bias-> t0.xy (01800a40) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c9.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 9, tex_offset: 0, alu_end: 23, tex_end: 2 (code_addr: 000405c9) TEX: TEX t1, t1, texture[3] (00009841) TEX t3, t3, texture[1] (000088c3) TEX t0, t0, texture[2] (00009000) 9: xyz: t3 c5 t0 bias-> t4.x (00900943) w: c1 t0 t0 bias-> t2.w (00880021) xyz: t3.xyz c5.xyz t3.xxx op: 00804200 w: c1.w t0.w 0.0 op: 00040509 10: xyz: t1 c1 c6 bias-> t1.xyz (03866841) w: t3 t0 t0 bias-> t1.w (00840003) xyz: t1.xyz c1.xyz 0.0 op: 00050200 w: t3.w c6.z 0.0 op: 00040409 11: xyz: t0 t0 t0 bias-> t3.xyz (038c0000) w: c5 t0 t0 bias-> (00000025) xyz: t0.xyz c5.www -1.0 op: 000d4600 w: t0.x t0.x t0.x op: 00000000 12: xyz: t2 t4 t0 bias-> t2.xyz (03880102) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t4.xxx 0.0 op: 00050280 w: t2.x t2.x t2.x op: 00000000 13: xyz: t32 t0 t0 bias-> t4.x (00900000) w: t1 t0 t0 bias-> (00000001) xyz: t32.xxx t32.xxx t32.xxx op: 05004081 w: t1.w t32.x t32.x op: 04000009 14: xyz: t3 t4 t0 bias-> t4.x (00900103) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t3.xyz t3.xyz t3.xxx op: 00804000 w: t4.x 1.0 1.0 op: 00044883 15: xyz: t2 c3 c2 sub-> t5.xyz (039628c2) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c2.xxx 0.0 op: 0025048f w: t2.x t2.x t2.x op: 00000000 16: xyz: t2 t0 t0 bias-> t4.y (01100002) w: t0 t0 t0 bias-> (00000000) xyz: -t2.xyz -t2.xyz t2.xxx op: 00805020 w: t2.x t2.x t2.x op: 00000000 17: xyz: t5 t4 t0 bias-> t4.y (01100105) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t5.xyz t5.xyz t5.xxx op: 00804000 w: |t4.y| t5.x t5.x op: 05800044 18: xyz: t5 t4 t0 bias-> t4.x (00900105) w: t0 t0 t0 bias-> t4.w (00900000) xyz: t5.xyz t5.xyz t5.xxx op: 00804000 w: |t4.x| t5.x t5.x op: 05800043 19: xyz: t3 t32 t4 bias-> t3.xyz (038c4003) w: t4 t0 t0 bias-> t4.w (00900004) xyz: t3.xyz t4.www 0.0 op: 00050600 w: |t4.y| t3.x t3.x op: 05800047 20: xyz: t5 t0 t0 bias-> t5.xyz (03940005) w: t4 t0 t0 bias-> (00000004) xyz: t5.xyz t4.www 0.0 op: 00050600 w: t5.x t5.x t5.x op: 00000000 21: xyz: t2 t32 t5 bias-> t2.xyz (03885002) w: t3 t0 t0 bias-> (00000003) xyz: -t2.xyz t3.www t5.xyz op: 00020620 w: t2.x t2.x t2.x op: 00000000 22: xyz: t5 t3 t0 bias-> t4.y (011000c5) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t3.xyz t5.xxx op: 00804200 w: t5.x t5.x t5.x op: 00000000 23: xyz: t2 t4 t0 bias-> t4.y (01100102) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t2.xyz t2.xyz t2.xxx op: 00804000 w: t4.y 0.0 t2.x op: 01800804 24: xyz: t4 t0 t0 bias-> t4.y (01100004) w: t0 t0 t0 bias-> (00000000) xyz: t4.xxx t4.xxx t4.xxx op: 05004081 w: |t4.y| t4.x t4.x op: 05800041 25: xyz: t2 t4 t0 bias-> t2.xyz (03880102) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t4.yyy 0.0 op: 00050300 w: t2.x t2.x t2.x op: 00000000 26: xyz: t2 t3 t0 bias-> t2.x (008800c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t3.xyz t2.xxx op: 40804200 w: t2.x t2.x t2.x op: 00000000 27: xyz: t2 t0 t0 bias-> (00000002) w: t0 t0 t0 bias-> t4.w (00900000) xyz: t2.xxx t2.xxx t2.xxx op: 00004081 w: t2.x t2.x t2.x op: 04800000 28: xyz: t32 t0 t0 bias-> (00000000) w: t4 t1 t0 bias-> t1.w (00840044) xyz: t32.xxx t32.xxx t32.xxx op: 00004081 w: t4.w t1.w 0.0 op: 00040509 29: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t1.w t0.x t0.x op: 04000009 30: xyz: t32 t2 t0 bias-> t2.x (00880080) w: t2 t0 t0 bias-> (00000002) xyz: t2.www t2.xyz 0.0 op: 0005020c w: t32.x t32.x t32.x op: 00000000 31: xyz: t2 c1 t0 bias-> t2.xyz (03880842) w: t0 t0 t0 bias-> (00000000) xyz: t2.xxx c1.xyz 0.0 op: 00050201 w: t2.x t2.x t2.x op: 00000000 32: xyz: t1 t32 t2 bias-> t1.xyz (03842001) w: t3 t0 t0 bias-> (00000003) xyz: t1.xyz t3.www t2.xyz op: 00020600 w: t1.x t1.x t1.x op: 00000000 NODE 2: alu_offset: 33, tex_offset: 3, alu_end: 1, tex_end: 0 (code_addr: 00403061) TEX: TEX t2, t4, texture[0] (00008084) 33: xyz: t1 t2 t0 bias-> t1.xyz (03840081) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t2.xxx 0.0 op: 00050280 w: t1.x t1.x t1.x op: 00000000 34: xyz: t1 t0 t0 bias-> o0.xyz (1c000001) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t1.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[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], CONST[0].xxxx 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[0], src0.w = temp[0], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, 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=18************************************* Hardware program ---------------- 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: t0 c0 t0 bias-> t0.xyz (03800800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xyz c0.xxx 0.0 op: 00050280 w: t0.w c0.x 0.0 op: 00040189 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[5] DCL CONST[0..3] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL IMM[0] FLT32 { 1.0000, 0.0039, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[5].xxxx, CONST[5].yyyy 2: MOV TEMP[1].xyz, CONST[1].xyzx 3: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[0], RECT 4: DP3 TEMP[2].x, TEMP[2].xyzz, IMM[0].xyzz 5: MAD TEMP[2].x, -TEMP[2].xxxx, CONST[3].xxxx, IN[1].zzzz 6: ADD TEMP[2].x, TEMP[2].xxxx, -CONST[2].xxxx 7: MIN TEMP[2].x, TEMP[2].xxxx, CONST[2].yyyy 8: RCP TEMP[3].x, CONST[2].yyyy 9: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 10: MAX TEMP[2].x, TEMP[2].xxxx, IMM[0].wwww 11: POW TEMP[2].x, TEMP[2].xxxx, CONST[0].xxxx 12: MUL TEMP[2].x, TEMP[2].xxxx, CONST[1].wwww 13: MOV TEMP[1].w, TEMP[2].xxxx 14: MOV OUT[0], TEMP[1] 15: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 9: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 10: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 11: RCP temp[3].x, const[2].yyyy; 12: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 13: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 14: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 15: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 16: MOV temp[1].w, temp[2].xxxx; 17: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 9: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 10: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 11: RCP temp[3].x, const[2].yyyy; 12: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 13: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 14: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 15: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 16: MOV temp[1].w, temp[2].xxxx; 17: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 9: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 10: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 11: RCP temp[3].x, const[2].yyyy; 12: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 13: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 14: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 15: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 16: MOV temp[1].w, temp[2].xxxx; 17: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 9: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 10: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 11: RCP temp[3].x, const[2].yyyy; 12: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 13: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 14: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 15: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 16: MOV temp[1].w, temp[2].xxxx; 17: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 9: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 10: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 11: RCP temp[3].x, const[2].yyyy; 12: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 13: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 14: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 15: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 16: MOV temp[1].w, temp[2].xxxx; 17: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: MUL temp[5], temp[0].xyyy, const[9]; 7: TEX temp[6], temp[5], 2D[0]; 8: MOV temp[2].xyz, temp[6]; 9: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 10: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 11: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 12: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 13: RCP temp[3].x, const[2].yyyy; 14: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 15: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 16: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 17: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 18: MOV temp[1].w, temp[2].xxxx; 19: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: MUL temp[5], temp[0].xyyy, const[9]; 7: TEX temp[6], temp[5], 2D[0]; 8: MOV temp[2].xyz, temp[6]; 9: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 10: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, input[1].zzzz; 11: ADD temp[2].x, temp[2].xxxx, -const[2].xxxx; 12: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 13: RCP temp[3].x, const[2].yyyy; 14: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 15: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 16: LG2 temp[7].w, temp[2].xxxx; 17: MUL temp[7].w, temp[7].wwww, const[0].xxxx; 18: EX2 temp[2].x, temp[7].wwww; 19: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 20: MOV temp[1].w, temp[2].xxxx; 21: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[4].w, input[0].___w; 1: MUL temp[4].xy, input[0].xy__, temp[4].ww__; 2: MAD temp[4].xy, temp[4].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[0].x, temp[4].x___; 4: MAD temp[0].y, temp[4]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[1].xyz, const[1].xyz_; 6: MUL temp[5].xy, temp[0].xy__, const[9].xy__; 7: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 8: MOV temp[2].xyz, temp[6].xyz_; 9: DP3 temp[2].x, temp[2].xyz_, const[6].xyz_; 10: MAD temp[2].x, -temp[2].x___, const[3].x___, input[1].z___; 11: ADD temp[2].x, temp[2].x___, -const[2].x___; 12: MIN temp[2].x, temp[2].x___, const[2].y___; 13: RCP temp[3].x, const[2].y___; 14: MUL temp[2].x, temp[2].x___, temp[3].x___; 15: MAX temp[2].x, temp[2].x___, const[6].w___; 16: LG2 temp[7].w, temp[2].___x; 17: MUL temp[7].w, temp[7].___w, const[0].___x; 18: EX2 temp[2].x, temp[7].w___; 19: MUL temp[2].x, temp[2].x___, const[1].w___; 20: MOV temp[1].w, temp[2].___x; 21: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[4].w, input[0].___w; 1: MUL temp[4].xy, input[0].xy__, temp[4].ww__; 2: MAD temp[4].xy, temp[4].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[0].x, temp[4].x___; 4: MAD temp[0].y, temp[4]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[1].xyz, const[1].xyz_; 6: MUL temp[5].xy, temp[0].xy__, const[9].xy__; 7: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 8: MOV temp[2].xyz, temp[6].xyz_; 9: DP3 temp[2].x, temp[2].xyz_, const[6].xyz_; 10: MAD temp[2].x, -temp[2].x___, const[3].x___, input[1].z___; 11: ADD temp[2].x, temp[2].x___, -const[2].x___; 12: MIN temp[2].x, temp[2].x___, const[2].y___; 13: RCP temp[3].x, const[2].y___; 14: MUL temp[2].x, temp[2].x___, temp[3].x___; 15: MAX temp[2].x, temp[2].x___, const[6].w___; 16: LG2 temp[7].w, temp[2].___x; 17: MUL temp[7].w, temp[7].___w, const[0].___x; 18: EX2 temp[2].x, temp[7].w___; 19: MUL temp[2].x, temp[2].x___, const[1].w___; 20: MOV temp[1].w, temp[2].___x; 21: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: MOV temp[15].xyz, temp[14].xyz_; 9: DP3 temp[16].x, temp[15].xyz_, const[6].xyz_; 10: MAD temp[17].x, -temp[16].x___, const[3].x___, input[1].z___; 11: ADD temp[18].x, temp[17].x___, -const[2].x___; 12: MIN temp[19].x, temp[18].x___, const[2].y___; 13: RCP temp[20].x, const[2].y___; 14: MUL temp[21].x, temp[19].x___, temp[20].x___; 15: MAX temp[22].x, temp[21].x___, const[6].w___; 16: LG2 temp[23].w, temp[22].___x; 17: MUL temp[24].w, temp[23].___w, const[0].___x; 18: EX2 temp[25].x, temp[24].w___; 19: MUL temp[26].x, temp[25].x___, const[1].w___; 20: MOV temp[12].w, temp[26].___x; 21: MOV output[0], temp[12]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[6].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, input[1].z___; 10: MIN temp[19].x, (temp[17] - const[2]).x___, const[2].y___; 11: RCP temp[20].x, const[2].y___; 12: MUL temp[21].x, temp[19].x___, temp[20].x___; 13: MAX temp[22].x, temp[21].x___, none.0___; 14: LG2 temp[23].w, temp[22].___x; 15: MUL temp[24].w, temp[23].___w, const[0].___x; 16: EX2 temp[25].x, temp[24].w___; 17: MUL temp[26].x, temp[25].x___, const[1].w___; 18: MOV temp[12].w, temp[26].___x; 19: MOV output[0], temp[12]; CONST[6] = { 1.0000 0.0039 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[6].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, input[1].z___; 10: MIN temp[19].x, (temp[17] - const[2]).x___, const[2].y___; 11: RCP temp[20].x, const[2].y___; 12: MUL temp[21].x, temp[19].x___, temp[20].x___; 13: MAX temp[22].x, temp[21].x___, none.0___; 14: LG2 temp[23].w, temp[22].___x; 15: MUL temp[24].w, temp[23].___w, const[0].___x; 16: EX2 temp[25].x, temp[24].w___; 17: MUL temp[26].x, temp[25].x___, const[1].w___; 18: MOV temp[12].w, temp[26].___x; 19: MOV output[0], temp[12]; CONST[5] = { 1.0000 0.0039 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[6].xy__, const[7].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[4]._x__, const[4]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[8].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[5].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, input[1].z___; 10: MIN temp[19].x, (temp[17] - const[2]).x___, const[2].y___; 11: RCP temp[20].x, const[2].y___; 12: MUL temp[21].x, temp[19].x___, temp[20].x___; 13: MAX temp[22].x, temp[21].x___, none.0___; 14: LG2 temp[23].w, temp[22].___x; 15: MUL temp[24].w, temp[23].___w, const[0].___x; 16: EX2 temp[25].x, temp[24].w___; 17: MUL temp[26].x, temp[25].x___, const[1].w___; 18: MOV temp[12].w, temp[26].___x; 19: MOV output[0], temp[12]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = const[1] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 6: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: src0.xyz = temp[14], src1.xyz = const[5] DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = input[1] MAD temp[17].x, -src0.x__, src1.x__, src2.z__ 10: src0.xyz = const[2], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MIN temp[19].x, srcp.x__, src0.y__ 11: src0.xyz = const[2] REPL_ALPHA temp[20].x RCP, src0.y 12: src0.xyz = temp[19], src1.xyz = temp[20] MAD temp[21].x, src0.x__, src1.x__, src0.000 13: src0.xyz = temp[21] MAX temp[22].x, src0.x__, src0.0__ 14: src0.xyz = temp[22] LG2 temp[23].w, src0.x 15: src0.xyz = const[0], src0.w = temp[23] MAD temp[24].w, src0.w, src0.x, src0.0 16: src0.w = temp[24] REPL_ALPHA temp[25].x EX2, src0.w 17: src0.xyz = temp[25], src0.w = const[1] MAD temp[26].x, src0.x__, src0.w__, src0.000 18: src0.xyz = temp[26] MAD temp[12].w, src0.x, src0.1, src0.0 19: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[0] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 RCP temp[20].w, src1.y 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[14], src1.xyz = const[5] SEM_WAIT DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = input[1] MAD temp[17].x, -src0.x__, src1.x__, src2.z__ 10: src0.xyz = const[2], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MIN temp[19].x, srcp.x__, src0.y__ 11: src0.xyz = temp[19], src0.w = temp[20], src1.xyz = temp[20] MAD temp[21].x, src0.x__, src0.w__, src0.000 12: src0.xyz = temp[21] MAX temp[22].x, src0.x__, src0.0__ 13: src0.xyz = temp[22] LG2 temp[23].w, src0.x 14: src0.xyz = const[0], src0.w = temp[23] MAD temp[24].w, src0.w, src0.x, src0.0 15: src0.w = temp[24] REPL_ALPHA temp[25].x EX2, src0.w 16: src0.xyz = temp[25], src0.w = const[1] MAD temp[26].x, src0.x__, src0.w__, src0.000 17: src0.xyz = temp[26] MAD temp[12].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[0] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 RCP temp[20].w, src1.y 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[14], src1.xyz = const[5] SEM_WAIT DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = input[1] MAD temp[17].x, -src0.x__, src1.x__, src2.z__ 10: src0.xyz = const[2], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MIN temp[19].x, srcp.x__, src0.y__ 11: src0.xyz = temp[19], src0.w = temp[20] MAD temp[21].x, src0.x__, src0.w__, src0.000 12: src0.xyz = temp[21] MAX temp[22].x, src0.x__, src0.0__ 13: src0.xyz = temp[22] LG2 temp[23].w, src0.x 14: src0.xyz = const[0], src0.w = temp[23] MAD temp[24].w, src0.w, src0.x, src0.0 15: src0.w = temp[24] REPL_ALPHA temp[25].x EX2, src0.w 16: src0.xyz = temp[25], src0.w = const[1] MAD temp[26].x, src0.x__, src0.w__, src0.000 17: src0.xyz = temp[26] MAD temp[12].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[1] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[1], src0.w = temp[0], src1.xyz = const[2] MAD temp[0].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.y 2: src0.xyz = temp[0], src1.xyz = const[6], src2.xyz = const[7] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[1].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[0] MAD temp[1].x, src0.x__, src0.11_, src0.00_ 5: src0.xyz = temp[1], src1.xyz = const[8] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 6: BEGIN_TEX; 7: TEX temp[1].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[1], src1.xyz = const[5] SEM_WAIT DP3 temp[0].x, src0.xyz, src1.xyz 9: src0.xyz = temp[0], src1.xyz = const[3], src2.xyz = input[0] MAD temp[0].x, -src0.x__, src1.x__, src2.z__ 10: src0.xyz = const[2], src1.xyz = temp[0], srcp.xyz = (src1 - src0) MIN temp[0].x, srcp.x__, src0.y__ 11: src0.xyz = temp[0], src0.w = temp[0] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 12: src0.xyz = temp[0] MAX temp[0].x, src0.x__, src0.0__ 13: src0.xyz = temp[0] LG2 temp[0].w, src0.x 14: src0.xyz = const[0], src0.w = temp[0] MAD temp[0].w, src0.w, src0.x, src0.0 15: src0.w = temp[0] REPL_ALPHA temp[0].x EX2, src0.w 16: src0.xyz = temp[0], src0.w = const[1] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 17: src0.xyz = temp[0] MAD temp[0].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[2], 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=19************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 5, tex_end: 0 (code_addr: 00000140) 0: xyz: c1 t0 t0 bias-> t2.xyz (03880021) w: t1 t0 t0 bias-> t0.w (00800001) xyz: c1.xyz 1.0 0.0 op: 00050a80 w: t1.w c1.x c1.x op: 05000009 1: xyz: t1 c2 t0 bias-> t0.xy (01800881) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t0.www 0.0 op: 00050600 w: c2.y t1.x t1.x op: 05000004 2: xyz: t0 c6 c7 bias-> t0.xy (01827980) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c6.xyz c7.xyz op: 00020200 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 c4 t0 bias-> t1.y (01040900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xxx c4.xyz op: 00010280 w: t0.x t0.x t0.x op: 00000000 4: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 5: xyz: t1 c8 t0 bias-> t0.xy (01800a01) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c8.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 NODE 1: alu_offset: 6, tex_offset: 0, alu_end: 10, tex_end: 0 (code_addr: 00400286) TEX: TEX t1, t0, texture[0] (00008040) 6: xyz: t1 c5 t0 bias-> t0.x (00800941) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c5.xyz t1.xxx op: 00804200 w: t1.x t1.x t1.x op: 00000000 7: xyz: t0 c3 t0 bias-> t0.x (008008c0) w: t0 t0 t0 bias-> (00000000) xyz: -t0.xyz c3.xyz t0.zzz op: 8002c220 NOP w: t0.x t0.x t0.x op: 00000000 8: xyz: c2 t0 t0 sub-> t0.x (00800022) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c2.yyy c2.xxx op: 0220410f w: c2.x c2.x c2.x op: 00000000 9: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 10: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.0 t0.xxx op: 02804a00 w: t0.x t0.x t0.x op: 00000000 11: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x t0.x t0.x op: 04800000 12: xyz: c0 t0 t0 bias-> (00000020) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c0.xxx c0.xxx c0.xxx op: 00004081 w: t0.w c0.x 0.0 op: 00040009 13: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t0.w t0.x t0.x op: 04000009 14: xyz: t0 t0 t0 bias-> t0.x (00800000) w: c1 t0 t0 bias-> (00000021) xyz: t0.xyz c1.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 15: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x 1.0 0.0 op: 00040880 16: xyz: t2 t0 t0 bias-> o0.xyz (1c000002) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t2.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[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[1] 2: MOV TEMP[1].w, TEMP[0].wwww 3: MUL TEMP[2].x, CONST[1].xxxx, CONST[0].xxxx 4: MUL TEMP[1].xyz, TEMP[0].xyzz, TEMP[2].xxxx 5: MOV OUT[0], TEMP[1] 6: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].wwww; 3: MUL temp[2].x, const[1].xxxx, const[0].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, temp[2].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].___w; 3: MUL temp[2].x, const[1].x___, const[0].x___; 4: MUL temp[1].xyz, temp[0].xyz_, temp[2].xxx_; 5: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MOV temp[1].w, temp[0].___w; 3: MUL temp[2].x, const[1].x___, const[0].x___; 4: MUL temp[1].xyz, temp[0].xyz_, temp[2].xxx_; 5: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MUL temp[4], temp[3], input[1]; 2: MOV temp[5].w, temp[4].___w; 3: MUL temp[6].x, const[1].x___, const[0].x___; 4: MUL temp[5].xyz, temp[4].xyz_, temp[6].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MUL temp[4], temp[3], input[1]; 2: MOV temp[5].w, temp[4].___w; 3: MUL temp[6].x, const[1].x___, const[0].x___; 4: MUL temp[5].xyz, temp[4].xyz_, temp[6].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MUL temp[4], temp[3], input[1]; 2: MOV temp[5].w, temp[4].___w; 3: MUL temp[6].x, const[1].x___, const[0].x___; 4: MUL temp[5].xyz, temp[4].xyz_, temp[6].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MUL temp[4], temp[3], input[1]; 2: MOV temp[5].w, temp[4].___w; 3: MUL temp[6].x, const[1].x___, const[0].x___; 4: MUL temp[5].xyz, temp[4].xyz_, temp[6].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[1], src1.w = input[1] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 2: src0.w = temp[4] MAD temp[5].w, src0.w, src0.1, src0.0 3: src0.xyz = const[1], src1.xyz = const[0] MAD temp[6].x, src0.x__, src1.x__, src0.000 4: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[1], src1.w = input[1] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = const[1], src0.w = temp[4], src1.xyz = const[0] MAD temp[6].x, src0.x__, src1.x__, src0.000 MAD temp[5].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[1], src1.w = input[1] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = const[1], src0.w = temp[4], src1.xyz = const[0] MAD temp[6].x, src0.x__, src1.x__, src0.000 MAD temp[5].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[4], src1.xyz = temp[6] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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 = input[1], src1.w = input[1] 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 = const[1], src0.w = temp[0], src1.xyz = const[0] MAD temp[1].x, src0.x__, src1.x__, src0.0__ MAD temp[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[0], src1.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 5: 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=20************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 3, tex_end: 0 (code_addr: 004000c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.w t1.w 0.0 op: 00040509 1: xyz: c1 c0 t0 bias-> t1.x (00840821) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c1.xyz c0.xyz 0.0 op: 00050200 w: t0.w 1.0 0.0 op: 00040889 2: 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 3: 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 DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], RECT 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], RECT[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], RECT[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], RECT[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX output[0], input[0], RECT[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX output[0], input[0], RECT[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0], input[0], const[0]; 1: TEX temp[1], temp[0], 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], input[0], const[0]; 1: TEX temp[1], temp[0], 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[0].xy, input[0].xy__, const[0].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[2].xy, input[0].xy__, const[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV output[0], temp[3]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[2].xy, input[0].xy__, const[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV output[0], temp[3]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[2].xy, input[0].xy__, const[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV output[0], temp[3]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[2].xy, input[0].xy__, const[0].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MOV output[0], temp[3]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: src0.xyz = temp[3], src0.w = temp[3] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 1: BEGIN_TEX; 2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3] 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: src0.xyz = input[0], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 1: BEGIN_TEX; 2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3] 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: src0.xyz = input[0], src1.xyz = const[0] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 1: BEGIN_TEX; 2: TEX temp[0], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: 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=21************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t0 c0 t0 bias-> t0.xy (01800800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400001) TEX: TEX t0, t0, texture[0] (00008000) 1: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], GENERIC[0], PERSPECTIVE 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 IN[6], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[13] DCL CONST[0..8] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 1.0000, 2.0000, -1.0000, 10.0000} IMM[1] FLT32 { 0.0000, -1.0000, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[13].xxxx, CONST[13].yyyy 2: TEX TEMP[1], IN[1].xyyy, SAMP[3], 2D 3: MUL TEMP[1], TEMP[1], IN[3] 4: MOV TEMP[2].w, TEMP[1].wwww 5: ADD TEMP[3].xyz, IMM[0].xxxx, -TEMP[1].xyzz 6: ADD TEMP[4].x, IMM[0].xxxx, -CONST[8].xxxx 7: MAD TEMP[2].xyz, TEMP[3].xyzz, TEMP[4].xxxx, TEMP[1].xyzz 8: TEX TEMP[1].xyz, IN[1].xyyy, SAMP[2], 2D 9: MAD TEMP[1].xyz, TEMP[1].xyzz, IMM[0].yyyy, IMM[0].zzzz 10: MUL TEMP[3].xyz, TEMP[1].xxxx, IN[5].xyzz 11: MAD TEMP[3].xyz, TEMP[1].yyyy, IN[4].xyzz, TEMP[3].xyzz 12: MAD TEMP[1].xyz, TEMP[1].zzzz, IN[6].xyzz, TEMP[3].xyzz 13: DP3 TEMP[3].x, TEMP[1].xyzz, TEMP[1].xyzz 14: RSQ TEMP[3].x, TEMP[3].xxxx 15: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[3].xxxx 16: RCP TEMP[3].x, IN[2].zzzz 17: MIN TEMP[3].x, TEMP[3].xxxx, IMM[0].wwww 18: MUL TEMP[3].x, CONST[6].xxxx, TEMP[3].xxxx 19: MAD TEMP[3].xy, TEMP[1].xyyy, TEMP[3].xxxx, TEMP[0].xyyy 20: TEX TEMP[3].xyz, TEMP[3].xyyy, SAMP[1], RECT 21: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xyzz 22: DP3 TEMP[3].x, IN[2].xyzz, IN[2].xyzz 23: RSQ TEMP[3].x, TEMP[3].xxxx 24: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[3].xxxx 25: DP3 TEMP[5].x, TEMP[1].xyzz, TEMP[3].xyzz 26: MUL TEMP[5].xyz, TEMP[5].xxxx, TEMP[1].xyzz 27: MUL TEMP[5].xyz, IMM[0].yyyy, TEMP[5].xyzz 28: ADD TEMP[4].xyz, TEMP[3].xyzz, -TEMP[5].xyzz 29: MUL TEMP[5], CONST[2], TEMP[4].xxxx 30: MAD TEMP[5], CONST[3], TEMP[4].yyyy, TEMP[5] 31: MAD TEMP[4], CONST[4], TEMP[4].zzzz, TEMP[5] 32: ADD TEMP[4].xyz, TEMP[4], CONST[5] 33: TEX TEMP[4].xyz, TEMP[4].xyzz, SAMP[0], CUBE 34: ADD TEMP[5].x, IMM[0].xxxx, -CONST[1].xxxx 35: DP3 TEMP[3].x, -TEMP[3].xyzz, TEMP[1].xyzz 36: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 37: ADD TEMP[3].x, IMM[0].xxxx, -TEMP[3].xxxx 38: POW TEMP[3].x, TEMP[3].xxxx, CONST[1].yyyy 39: MAD TEMP[3].x, TEMP[5].xxxx, TEMP[3].xxxx, CONST[1].xxxx 40: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 41: MUL TEMP[3].xyz, TEMP[4].xyzz, TEMP[3].xxxx 42: MUL TEMP[3].xyz, TEMP[3].xyzz, CONST[8].xxxx 43: MAD TEMP[2].xyz, TEMP[3].xyzz, CONST[7].xxxx, TEMP[2].xyzz 44: DP3 TEMP[1].x, TEMP[1].xyzz, IMM[1].xxyy 45: ABS TEMP[1].x, TEMP[1].xxxx 46: ADD TEMP[1].x, IMM[0].xxxx, -TEMP[1].xxxx 47: POW TEMP[1].x, TEMP[1].xxxx, CONST[0].yyyy 48: MUL TEMP[1].x, TEMP[1].xxxx, CONST[0].xxxx 49: MUL TEMP[1].xyz, TEMP[4].xyzz, TEMP[1].xxxx 50: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[8].xxxx 51: MAD TEMP[2].xyz, TEMP[1].xyzz, CONST[7].xxxx, TEMP[2].xyzz 52: MOV OUT[0], TEMP[2] 53: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[7], input[1].xyyy, 2D[2]; 12: MOV temp[1].xyz, temp[7]; 13: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 14: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 15: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 16: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 17: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 18: RSQ temp[3].x, temp[3].xxxx; 19: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 20: RCP temp[3].x, input[2].zzzz; 21: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 22: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 23: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 24: MUL temp[8], temp[3].xyyy, const[18]; 25: TEX temp[9], temp[8], 2D[1]; 26: MOV temp[3].xyz, temp[9]; 27: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 28: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 29: RSQ temp[3].x, temp[3].xxxx; 30: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 31: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 32: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 33: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 34: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 35: MUL temp[5], const[2], temp[4].xxxx; 36: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 37: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 38: ADD temp[4].xyz, temp[4], const[5]; 39: TEX temp[10], temp[4].xyzz, CUBE[0]; 40: MOV temp[4].xyz, temp[10]; 41: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 42: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 45: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 46: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 47: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 48: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 49: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 50: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 51: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 52: ABS temp[1].x, temp[1].xxxx; 53: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 54: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 55: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 56: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 57: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 58: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 59: MOV output[0], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[7], input[1].xyyy, 2D[2]; 12: MOV temp[1].xyz, temp[7]; 13: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 14: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 15: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 16: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 17: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 18: RSQ temp[3].x, |temp[3].xxxx|; 19: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 20: RCP temp[3].x, input[2].zzzz; 21: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 22: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 23: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 24: MUL temp[8], temp[3].xyyy, const[18]; 25: TEX temp[9], temp[8], 2D[1]; 26: MOV temp[3].xyz, temp[9]; 27: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 28: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 29: RSQ temp[3].x, |temp[3].xxxx|; 30: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 31: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 32: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 33: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 34: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 35: MUL temp[5], const[2], temp[4].xxxx; 36: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 37: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 38: ADD temp[4].xyz, temp[4], const[5]; 39: TEX temp[10], temp[4].xyzz, CUBE[0]; 40: MOV temp[4].xyz, temp[10]; 41: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 42: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 45: LG2 temp[11].w, temp[3].xxxx; 46: MUL temp[11].w, temp[11].wwww, const[1].yyyy; 47: EX2 temp[3].x, temp[11].wwww; 48: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 49: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 50: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 51: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 52: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 53: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 54: MOV temp[1].x, |temp[1].xxxx|; 55: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 56: LG2 temp[12].w, temp[1].xxxx; 57: MUL temp[12].w, temp[12].wwww, const[0].yyyy; 58: EX2 temp[1].x, temp[12].wwww; 59: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 60: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 61: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 62: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 63: MOV output[0], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[6].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[6].ww__; 2: MAD temp[6].xy, temp[6].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[0].x, temp[6].x___; 4: MAD temp[0].y, temp[6]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[1], input[1].xy__, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].___w; 8: ADD temp[3].xyz, const[14].xxx_, -temp[1].xyz_; 9: ADD temp[4].x, const[14].x___, -const[8].x___; 10: MAD temp[2].xyz, temp[3].xyz_, temp[4].xxx_, temp[1].xyz_; 11: TEX temp[7].xyz, input[1].xy__, 2D[2]; 12: MOV temp[1].xyz, temp[7].xyz_; 13: MAD temp[1].xyz, temp[1].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[3].xyz, temp[1].xxx_, input[5].xyz_; 15: MAD temp[3].xyz, temp[1].yyy_, input[4].xyz_, temp[3].xyz_; 16: MAD temp[1].xyz, temp[1].zzz_, input[6].xyz_, temp[3].xyz_; 17: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 18: RSQ temp[3].x, |temp[3].x___|; 19: MUL temp[1].xyz, temp[1].xyz_, temp[3].xxx_; 20: RCP temp[3].x, input[2].z___; 21: MIN temp[3].x, temp[3].x___, const[14].w___; 22: MUL temp[3].x, const[6].x___, temp[3].x___; 23: MAD temp[3].xy, temp[1].xy__, temp[3].xx__, temp[0].xy__; 24: MUL temp[8].xy, temp[3].xy__, const[18].xy__; 25: TEX temp[9].xyz, temp[8].xy__, 2D[1]; 26: MOV temp[3].xyz, temp[9].xyz_; 27: MUL temp[2].xyz, temp[2].xyz_, temp[3].xyz_; 28: DP3 temp[3].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[3].x, |temp[3].x___|; 30: MUL temp[3].xyz, input[2].xyz_, temp[3].xxx_; 31: DP3 temp[5].x, temp[1].xyz_, temp[3].xyz_; 32: MUL temp[5].xyz, temp[5].xxx_, temp[1].xyz_; 33: MUL temp[5].xyz, const[14].yyy_, temp[5].xyz_; 34: ADD temp[4].xyz, temp[3].xyz_, -temp[5].xyz_; 35: MUL temp[5].xyz, const[2].xyz_, temp[4].xxx_; 36: MAD temp[5].xyz, const[3].xyz_, temp[4].yyy_, temp[5].xyz_; 37: MAD temp[4].xyz, const[4].xyz_, temp[4].zzz_, temp[5].xyz_; 38: ADD temp[4].xyz, temp[4].xyz_, const[5].xyz_; 39: TEX temp[10].xyz, temp[4].xyz_, CUBE[0]; 40: MOV temp[4].xyz, temp[10].xyz_; 41: ADD temp[5].x, const[14].x___, -const[1].x___; 42: DP3 temp[3].x, -temp[3].xyz_, temp[1].xyz_; 43: MAX temp[3].x, temp[3].x___, const[15].x___; 44: ADD temp[3].x, const[14].x___, -temp[3].x___; 45: LG2 temp[11].w, temp[3].___x; 46: MUL temp[11].w, temp[11].___w, const[1].___y; 47: EX2 temp[3].x, temp[11].w___; 48: MAD temp[3].x, temp[5].x___, temp[3].x___, const[1].x___; 49: MAX temp[3].x, temp[3].x___, const[15].x___; 50: MUL temp[3].xyz, temp[4].xyz_, temp[3].xxx_; 51: MUL temp[3].xyz, temp[3].xyz_, const[8].xxx_; 52: MAD temp[2].xyz, temp[3].xyz_, const[7].xxx_, temp[2].xyz_; 53: DP3 temp[1].x, temp[1].xyz_, const[15].xxy_; 54: MOV temp[1].x, |temp[1].x___|; 55: ADD temp[1].x, const[14].x___, -temp[1].x___; 56: LG2 temp[12].w, temp[1].___x; 57: MUL temp[12].w, temp[12].___w, const[0].___y; 58: EX2 temp[1].x, temp[12].w___; 59: MUL temp[1].x, temp[1].x___, const[0].x___; 60: MUL temp[1].xyz, temp[4].xyz_, temp[1].xxx_; 61: MUL temp[1].xyz, temp[1].xyz_, const[8].xxx_; 62: MAD temp[2].xyz, temp[1].xyz_, const[7].xxx_, temp[2].xyz_; 63: MOV output[0], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[6].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[6].ww__; 2: MAD temp[6].xy, temp[6].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[0].x, temp[6].x___; 4: MAD temp[0].y, temp[6]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[1], input[1].xy__, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].___w; 8: ADD temp[3].xyz, const[14].xxx_, -temp[1].xyz_; 9: ADD temp[4].x, const[14].x___, -const[8].x___; 10: MAD temp[2].xyz, temp[3].xyz_, temp[4].xxx_, temp[1].xyz_; 11: TEX temp[7].xyz, input[1].xy__, 2D[2]; 12: MOV temp[1].xyz, temp[7].xyz_; 13: MAD temp[1].xyz, temp[1].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[3].xyz, temp[1].xxx_, input[5].xyz_; 15: MAD temp[3].xyz, temp[1].yyy_, input[4].xyz_, temp[3].xyz_; 16: MAD temp[1].xyz, temp[1].zzz_, input[6].xyz_, temp[3].xyz_; 17: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 18: RSQ temp[3].x, |temp[3].x___|; 19: MUL temp[1].xyz, temp[1].xyz_, temp[3].xxx_; 20: RCP temp[3].x, input[2].z___; 21: MIN temp[3].x, temp[3].x___, const[14].w___; 22: MUL temp[3].x, const[6].x___, temp[3].x___; 23: MAD temp[3].xy, temp[1].xy__, temp[3].xx__, temp[0].xy__; 24: MUL temp[8].xy, temp[3].xy__, const[18].xy__; 25: TEX temp[9].xyz, temp[8].xy__, 2D[1]; 26: MOV temp[3].xyz, temp[9].xyz_; 27: MUL temp[2].xyz, temp[2].xyz_, temp[3].xyz_; 28: DP3 temp[3].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[3].x, |temp[3].x___|; 30: MUL temp[3].xyz, input[2].xyz_, temp[3].xxx_; 31: DP3 temp[5].x, temp[1].xyz_, temp[3].xyz_; 32: MUL temp[5].xyz, temp[5].xxx_, temp[1].xyz_; 33: MUL temp[5].xyz, const[14].yyy_, temp[5].xyz_; 34: ADD temp[4].xyz, temp[3].xyz_, -temp[5].xyz_; 35: MUL temp[5].xyz, const[2].xyz_, temp[4].xxx_; 36: MAD temp[5].xyz, const[3].xyz_, temp[4].yyy_, temp[5].xyz_; 37: MAD temp[4].xyz, const[4].xyz_, temp[4].zzz_, temp[5].xyz_; 38: ADD temp[4].xyz, temp[4].xyz_, const[5].xyz_; 39: TEX temp[10].xyz, temp[4].xyz_, CUBE[0]; 40: MOV temp[4].xyz, temp[10].xyz_; 41: ADD temp[5].x, const[14].x___, -const[1].x___; 42: DP3 temp[3].x, -temp[3].xyz_, temp[1].xyz_; 43: MAX temp[3].x, temp[3].x___, const[15].x___; 44: ADD temp[3].x, const[14].x___, -temp[3].x___; 45: LG2 temp[11].w, temp[3].___x; 46: MUL temp[11].w, temp[11].___w, const[1].___y; 47: EX2 temp[3].x, temp[11].w___; 48: MAD temp[3].x, temp[5].x___, temp[3].x___, const[1].x___; 49: MAX temp[3].x, temp[3].x___, const[15].x___; 50: MUL temp[3].xyz, temp[4].xyz_, temp[3].xxx_; 51: MUL temp[3].xyz, temp[3].xyz_, const[8].xxx_; 52: MAD temp[2].xyz, temp[3].xyz_, const[7].xxx_, temp[2].xyz_; 53: DP3 temp[1].x, temp[1].xyz_, const[15].xxy_; 54: MOV temp[1].x, |temp[1].x___|; 55: ADD temp[1].x, const[14].x___, -temp[1].x___; 56: LG2 temp[12].w, temp[1].___x; 57: MUL temp[12].w, temp[12].___w, const[0].___y; 58: EX2 temp[1].x, temp[12].w___; 59: MUL temp[1].x, temp[1].x___, const[0].x___; 60: MUL temp[1].xyz, temp[4].xyz_, temp[1].xxx_; 61: MUL temp[1].xyz, temp[1].xyz_, const[8].xxx_; 62: MAD temp[2].xyz, temp[1].xyz_, const[7].xxx_, temp[2].xyz_; 63: MOV output[0], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, const[14].xxx_, -temp[18].xyz_; 9: ADD temp[21].x, const[14].x___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MOV temp[24].xyz, temp[23].xyz_; 13: MAD temp[25].xyz, temp[24].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 15: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 16: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 17: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 18: RSQ temp[30].x, |temp[29].x___|; 19: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 20: RCP temp[32].x, input[2].z___; 21: MIN temp[33].x, temp[32].x___, const[14].w___; 22: MUL temp[34].x, const[6].x___, temp[33].x___; 23: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 24: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 25: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 26: MOV temp[38].xyz, temp[37].xyz_; 27: MUL temp[39].xyz, temp[22].xyz_, temp[38].xyz_; 28: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[41].x, |temp[40].x___|; 30: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 31: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 32: MUL temp[44].xyz, temp[43].xxx_, temp[31].xyz_; 33: MUL temp[45].xyz, const[14].yyy_, temp[44].xyz_; 34: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 35: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 36: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 37: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 38: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 39: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 40: MOV temp[52].xyz, temp[51].xyz_; 41: ADD temp[53].x, const[14].x___, -const[1].x___; 42: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 43: MAX temp[55].x, temp[54].x___, const[15].x___; 44: ADD temp[56].x, const[14].x___, -temp[55].x___; 45: LG2 temp[57].w, temp[56].___x; 46: MUL temp[58].w, temp[57].___w, const[1].___y; 47: EX2 temp[59].x, temp[58].w___; 48: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 49: MAX temp[61].x, temp[60].x___, const[15].x___; 50: MUL temp[62].xyz, temp[52].xyz_, temp[61].xxx_; 51: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 52: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 53: DP3 temp[65].x, temp[31].xyz_, const[15].xxy_; 54: MOV temp[66].x, |temp[65].x___|; 55: ADD temp[67].x, const[14].x___, -temp[66].x___; 56: LG2 temp[68].w, temp[67].___x; 57: MUL temp[69].w, temp[68].___w, const[0].___y; 58: EX2 temp[70].x, temp[69].w___; 59: MUL temp[71].x, temp[70].x___, const[0].x___; 60: MUL temp[72].xyz, temp[52].xyz_, temp[71].xxx_; 61: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 62: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 63: MOV output[0], temp[19]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[14].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[14].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, none.00-1_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; CONST[14] = { 1.0000 2.0000 -1.0000 10.0000 } CONST[15] = { 0.0000 -1.0000 0.0000 0.0000 } CONST[19] = { 0.0000 0.0000 -1.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[14].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[14].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, const[19].xyz_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; CONST[10] = { 1.0000 2.0000 -1.0000 10.0000 } CONST[14] = { 0.0000 0.0000 -1.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[9]._x__, const[9]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[10].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[10].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[13].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, const[14].xyz_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: TEX temp[17], input[1].xy__, 2D[3]; 6: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 7: src0.w = temp[18] MAD temp[19].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 9: src0.xyz = const[8] MAD temp[21].x, src0.1__, src0.111, -src0.x__ 10: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: src0.xyz = temp[23], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 13: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 14: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 15: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 16: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 17: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 18: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 19: src0.xyz = input[2] REPL_ALPHA temp[32].x RCP, src0.z 20: src0.xyz = temp[32], src0.w = const[10] MIN temp[33].x, src0.x__, src0.w__ 21: src0.xyz = const[6], src1.xyz = temp[33] MAD temp[34].x, src0.x__, src1.x__, src0.000 22: src0.xyz = temp[31], src1.xyz = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src1.xx_, src2.xy_ 23: src0.xyz = temp[35], src1.xyz = const[13] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: src0.xyz = temp[22], src1.xyz = temp[37] MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 26: src0.xyz = input[2] DP3 temp[40].x, src0.xyz, src0.xyz 27: src0.xyz = temp[40] REPL_ALPHA temp[41].x RSQ, |src0.x| 28: src0.xyz = input[2], src1.xyz = temp[41] MAD temp[42].xyz, src0.xyz, src1.xxx, src0.000 29: src0.xyz = temp[31], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz 30: src0.xyz = temp[43], src1.xyz = temp[31] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 31: src0.xyz = temp[42], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz 32: src0.xyz = const[2], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 33: src0.xyz = const[3], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz 34: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 35: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: src0.xyz = const[1] MAD temp[53].x, src0.1__, src0.111, -src0.x__ 38: src0.xyz = temp[42], src1.xyz = temp[31] DP3 temp[54].x, -src0.xyz, src1.xyz 39: src0.xyz = temp[54] MAX temp[55].x, src0.x__, src0.0__ 40: src0.xyz = temp[55] MAD temp[56].x, src0.1__, src0.111, -src0.x__ 41: src0.xyz = temp[56] LG2 temp[57].w, src0.x 42: src0.xyz = const[1], src0.w = temp[57] MAD temp[58].w, src0.w, src0.y, src0.0 43: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 44: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].x, src0.x__, src1.x__, src2.x__ 45: src0.xyz = temp[60] MAX temp[61].x, src0.x__, src0.0__ 46: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 47: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 48: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 49: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 50: src0.xyz = temp[65] MAD temp[67].x, src0.1__, |src0.111|, -|src0.x__| 51: src0.xyz = temp[67] LG2 temp[68].w, src0.x 52: src0.xyz = const[0], src0.w = temp[68] MAD temp[69].w, src0.w, src0.y, src0.0 53: src0.w = temp[69] REPL_ALPHA temp[70].x EX2, src0.w 54: src0.xyz = temp[70], src1.xyz = const[0] MAD temp[71].x, src0.x__, src1.x__, src0.000 55: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 56: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 57: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 58: src0.xyz = temp[19], src0.w = temp[19] 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[2] DP3 temp[40].x, src0.xyz, src0.xyz RCP temp[32].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[40] MAD temp[53].x, src0.1__, src0.111, -src0.x__ RSQ temp[41].w, |src1.x| 2: src0.xyz = input[2], src0.w = temp[41], src1.xyz = temp[41], src1.w = temp[32], src2.w = const[10] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 MIN temp[33].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[0] MAD temp[21].x, src0.1__, src0.111, -src0.x__ RCP temp[13].w, src0.w 4: src0.xyz = input[0], src0.w = temp[13], src1.xyz = const[6], src1.w = temp[33] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 MAD temp[34].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 8: BEGIN_TEX; 9: TEX temp[17], input[1].xy__, 2D[3]; 10: TEX temp[23].xyz, input[1].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[23], src0.w = temp[18], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[19].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 16: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 19: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 20: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[31], src0.w = temp[34], src1.xyz = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 23: src0.xyz = temp[42], src1.xyz = temp[31], src2.xyz = temp[65] DP3 temp[54].x, -src0.xyz, src1.xyz MAD temp[67].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[31], src0.w = temp[67], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz LG2 temp[68].w, src0.w 25: src0.xyz = temp[35], src1.xyz = const[13], src2.xyz = temp[54] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 MAX temp[55].w, src2.x, src0.0 26: src0.xyz = temp[43], src0.w = temp[68], src1.xyz = temp[31], src2.xyz = const[0] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 MAD temp[69].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[42], src0.w = temp[55], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[56].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[56], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[57].w, src0.w 29: src0.xyz = const[3], src0.w = temp[69], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[70].w, src0.w 30: src0.xyz = temp[70], src0.w = temp[70], src1.xyz = const[0], src1.w = temp[57], src2.xyz = const[1] MAD temp[71].x, src0.w__, src1.x__, src0.000 MAD temp[58].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 33: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].w, src0.x, src1.x, src2.x 35: src0.xyz = temp[60], src0.w = temp[60] MAX temp[61].x, src0.w__, src0.0__ 36: BEGIN_TEX; 37: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 38: TEX temp[51].xyz, temp[50].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[22], src1.xyz = temp[37] SEM_WAIT MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 42: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[19], src0.w = temp[19] 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[2] DP3 temp[40].x, src0.xyz, src0.xyz RCP temp[32].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[40] MAD temp[53].x, src0.1__, src0.111, -src0.x__ RSQ temp[41].w, |src1.x| 2: src0.xyz = input[2], src0.w = temp[41], src1.w = temp[32], src2.w = const[10] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 MIN temp[33].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[0] MAD temp[21].x, src0.1__, src0.111, -src0.x__ RCP temp[13].w, src0.w 4: src0.xyz = input[0], src0.w = temp[13], src1.xyz = const[6], src1.w = temp[33] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 MAD temp[34].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 8: BEGIN_TEX; 9: TEX temp[17], input[1].xy__, 2D[3]; 10: TEX temp[23].xyz, input[1].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[23], src0.w = temp[18], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[19].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 16: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 19: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 20: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[31], src0.w = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 23: src0.xyz = temp[42], src1.xyz = temp[31], src2.xyz = temp[65] DP3 temp[54].x, -src0.xyz, src1.xyz MAD temp[67].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[31], src0.w = temp[67], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz LG2 temp[68].w, src0.w 25: src0.xyz = temp[35], src1.xyz = const[13], src2.xyz = temp[54] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 MAX temp[55].w, src2.x, src0.0 26: src0.xyz = temp[43], src0.w = temp[68], src1.xyz = temp[31], src2.xyz = const[0] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 MAD temp[69].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[42], src0.w = temp[55], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[56].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[56], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[57].w, src0.w 29: src0.xyz = const[3], src0.w = temp[69], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[70].w, src0.w 30: src0.w = temp[70], src1.xyz = const[0], src1.w = temp[57], src2.xyz = const[1] MAD temp[71].x, src0.w__, src1.x__, src0.000 MAD temp[58].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 33: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].w, src0.x, src1.x, src2.x 35: src0.w = temp[60] MAX temp[61].x, src0.w__, src0.0__ 36: BEGIN_TEX; 37: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 38: TEX temp[51].xyz, temp[50].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[22], src1.xyz = temp[37] SEM_WAIT MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 42: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[19], src0.w = temp[19] 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[1] DP3 temp[0].z, src0.xyz, src0.xyz RCP temp[0].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[0] MAD temp[0].z, src0.__1, src0.__1, -src0.__x RSQ temp[1].w, |src1.z| 2: src0.xyz = input[1], src0.w = temp[1], src1.w = temp[0], src2.w = const[10] MAD temp[1].xyz, src0.xyz, src0.www, src0.000 MIN temp[0].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[6] MAD temp[6].z, src0.__1, src0.__1, -src0.__x RCP temp[1].w, src0.w 4: src0.xyz = input[6], src0.w = temp[1], src1.xyz = const[6], src1.w = temp[0] MAD temp[6].xy, src0.xy_, src0.ww_, src0.00_ MAD temp[0].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[6], src1.xyz = const[11], src2.xyz = const[12] MAD temp[6].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[6], src1.xyz = const[9] MAD temp[7].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[6] MAD temp[7].x, src0.x__, src0.11_, src0.00_ 8: BEGIN_TEX; 9: TEX temp[8], input[0].xy__, 2D[3]; 10: TEX temp[9].xyz, input[0].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[9], src0.w = temp[1], src1.xyz = const[10] MAD temp[8].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[1].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[2] MAD temp[9].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[8], src1.xyz = input[4] MAD temp[4].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[9], src1.xyz = temp[6], src2.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src1.zzz, src2.xyz 16: src0.xyz = temp[8], src1.xyz = input[3], src2.xyz = temp[4] MAD temp[3].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[8], src1.xyz = input[5], src2.xyz = temp[3] MAD temp[3].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[3] DP3 temp[0].x, src0.xyz, src0.xyz 19: src0.xyz = temp[0] REPL_ALPHA temp[0].x RSQ, |src0.x| 20: src0.xyz = temp[3], src1.xyz = temp[0] MAD temp[3].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[3], src0.w = temp[0], src2.xyz = temp[7] MAD temp[0].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[3], src1.xyz = const[14] DP3 temp[4].x, src0.xyz, src1.xyz 23: src0.xyz = temp[1], src1.xyz = temp[3], src2.xyz = temp[4] DP3 temp[4].x, -src0.xyz, src1.xyz MAD temp[0].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = temp[1] DP3 temp[4].y, src0.xyz, src1.xyz LG2 temp[0].w, src0.w 25: src0.xyz = temp[0], src1.xyz = const[13], src2.xyz = temp[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ MAX temp[2].w, src2.x, src0.0 26: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = temp[3], src2.xyz = const[0] MAD temp[3].xyz * 2, src0.yyy, src1.xyz, src0.000 MAD temp[0].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[1], src0.w = temp[2], src1.xyz = temp[3] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[2].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[2], src1.xyz = temp[1] MAD temp[3].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[2].w, src0.w 29: src0.xyz = const[3], src0.w = temp[0], src1.xyz = temp[1], src2.xyz = temp[3] MAD temp[3].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[0].w, src0.w 30: src0.w = temp[0], src1.xyz = const[0], src1.w = temp[2], src2.xyz = const[1] MAD temp[4].x, src0.w__, src1.x__, src0.0__ MAD temp[0].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[1], src2.xyz = temp[3] MAD temp[1].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[0] REPL_ALPHA temp[3].x EX2, src0.w 33: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[1].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[0], src1.xyz = temp[3], src2.xyz = const[1] MAD temp[0].w, src0.z, src1.x, src2.x 35: src0.w = temp[0] MAX temp[0].z, src0.__w, src0.__0 36: BEGIN_TEX; 37: TEX temp[3].xyz, temp[0].xy__, 2D[1]; 38: TEX temp[5].xyz, temp[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[2], src1.xyz = temp[3] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[5], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 42: src0.xyz = temp[2], src1.xyz = const[8] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[0], src1.xyz = const[8] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[0], src1.xyz = const[7], src2.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[2], src1.xyz = const[7], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[0], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=22************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 7, tex_end: 0 (code_addr: 000001c0) 0: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.z t1.x t1.x op: 05000002 1: xyz: c1 t0 t0 bias-> t0.z (02000021) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 1.0 1.0 -c1.xxx op: 00084a95 w: |t0.z| c1.x c1.x op: 05800045 2: xyz: t1 t32 t0 bias-> t1.xyz (03840001) w: t1 t0 c10 bias-> t0.w (0082a001) xyz: t1.xyz t1.www 0.0 op: 00050600 w: t0.w c10.w t1.x op: 0100058a 3: xyz: c8 t0 t0 bias-> t6.z (02180028) w: t6 t0 t0 bias-> t1.w (00840006) xyz: 1.0 1.0 -c8.xxx op: 00084a95 w: t6.w c8.x c8.x op: 05000009 4: xyz: t6 c6 t0 bias-> t6.xy (01980986) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t6.xyz t1.www 0.0 op: 00050600 w: c6.x t0.w 0.0 op: 00040503 5: xyz: t6 c11 c12 bias-> t6.xy (019acac6) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz c11.xyz c12.xyz op: 00020200 w: t6.x t6.x t6.x op: 00000000 6: xyz: t6 c9 t0 bias-> t7.y (011c0a46) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz c9.xxx c9.xyz op: 00010280 w: t6.x t6.x t6.x op: 00000000 7: xyz: t6 t0 t0 bias-> t7.x (009c0006) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz 1.0 0.0 op: 00050a80 w: t6.x t6.x t6.x op: 00000000 NODE 1: alu_offset: 8, tex_offset: 0, alu_end: 24, tex_end: 1 (code_addr: 00020608) TEX: TEX t8, t0, texture[3] (00009a00) TEX t9, t0, texture[2] (00009240) 8: xyz: t8 t2 t0 bias-> t2.xyz (03880088) w: t8 t2 t0 bias-> t1.w (00840088) xyz: t8.xyz t2.xyz 0.0 op: 00050200 w: t8.w t2.w 0.0 op: 00040509 9: xyz: t9 c10 t0 bias-> t8.xyz (03a00a89) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t9.xyz c10.yyy -1.0 op: 000d4300 w: t1.w 1.0 0.0 op: 00040889 10: xyz: t2 t0 t0 bias-> t9.xyz (03a40002) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 1.0 -t2.xyz op: 00080a95 w: t2.x t2.x t2.x op: 00000000 11: xyz: t8 t4 t0 bias-> t4.xyz (03900108) w: t0 t0 t0 bias-> (00000000) xyz: t8.xxx t4.xyz 0.0 op: 00050201 w: t8.x t8.x t8.x op: 00000000 12: xyz: t9 t6 t2 bias-> t2.xyz (03882189) w: t0 t0 t0 bias-> (00000000) xyz: t9.xyz t6.zzz t2.xyz op: 00020380 w: t9.x t9.x t9.x op: 00000000 13: xyz: t8 t3 t4 bias-> t3.xyz (038c40c8) w: t0 t0 t0 bias-> (00000000) xyz: t8.yyy t3.xyz t4.xyz op: 00020202 w: t8.x t8.x t8.x op: 00000000 14: xyz: t8 t5 t3 bias-> t3.xyz (038c3148) w: t0 t0 t0 bias-> (00000000) xyz: t8.zzz t5.xyz t3.xyz op: 00020203 w: t8.x t8.x t8.x op: 00000000 15: xyz: t3 t0 t0 bias-> t0.x (00800003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t3.xyz t3.xxx op: 00804000 w: t3.x t3.x t3.x op: 00000000 16: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: |t0.x| t0.x t0.x op: 05800040 17: xyz: t3 t0 t0 bias-> t3.xyz (038c0003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.xxx 0.0 op: 00050280 w: t3.x t3.x t3.x op: 00000000 18: xyz: t3 t32 t7 bias-> t0.xy (01807003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.www t7.xyz op: 00020600 w: t3.x t3.x t3.x op: 00000000 19: xyz: t3 c14 t0 bias-> t4.x (00900b83) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c14.xyz t3.xxx op: 00804200 w: t3.x t3.x t3.x op: 00000000 20: xyz: t1 t3 t4 bias-> t4.x (009040c1) w: t0 t0 t0 bias-> t0.w (00800000) xyz: -t1.xyz t3.xyz t1.xxx op: 00804220 w: 1.0 |1.0| -|t4.x| op: 0019a891 21: xyz: t3 t1 t0 bias-> t4.y (01100043) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t3.xyz t1.xyz t3.xxx op: 00804200 w: t0.w t3.x t3.x op: 04800009 22: xyz: t0 c13 t4 bias-> t0.xy (01804b40) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz c13.xyz 0.0 op: 00050200 w: t4.x 0.0 t0.x op: 01800806 23: xyz: t4 t3 c0 bias-> t3.xyz (038e00c4) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t4.yyy t3.xyz 0.0 op: 08050202 w: t0.w c0.y 0.0 op: 00040389 24: xyz: t1 t3 t0 bias-> t1.xyz (038400c1) w: t2 t0 t0 bias-> t2.w (00880002) xyz: t1.xyz 1.0 -t3.xyz op: 00090a80 w: 1.0 1.0 -t2.w op: 000a4891 25: xyz: c2 t1 t0 bias-> t3.xyz (038c0062) w: t2 t0 t0 bias-> t2.w (00880002) xyz: c2.xyz t1.xxx 0.0 op: 00050280 w: t2.w c2.x c2.x op: 04800009 26: xyz: c3 t1 t3 bias-> t3.xyz (038c3063) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c3.xyz t1.yyy t3.xyz op: 00020300 w: t0.w c3.x c3.x op: 04000009 27: xyz: t32 c0 c1 bias-> t4.x (00921800) w: t0 t2 t0 bias-> t0.w (00800080) xyz: t0.www c0.xyz 0.0 op: 0005020c w: t2.w c1.y 0.0 op: 0004038a 28: xyz: c4 t1 t3 bias-> t1.xyz (03843064) w: t0 t0 t0 bias-> (00000000) xyz: c4.xyz t1.zzz t3.xyz op: 00020380 w: c4.x c4.x c4.x op: 00000000 29: xyz: t0 t0 t0 bias-> t3.x (008c0000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t0.w t0.x t0.x op: 04000009 30: xyz: t1 c5 t0 bias-> t1.xyz (03840941) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 c5.xyz op: 00010a80 w: t1.x t1.x t1.x op: 00000000 31: xyz: t0 t3 c1 bias-> (000210c0) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.z t3.x c1.x op: 00018182 32: xyz: t32 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 0.0 t32.xxx op: 02804a0c w: t32.x t32.x t32.x op: 00000000 NODE 2: alu_offset: 33, tex_offset: 2, alu_end: 7, tex_end: 1 (code_addr: 004221e1) TEX: TEX t3, t0, texture[1] (000088c0) TEX t5, t1, texture[0] (00008141) 33: xyz: t2 t3 t0 bias-> t1.xyz (038400c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t3.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 34: xyz: t5 t4 t0 bias-> t2.xyz (03880105) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t4.xxx 0.0 op: 00050280 w: t5.x t5.x t5.x op: 00000000 35: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t0.zzz 0.0 op: 00050380 w: t5.x t5.x t5.x op: 00000000 36: xyz: t2 c8 t0 bias-> t2.xyz (03880a02) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c8.xxx 0.0 op: 00050280 w: t2.x t2.x t2.x op: 00000000 37: xyz: t0 c8 t0 bias-> t0.xyz (03800a00) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c8.xxx 0.0 op: 00050280 w: t0.x t0.x t0.x op: 00000000 38: xyz: t0 c7 t1 bias-> t0.xyz (038019c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c7.xxx t1.xyz op: 00020280 w: t0.x t0.x t0.x op: 00000000 39: xyz: t2 c7 t0 bias-> t0.xyz (038009c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c7.xxx t0.xyz op: 00020280 w: t2.x t2.x t2.x op: 00000000 40: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t1 t0 t0 bias-> o0.w (01000001) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[1] 2: MUL TEMP[1].x, TEMP[0].wwww, CONST[1].xxxx 3: MOV TEMP[1].w, TEMP[1].xxxx 4: MUL TEMP[1].xyz, TEMP[0].xyzz, CONST[0].xxxx 5: MOV OUT[0], TEMP[1] 6: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].wwww, const[1].xxxx; 3: MOV temp[1].w, temp[1].xxxx; 4: MUL temp[1].xyz, temp[0].xyzz, const[0].xxxx; 5: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].w___, const[1].x___; 3: MOV temp[1].w, temp[1].___x; 4: MUL temp[1].xyz, temp[0].xyz_, const[0].xxx_; 5: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MUL temp[0], temp[0], input[1]; 2: MUL temp[1].x, temp[0].w___, const[1].x___; 3: MOV temp[1].w, temp[1].___x; 4: MUL temp[1].xyz, temp[0].xyz_, const[0].xxx_; 5: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[3], temp[2], input[1]; 2: MUL temp[4].x, temp[3].w___, const[1].x___; 3: MOV temp[5].w, temp[4].___x; 4: MUL temp[5].xyz, temp[3].xyz_, const[0].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[3], temp[2], input[1]; 2: MUL temp[4].x, temp[3].w___, const[1].x___; 3: MOV temp[5].w, temp[4].___x; 4: MUL temp[5].xyz, temp[3].xyz_, const[0].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[3], temp[2], input[1]; 2: MUL temp[4].x, temp[3].w___, const[1].x___; 3: MOV temp[5].w, temp[4].___x; 4: MUL temp[5].xyz, temp[3].xyz_, const[0].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: MUL temp[3], temp[2], input[1]; 2: MUL temp[4].x, temp[3].w___, const[1].x___; 3: MOV temp[5].w, temp[4].___x; 4: MUL temp[5].xyz, temp[3].xyz_, const[0].xxx_; 5: MOV output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[2], input[0].xy__, 2D[0]; 1: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[1], src1.w = input[1] MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src1.w, src0.0 2: src0.xyz = const[1], src0.w = temp[3] MAD temp[4].x, src0.w__, src0.x__, src0.000 3: src0.xyz = temp[4] MAD temp[5].w, src0.x, src0.1, src0.0 4: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 5: src0.xyz = temp[5], src0.w = temp[5] 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 = input[1], src1.w = input[1] SEM_WAIT MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0], src2.xyz = const[1] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[4].w, src0.w, src2.x, src0.0 4: src0.xyz = temp[4], src0.w = temp[4] MAD temp[5].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[5], src0.w = temp[5] 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 = input[1], src1.w = input[1] SEM_WAIT MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0], src2.xyz = const[1] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[4].w, src0.w, src2.x, src0.0 4: src0.w = temp[4] MAD temp[5].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[5], src0.w = temp[5] 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 = input[1], src1.w = input[1] 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], src1.xyz = const[0], src2.xyz = const[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src2.x, src0.0 4: src0.w = temp[0] MAD temp[0].w, src0.w, src0.1, src0.0 5: 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=23************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 3, tex_end: 0 (code_addr: 004000c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.w t1.w 0.0 op: 00040509 1: xyz: t0 c0 c1 bias-> t0.xyz (03821800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xyz c0.xxx 0.0 op: 00050280 w: t0.w c1.x 0.0 op: 00040309 2: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.w 1.0 0.0 op: 00040889 3: 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], COLOR, COLOR DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TXP TEMP[0], IN[1].xyyw, SAMP[0], RECT 1: MUL TEMP[0], TEMP[0], IN[0] 2: MOV OUT[0], TEMP[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TXP temp[0], input[1].xyyw, RECT[0]; 1: MUL temp[0], temp[0], input[0]; 2: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[1], input[1].xyyw, const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL temp[0], temp[0], input[0]; 3: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[1], input[1].xyyw, const[0]; 1: TXP temp[0], temp[1], 2D[0]; 2: MUL temp[0], temp[0], input[0]; 3: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[1].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL temp[0], temp[0], input[0]; 3: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[1].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[0], temp[1].xy_w, 2D[0]; 2: MUL temp[0], temp[0], input[0]; 3: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3], temp[2].xy_w, 2D[0]; 2: MUL temp[4], temp[3], input[0]; 3: MOV output[0], temp[4]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3], temp[2].xy_w, 2D[0]; 2: MUL temp[4], temp[3], input[0]; 3: MOV output[0], temp[4]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3], temp[2].xy_w, 2D[0]; 2: MUL temp[4], temp[3], input[0]; 3: MOV output[0], temp[4]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[2].xyw, input[1].xy_w, const[0].xy_w; 1: TXP temp[3], temp[2].xy_w, 2D[0]; 2: MUL temp[4], temp[3], input[0]; 3: MOV output[0], temp[4]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: TXP temp[3], temp[2].xy_w, 2D[0]; 2: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[4], src0.w = temp[4] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[3], temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[4], src0.w = temp[4] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[2].xy, src0.xy_, src1.xy_, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[3], temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[4], src0.w = temp[4] 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[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ MAD temp[1].w, src0.w, src1.w, src0.0 1: BEGIN_TEX; 2: TXP temp[1], temp[1].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 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=24************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00000000) 0: xyz: t1 c0 t0 bias-> t1.xy (01840801) w: t1 c0 t0 bias-> t1.w (00840801) xyz: t1.xyz c0.xyz 0.0 op: 00050200 w: t1.w c0.w 0.0 op: 00040509 NODE 1: alu_offset: 1, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00400041) TEX: TXP t1, t1, texture[0] (00018041) 1: xyz: t1 t0 t0 bias-> t0.xyz (03800001) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.xyz t0.xyz 0.0 op: 00050200 w: t1.w t0.w 0.0 op: 00040509 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL OUT[0], COLOR IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxx 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].1111; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.1111; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.111, 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.111, 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.111, 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.111, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=25************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 1.0 1.0 0.0 op: 00050a95 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 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 = temp[1], src0.w = temp[1] 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[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1] 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=26************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL IN[5], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL DCL TEMP[6], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: DP3 TEMP[0].x, IN[1].xyzz, IN[1].xyzz 1: RSQ TEMP[0].x, TEMP[0].xxxx 2: MUL TEMP[0].xyz, IN[1].xyzz, TEMP[0].xxxx 3: TEX TEMP[1].w, IN[0].xyyy, SAMP[0], 2D 4: MUL TEMP[1].x, TEMP[1].wwww, CONST[0].xxxx 5: MAD TEMP[0].xy, TEMP[0].xyzz, TEMP[1].xxxx, IN[0].xyzz 6: TEX TEMP[1], TEMP[0].xyyy, SAMP[3], 2D 7: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[2], 2D 8: ADD TEMP[3].xyz, TEMP[2].xyzz, IMM[0].xxxx 9: MUL TEMP[4].xyz, TEMP[3].xxxx, IN[4].xyzz 10: MAD TEMP[4].xyz, TEMP[3].yyyy, IN[3].xyzz, TEMP[4].xyzz 11: MAD TEMP[4].xyz, TEMP[3].zzzz, IN[5].xyzz, TEMP[4].xyzz 12: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 13: RSQ TEMP[5].x, TEMP[5].xxxx 14: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 15: MAD TEMP[2].xyz, TEMP[4].xyzz, IMM[0].yyyy, IMM[0].yyyy 16: MUL TEMP[4].x, IN[2].xxxx, IMM[0].zzzz 17: FLR TEMP[5].x, TEMP[4].xxxx 18: MOV TEMP[6].x, TEMP[5].xxxx 19: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 20: MUL TEMP[4].x, TEMP[4].xxxx, IMM[0].zzzz 21: FLR TEMP[5].x, TEMP[4].xxxx 22: MOV TEMP[6].y, TEMP[5].xxxx 23: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 24: MOV TEMP[6].z, TEMP[4].xxxx 25: MUL TEMP[6].xy, TEMP[6].xyyy, IMM[0].wwww 26: MOV TEMP[3].xyz, TEMP[6].xyzx 27: TEX TEMP[0].xy, TEMP[0].xyyy, SAMP[1], 2D 28: MOV TEMP[2].w, TEMP[0].xxxx 29: MOV TEMP[3].w, TEMP[0].yyyy 30: MOV OUT[0], TEMP[1] 31: MOV OUT[1], TEMP[2] 32: MOV OUT[2], TEMP[3] 33: END Fragment Program: before compilation # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FLR temp[5].x, temp[4].xxxx; 20: MOV temp[6].x, temp[5].xxxx; 21: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 22: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 23: FLR temp[5].x, temp[4].xxxx; 24: MOV temp[6].y, temp[5].xxxx; 25: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 26: MOV temp[6].z, temp[4].xxxx; 27: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 28: MOV temp[3].xyz, temp[6].xyzx; 29: TEX temp[9], temp[0].xyyy, 2D[1]; 30: MOV temp[0].xy, temp[9]; 31: MOV temp[2].w, temp[0].xxxx; 32: MOV temp[3].w, temp[0].yyyy; 33: MOV output[0], temp[1]; 34: MOV output[1], temp[2]; 35: MOV output[2], temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, |temp[0].xxxx|; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, |temp[5].xxxx|; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FRC temp[5].x, temp[4].xxxx; 20: ADD temp[5].x, temp[4].xxxx, -temp[5]; 21: MOV temp[6].x, temp[5].xxxx; 22: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 23: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 24: FRC temp[5].x, temp[4].xxxx; 25: ADD temp[5].x, temp[4].xxxx, -temp[5]; 26: MOV temp[6].y, temp[5].xxxx; 27: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 28: MOV temp[6].z, temp[4].xxxx; 29: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 30: MOV temp[3].xyz, temp[6].xyzx; 31: TEX temp[9], temp[0].xyyy, 2D[1]; 32: MOV temp[0].xy, temp[9]; 33: MOV temp[2].w, temp[0].xxxx; 34: MOV temp[3].w, temp[0].yyyy; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MOV temp[14].w, temp[13].___w; 5: MUL temp[15].x, temp[14].w___, const[0].x___; 6: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 7: TEX temp[17], temp[16].xy__, 2D[3]; 8: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 9: MOV temp[19].xyz, temp[18].xyz_; 10: ADD temp[20].xyz, temp[19].xyz_, const[1].xxx_; 11: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 12: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 13: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 14: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 15: RSQ temp[25].x, |temp[24].x___|; 16: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 17: MAD temp[27].xyz, temp[26].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[28].x, input[2].x___, const[1].z___; 19: FRC temp[29].x, temp[28].x___; 20: ADD temp[30].x, temp[28].x___, -temp[29].x___; 21: MOV temp[31].x, temp[30].x___; 22: ADD temp[32].x, temp[28].x___, -temp[30].x___; 23: MUL temp[33].x, temp[32].x___, const[1].z___; 24: FRC temp[34].x, temp[33].x___; 25: ADD temp[35].x, temp[33].x___, -temp[34].x___; 26: MOV temp[31].y, temp[35]._x__; 27: ADD temp[36].x, temp[33].x___, -temp[35].x___; 28: MOV temp[37].z, temp[36].__x_; 29: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 30: MOV temp[38].xyz, temp[37].xyz_; 31: TEX temp[39].xy, temp[16].xy__, 2D[1]; 32: MOV temp[40].xy, temp[39].xy__; 33: MOV temp[27].w, temp[40].___x; 34: MOV temp[38].w, temp[40].___y; 35: MOV output[0], temp[17]; 36: MOV output[1], temp[27]; 37: MOV output[2], temp[38]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 1: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 2: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: src0.xyz = const[0], src0.w = temp[13] MAD temp[15].x, src0.w__, src0.x__, src0.000 5: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: src0.xyz = temp[18] MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH 9: src0.xyz = temp[20], src1.xyz = input[4] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 10: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 12: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 13: src0.xyz = temp[24] REPL_ALPHA temp[25].x RSQ, |src0.x| 14: src0.xyz = temp[23], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src1.xxx, src0.000 15: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 16: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 17: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 18: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 19: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].x, src1.x__, src0.111, -srcp.x__ 20: src0.xyz = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.x__, src1.z__, src0.000 21: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 22: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 23: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[36].x, src1.x__, src0.111, -srcp.x__ 24: src0.xyz = temp[36] MAD temp[37].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[31], src0.w = const[1] MAD temp[37].xy, src0.xy_, src0.ww_, src0.000 26: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: src0.xyz = temp[39] MAD temp[27].w, src0.x, src0.1, src0.0 29: src0.xyz = temp[39] MAD temp[38].w, src0.y, src0.1, src0.0 30: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 32: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.xyz = temp[32], src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.xyz = temp[36], src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[2].x, src0.x__, src1.z__, src0.0__ 1: src0.xyz = input[1] DP3 temp[0].z, src0.xyz, src0.xyz 2: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 3: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 4: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[0].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[0] REPL_ALPHA temp[0].z RSQ, |src0.z| 6: src0.w = temp[0], src1.xyz = const[1] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 7: src0.xyz = input[1], src1.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.zz_, src0.00_ 8: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 9: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ 10: src0.xyz = temp[6], src0.w = const[1], src1.xyz = temp[2], src2.xyz = temp[7], srcp.xyz = (src1 - src0) MAD temp[2].xy, src2.xy_, src0.ww_, src0.000 MAD temp[0].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[0] MAD temp[2].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[6].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[6] SEM_WAIT MAD temp[0].z, src0.__w, src0.__x, src0.__0 16: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[0].xy, src0.xy_, src1.zz_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[1].xy, temp[0].xy__, 2D[1]; 19: TEX temp[6].xyz, temp[0].xy__, 2D[2]; 20: TEX temp[0], temp[0].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[6], src1.xyz = temp[1] SEM_WAIT MAD temp[6].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[2].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[6], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[6], src1.xyz = input[3], src2.xyz = temp[1] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[6], src1.xyz = input[5], src2.xyz = temp[1] MAD temp[1].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[1] DP3 temp[3].x, src0.xyz, src0.xyz 26: src0.xyz = temp[3] RSQ temp[3].w, |src0.x| 27: src0.xyz = temp[1], src0.w = temp[3] MAD temp[1].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.HHH, src0.HHH 29: 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 30: src0.xyz = temp[2], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[1], src0.w = temp[2] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 pc=27************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 12, tex_end: 0 (code_addr: 00000300) 0: xyz: t2 c1 t0 bias-> t2.x (00880842) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c1.zzz 0.0 op: 00050380 w: t2.x t2.x t2.x op: 00000000 1: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 2: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 3: xyz: t6 t2 t0 sub-> t7.x (009c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 4: xyz: t6 t2 t0 sub-> (00000086) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t2.x 1.0 -srcp.x op: 000b0883 5: xyz: t0 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: |t0.z| t0.x t0.x op: 05800042 6: xyz: t32 c1 t0 bias-> t2.x (00880840) w: t0 t0 t0 bias-> (00000000) xyz: t0.www c1.zzz 0.0 op: 0005038c w: t32.x t32.x t32.x op: 00000000 7: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz 0.0 op: 00050380 w: t1.x t1.x t1.x op: 00000000 8: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 9: xyz: t6 t2 t0 sub-> t7.y (011c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t6.x t6.x t6.x op: 00000000 10: xyz: t6 t2 t7 sub-> t2.xy (01887086) w: c1 t0 t0 bias-> t0.w (00800021) xyz: t7.xyz c1.www 0.0 op: 00250608 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t32 t0 t0 bias-> t2.z (02080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 1.0 0.0 op: 00050a8c w: t32.x t32.x t32.x op: 00000000 12: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 13, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 0000004d) TEX: TEX t6, t0, texture[0] (00008180) 13: xyz: c0 t0 t0 bias-> t0.z (02000020) w: t6 t0 t0 bias-> (00000006) xyz: t6.www c0.xxx 0.0 op: 0005008c w: c0.x c0.x c0.x op: 00000000 14: xyz: t1 t0 t0 bias-> t0.xy (01800001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz t0.xyz op: 00020380 w: t1.x t1.x t1.x op: 00000000 NODE 2: alu_offset: 15, tex_offset: 1, alu_end: 10, tex_end: 2 (code_addr: 0044128f) TEX: TEX t1, t0, texture[1] (00008840) TEX t6, t0, texture[2] (00009180) TEX t0, t0, texture[3] (00009800) 15: xyz: t6 t1 t0 bias-> t6.xyz (03980046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t1.x 1.0 0.0 op: 00040883 16: xyz: t6 t4 t1 bias-> t1.xyz (03841106) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t6.xxx t4.xyz 0.0 op: 00050201 w: t1.y 1.0 0.0 op: 00040887 17: xyz: t6 t3 t1 bias-> t1.xyz (038410c6) w: t0 t0 t0 bias-> (00000000) xyz: t6.yyy t3.xyz t1.xyz op: 00020202 w: t6.x t6.x t6.x op: 00000000 18: xyz: t6 t5 t1 bias-> t1.xyz (03841146) w: t0 t0 t0 bias-> (00000000) xyz: t6.zzz t5.xyz t1.xyz op: 00020203 w: t6.x t6.x t6.x op: 00000000 19: xyz: t1 t0 t0 bias-> t3.x (008c0001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 20: xyz: t3 t0 t0 bias-> (00000003) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xxx t3.xxx t3.xxx op: 00004081 w: |t3.x| t3.x t3.x op: 05800040 21: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t3 t0 t0 bias-> (00000003) xyz: t1.xyz t3.www 0.0 op: 00050600 w: t1.x t1.x t1.x op: 00000000 22: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 0.5 0.5 op: 00058b00 w: t1.x t1.x t1.x op: 00000000 23: 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 24: xyz: t2 t0 t0 bias-> o2.xyz (5c000002) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 25: xyz: t1 t0 t0 bias-> o1.xyz (3c000001) w: t2 t0 t0 bias-> o1.w (03000002) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: TEX TEMP[0], IN[0].xyyy, SAMP[2], 2D 1: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[1], 2D 2: ADD TEMP[2].xyz, TEMP[1].xyzz, IMM[0].xxxx 3: MUL TEMP[3].xyz, TEMP[2].xxxx, IN[3].xyzz 4: MAD TEMP[3].xyz, TEMP[2].yyyy, IN[2].xyzz, TEMP[3].xyzz 5: MAD TEMP[3].xyz, TEMP[2].zzzz, IN[4].xyzz, TEMP[3].xyzz 6: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 7: RSQ TEMP[4].x, TEMP[4].xxxx 8: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 9: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].yyyy, IMM[0].yyyy 10: MUL TEMP[3].x, IN[1].xxxx, IMM[0].zzzz 11: FLR TEMP[4].x, TEMP[3].xxxx 12: MOV TEMP[5].x, TEMP[4].xxxx 13: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 14: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].zzzz 15: FLR TEMP[4].x, TEMP[3].xxxx 16: MOV TEMP[5].y, TEMP[4].xxxx 17: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 18: MOV TEMP[5].z, TEMP[3].xxxx 19: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].wwww 20: MOV TEMP[2].xyz, TEMP[5].xyzx 21: TEX TEMP[3].xy, IN[0].xyyy, SAMP[0], 2D 22: MOV TEMP[1].w, TEMP[3].xxxx 23: MOV TEMP[2].w, TEMP[3].yyyy 24: MOV OUT[0], TEMP[0] 25: MOV OUT[1], TEMP[1] 26: MOV OUT[2], TEMP[2] 27: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, temp[4].xxxx; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FLR temp[4].x, temp[3].xxxx; 13: MOV temp[5].x, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 16: FLR temp[4].x, temp[3].xxxx; 17: MOV temp[5].y, temp[4].xxxx; 18: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 19: MOV temp[5].z, temp[3].xxxx; 20: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 21: MOV temp[2].xyz, temp[5].xyzx; 22: TEX temp[7], input[0].xyyy, 2D[0]; 23: MOV temp[3].xy, temp[7]; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[2].w, temp[3].yyyy; 26: MOV output[0], temp[0]; 27: MOV output[1], temp[1]; 28: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, |temp[4].xxxx|; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FRC temp[4].x, temp[3].xxxx; 13: ADD temp[4].x, temp[3].xxxx, -temp[4]; 14: MOV temp[5].x, temp[4].xxxx; 15: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 16: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 17: FRC temp[4].x, temp[3].xxxx; 18: ADD temp[4].x, temp[3].xxxx, -temp[4]; 19: MOV temp[5].y, temp[4].xxxx; 20: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 21: MOV temp[5].z, temp[3].xxxx; 22: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 23: MOV temp[2].xyz, temp[5].xyzx; 24: TEX temp[7], input[0].xyyy, 2D[0]; 25: MOV temp[3].xy, temp[7]; 26: MOV temp[1].w, temp[3].xxxx; 27: MOV temp[2].w, temp[3].yyyy; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: MOV temp[10].xyz, temp[9].xyz_; 3: ADD temp[11].xyz, temp[10].xyz_, const[0].xxx_; 4: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 5: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 6: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 7: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 8: RSQ temp[16].x, |temp[15].x___|; 9: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 10: MAD temp[18].xyz, temp[17].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[19].x, input[1].x___, const[0].z___; 12: FRC temp[20].x, temp[19].x___; 13: ADD temp[21].x, temp[19].x___, -temp[20].x___; 14: MOV temp[22].x, temp[21].x___; 15: ADD temp[23].x, temp[19].x___, -temp[21].x___; 16: MUL temp[24].x, temp[23].x___, const[0].z___; 17: FRC temp[25].x, temp[24].x___; 18: ADD temp[26].x, temp[24].x___, -temp[25].x___; 19: MOV temp[22].y, temp[26]._x__; 20: ADD temp[27].x, temp[24].x___, -temp[26].x___; 21: MOV temp[28].z, temp[27].__x_; 22: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 23: MOV temp[29].xyz, temp[28].xyz_; 24: TEX temp[30].xy, input[0].xy__, 2D[0]; 25: MOV temp[31].xy, temp[30].xy__; 26: MOV temp[18].w, temp[31].___x; 27: MOV temp[29].w, temp[31].___y; 28: MOV output[0], temp[8]; 29: MOV output[1], temp[18]; 30: MOV output[2], temp[29]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: src0.xyz = temp[9] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH 3: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 4: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 5: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 6: src0.xyz = temp[14] DP3 temp[15].x, src0.xyz, src0.xyz 7: src0.xyz = temp[15] REPL_ALPHA temp[16].x RSQ, |src0.x| 8: src0.xyz = temp[14], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src1.xxx, src0.000 9: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 10: src0.xyz = input[1], src1.xyz = const[0] MAD temp[19].x, src0.x__, src1.z__, src0.000 11: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 12: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 13: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].x, src1.x__, src0.111, -srcp.x__ 14: src0.xyz = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.x__, src1.z__, src0.000 15: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 16: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 17: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[27].x, src1.x__, src0.111, -srcp.x__ 18: src0.xyz = temp[27] MAD temp[28].z, src0.__x, src0.111, src0.000 19: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: src0.xyz = temp[30] MAD temp[18].w, src0.x, src0.1, src0.0 23: src0.xyz = temp[30] MAD temp[29].w, src0.y, src0.1, src0.0 24: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 25: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 26: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[23], src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.xyz = temp[27], src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[0].xy__, 2D[2]; 2: TEX temp[6].xyz, input[0].xy__, 2D[1]; 3: TEX temp[0].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[0] SEM_WAIT MAD temp[1].x, src0.x__, src1.z__, src0.0__ MAD temp[1].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[0].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[1] FRC temp[6].x, src0.x__ 7: src0.xyz = temp[0], src1.xyz = input[3] MAD temp[3].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 9: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[2].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[0], src1.xyz = input[2], src2.xyz = temp[3] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[2], src1.xyz = const[0] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 12: src0.xyz = temp[0], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[0].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[2] FRC temp[1].x, src0.x__ 14: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[0], srcp.xyz = (src1 - src0) DP3 temp[1].y, src2.xyz, src2.xyz MAD temp[2].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ RSQ temp[3].w, |src2.y| 16: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[0], src0.w = temp[3] MAD temp[0].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[7], src0.w = const[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[5], src0.w = temp[5] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[0], src0.w = temp[1] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[1], src0.w = temp[0] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=28************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 19, tex_end: 2 (code_addr: 004404c0) TEX: TEX t5, t0, texture[2] (00009140) TEX t6, t0, texture[1] (00008980) TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.zzz 0.0 op: 00050380 w: t0.x 1.0 0.0 op: 00040886 1: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t0.y 1.0 0.0 op: 00040884 2: xyz: t1 t0 t0 bias-> t6.x (00980001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xxx t1.xxx op: 04804080 w: t1.x t1.x t1.x op: 00000000 3: xyz: t0 t3 t0 bias-> t3.xyz (038c00c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t3.xyz 0.0 op: 00050201 w: t0.x t0.x t0.x op: 00000000 4: xyz: t6 t1 t0 sub-> t7.x (009c0046) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 5: xyz: t6 t1 t0 sub-> (00000046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 t2 t3 bias-> t1.xyz (03843080) w: t0 t0 t0 bias-> (00000000) xyz: t0.yyy t2.xyz t3.xyz op: 00020202 w: t0.x t0.x t0.x op: 00000000 7: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t2 t0 t0 bias-> (00000002) xyz: t2.www c0.zzz 0.0 op: 0005038c w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 t4 t1 bias-> t0.xyz (03801100) w: t0 t0 t0 bias-> (00000000) xyz: t0.zzz t4.xyz t1.xyz op: 00020203 w: t0.x t0.x t0.x op: 00000000 9: xyz: t2 t0 t0 bias-> t1.x (00840002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 10: xyz: t1 t2 t0 sub-> t1.y (01040081) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz t0.xyz t1.xxx op: 00a04408 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t1 t2 t1 sub-> t7.y (011c1081) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: |t1.y| t1.x t1.x op: 05800047 12: xyz: t0 t0 t0 bias-> t1.z (02040000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 13: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t3 t0 t0 bias-> (00000003) xyz: t0.xyz t3.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 14: xyz: t7 t0 t0 bias-> t1.xy (01840007) w: c0 t0 t0 bias-> (00000020) xyz: t7.xyz c0.www 0.0 op: 00050600 w: t7.x t7.x t7.x op: 00000000 15: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.5 0.5 op: 00058b00 w: t0.x t0.x t0.x op: 00000000 16: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 17: xyz: t5 t0 t0 bias-> o0.xyz (1c000005) w: t5 t0 t0 bias-> o0.w (01000005) xyz: t5.xyz 1.0 0.0 op: 00050a80 w: t5.w 1.0 0.0 op: 00040889 18: xyz: t0 t0 t0 bias-> o1.xyz (3c000000) w: t1 t0 t0 bias-> o1.w (03000001) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 19: xyz: t1 t0 t0 bias-> o2.xyz (5c000001) w: t0 t0 t0 bias-> o2.w (05000000) xyz: t1.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[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[1] 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[1], input[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], temp[1], input[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], temp[1], input[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], temp[1], input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[0], src0.w = temp[0], src1.xyz = input[1], src1.w = input[1] 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=29************************************* Hardware program ---------------- 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: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.w t1.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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[7..8] DCL CONST[4..6] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM[0] FLT32 { 1.0000, 0.0039, 0.0000, 2.0000} IMM[1] FLT32 { -1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[8].xxxx, CONST[8].yyyy 2: RCP TEMP[1].x, IN[1].zzzz 3: MUL TEMP[1].xy, IN[1].xyyy, TEMP[1].xxxx 4: MOV TEMP[1].z, CONST[4].xxxx 5: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[1], RECT 6: DP3 TEMP[2].x, TEMP[2].xyzz, IMM[0].xyzz 7: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 8: ADD TEMP[1].xyz, CONST[7].xyzz, -TEMP[1].xyzz 9: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[6].xxxx 10: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[3], RECT 11: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[5].xyzz 12: DP3 TEMP[3].x, TEMP[1].xyzz, TEMP[1].xyzz 13: RSQ TEMP[3].x, TEMP[3].xxxx 14: MUL TEMP[3].xyz, TEMP[1].xyzz, TEMP[3].xxxx 15: TEX TEMP[4].xyz, TEMP[0].xyyy, SAMP[2], RECT 16: MAD TEMP[4].xyz, TEMP[4].xyzz, IMM[0].wwww, IMM[1].xxxx 17: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[4].xyzz 18: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].yyyy 19: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 20: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 21: TEX TEMP[1].x, TEMP[1].xxxx, SAMP[0], 1D 22: MUL TEMP[1].xyz, TEMP[2].xyzz, TEMP[1].xxxx 23: MOV OUT[0], TEMP[1] 24: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[1]; 9: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 13: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 14: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 15: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 18: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 19: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 21: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 22: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 23: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 24: TEX temp[1].x, temp[1].xxxx, 1D[0]; 25: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 26: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[1]; 9: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 13: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 14: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 15: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 18: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 19: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 21: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 22: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 23: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 24: TEX temp[1].x, temp[1].xxxx, 1D[0]; 25: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 26: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[1]; 9: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 13: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 14: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 15: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 18: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 19: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 21: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 22: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 23: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 24: TEX temp[1].x, temp[1].xxxx, 1D[0]; 25: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 26: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[1]; 9: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 13: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 14: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 15: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 18: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 19: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 21: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 22: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 23: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 24: TEX temp[1].x, temp[1].xxxx, 1D[0]; 25: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 26: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[1]; 9: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 13: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 14: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 15: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 18: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 19: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 20: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 21: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 22: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 23: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 24: TEX temp[1].x, temp[1].xxxx, 1D[0]; 25: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 26: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: MUL temp[6], temp[0].xyyy, const[13]; 9: TEX temp[7], temp[6], 2D[1]; 10: MOV temp[2].xyz, temp[7]; 11: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 13: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 14: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 15: MUL temp[8], temp[0].xyyy, const[14]; 16: TEX temp[9], temp[8], 2D[3]; 17: MOV temp[2].xyz, temp[9]; 18: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 19: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 20: RSQ temp[3].x, temp[3].xxxx; 21: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 22: MUL temp[10], temp[0].xyyy, const[15]; 23: TEX temp[11], temp[10], 2D[2]; 24: MOV temp[4].xyz, temp[11]; 25: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 26: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 27: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 28: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 29: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 30: TEX temp[12], temp[1].xxxx, 1D[0]; 31: MOV temp[1].x, temp[12]; 32: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 33: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[11].xyz0, const[12].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[8].xxxx, const[8].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[4].xxxx; 8: MUL temp[6], temp[0].xyyy, const[13]; 9: TEX temp[7], temp[6], 2D[1]; 10: MOV temp[2].xyz, temp[7]; 11: DP3 temp[2].x, temp[2].xyzz, const[9].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 13: ADD temp[1].xyz, const[7].xyzz, -temp[1].xyzz; 14: MUL temp[1].xyz, temp[1].xyzz, const[6].xxxx; 15: MUL temp[8], temp[0].xyyy, const[14]; 16: TEX temp[9], temp[8], 2D[3]; 17: MOV temp[2].xyz, temp[9]; 18: MUL temp[2].xyz, temp[2].xyzz, const[5].xyzz; 19: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 20: RSQ temp[3].x, |temp[3].xxxx|; 21: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 22: MUL temp[10], temp[0].xyyy, const[15]; 23: TEX temp[11], temp[10], 2D[2]; 24: MOV temp[4].xyz, temp[11]; 25: MAD temp[4].xyz, temp[4].xyzz, const[9].wwww, const[10].xxxx; 26: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 27: MAX temp[3].x, temp[3].xxxx, const[10].yyyy; 28: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 29: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 30: TEX temp[12], temp[1].xxxx, 1D[0]; 31: MOV temp[1].x, temp[12]; 32: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 33: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[5].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[5].xy, temp[5].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[0].x, temp[5].x___; 4: MAD temp[0].y, temp[5]._y__, const[8]._x__, const[8]._y__; 5: RCP temp[1].x, input[1].z___; 6: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 7: MOV temp[1].z, const[4].__x_; 8: MUL temp[6].xy, temp[0].xy__, const[13].xy__; 9: TEX temp[7].xyz, temp[6].xy__, 2D[1]; 10: MOV temp[2].xyz, temp[7].xyz_; 11: DP3 temp[2].x, temp[2].xyz_, const[9].xyz_; 12: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 13: ADD temp[1].xyz, const[7].xyz_, -temp[1].xyz_; 14: MUL temp[1].xyz, temp[1].xyz_, const[6].xxx_; 15: MUL temp[8].xy, temp[0].xy__, const[14].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[3]; 17: MOV temp[2].xyz, temp[9].xyz_; 18: MUL temp[2].xyz, temp[2].xyz_, const[5].xyz_; 19: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 20: RSQ temp[3].x, |temp[3].x___|; 21: MUL temp[3].xyz, temp[1].xyz_, temp[3].xxx_; 22: MUL temp[10].xy, temp[0].xy__, const[15].xy__; 23: TEX temp[11].xyz, temp[10].xy__, 2D[2]; 24: MOV temp[4].xyz, temp[11].xyz_; 25: MAD temp[4].xyz, temp[4].xyz_, const[9].www_, const[10].xxx_; 26: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 27: MAX temp[3].x, temp[3].x___, const[10].y___; 28: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 29: DP3 temp[1].x, temp[1].xyz_, temp[1].xyz_; 30: TEX temp[12].x, temp[1].x___, 1D[0]; 31: MOV temp[1].x, temp[12].x___; 32: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 33: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[5].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[5].xy, temp[5].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[0].x, temp[5].x___; 4: MAD temp[0].y, temp[5]._y__, const[8]._x__, const[8]._y__; 5: RCP temp[1].x, input[1].z___; 6: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 7: MOV temp[1].z, const[4].__x_; 8: MUL temp[6].xy, temp[0].xy__, const[13].xy__; 9: TEX temp[7].xyz, temp[6].xy__, 2D[1]; 10: MOV temp[2].xyz, temp[7].xyz_; 11: DP3 temp[2].x, temp[2].xyz_, const[9].xyz_; 12: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 13: ADD temp[1].xyz, const[7].xyz_, -temp[1].xyz_; 14: MUL temp[1].xyz, temp[1].xyz_, const[6].xxx_; 15: MUL temp[8].xy, temp[0].xy__, const[14].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[3]; 17: MOV temp[2].xyz, temp[9].xyz_; 18: MUL temp[2].xyz, temp[2].xyz_, const[5].xyz_; 19: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 20: RSQ temp[3].x, |temp[3].x___|; 21: MUL temp[3].xyz, temp[1].xyz_, temp[3].xxx_; 22: MUL temp[10].xy, temp[0].xy__, const[15].xy__; 23: TEX temp[11].xyz, temp[10].xy__, 2D[2]; 24: MOV temp[4].xyz, temp[11].xyz_; 25: MAD temp[4].xyz, temp[4].xyz_, const[9].www_, const[10].xxx_; 26: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 27: MAX temp[3].x, temp[3].x___, const[10].y___; 28: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 29: DP3 temp[1].x, temp[1].xyz_, temp[1].xyz_; 30: TEX temp[12].x, temp[1].x___, 1D[0]; 31: MOV temp[1].x, temp[12].x___; 32: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 33: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[8]._x__, const[8]._y__; 5: RCP temp[17].x, input[1].z___; 6: MUL temp[18].xy, input[1].xy__, temp[17].xx__; 7: MOV temp[18].z, const[4].__x_; 8: MUL temp[19].xy, temp[16].xy__, const[13].xy__; 9: TEX temp[20].xyz, temp[19].xy__, 2D[1]; 10: MOV temp[21].xyz, temp[20].xyz_; 11: DP3 temp[22].x, temp[21].xyz_, const[9].xyz_; 12: MUL temp[23].xyz, temp[18].xyz_, temp[22].xxx_; 13: ADD temp[24].xyz, const[7].xyz_, -temp[23].xyz_; 14: MUL temp[25].xyz, temp[24].xyz_, const[6].xxx_; 15: MUL temp[26].xy, temp[16].xy__, const[14].xy__; 16: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 17: MOV temp[28].xyz, temp[27].xyz_; 18: MUL temp[29].xyz, temp[28].xyz_, const[5].xyz_; 19: DP3 temp[30].x, temp[25].xyz_, temp[25].xyz_; 20: RSQ temp[31].x, |temp[30].x___|; 21: MUL temp[32].xyz, temp[25].xyz_, temp[31].xxx_; 22: MUL temp[33].xy, temp[16].xy__, const[15].xy__; 23: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 24: MOV temp[35].xyz, temp[34].xyz_; 25: MAD temp[36].xyz, temp[35].xyz_, const[9].www_, const[10].xxx_; 26: DP3 temp[37].x, temp[32].xyz_, temp[36].xyz_; 27: MAX temp[38].x, temp[37].x___, const[10].y___; 28: MUL temp[39].xyz, temp[29].xyz_, temp[38].xxx_; 29: DP3 temp[40].x, temp[25].xyz_, temp[25].xyz_; 30: TEX temp[41].x, temp[40].x___, 1D[0]; 31: MOV temp[42].x, temp[41].x___; 32: MUL temp[43].xyz, temp[39].xyz_, temp[42].xxx_; 33: MOV output[0], temp[43]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[8]._x__, const[8]._y__; 5: RCP temp[17].x, input[1].z___; 6: MUL temp[18].xy, input[1].xy__, temp[17].xx__; 7: MOV temp[18].z, const[4].__x_; 8: MUL temp[19].xy, temp[16].xy__, const[13].xy__; 9: TEX temp[20].xyz, temp[19].xy__, 2D[1]; 10: DP3 temp[22].x, temp[20].xyz_, const[9].xyz_; 11: MUL temp[23].xyz, temp[18].xyz_, temp[22].xxx_; 12: MUL temp[25].xyz, (const[7] - temp[23]).xyz_, const[6].xxx_; 13: MUL temp[26].xy, temp[16].xy__, const[14].xy__; 14: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 15: MUL temp[29].xyz, temp[27].xyz_, const[5].xyz_; 16: DP3 temp[30].x, temp[25].xyz_, temp[25].xyz_; 17: RSQ temp[31].x, |temp[30].x___|; 18: MUL temp[32].xyz, temp[25].xyz_, temp[31].xxx_; 19: MUL temp[33].xy, temp[16].xy__, const[15].xy__; 20: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 21: MAD temp[36].xyz, temp[34].xyz_, const[9].www_, none.-1-1-1_; 22: DP3 temp[37].x, temp[32].xyz_, temp[36].xyz_; 23: MAX temp[38].x, temp[37].x___, none.0___; 24: MUL temp[39].xyz, temp[29].xyz_, temp[38].xxx_; 25: DP3 temp[40].x, temp[25].xyz_, temp[25].xyz_; 26: TEX temp[41].x, temp[40].x___, 1D[0]; 27: MUL temp[43].xyz, temp[39].xyz_, temp[41].xxx_; 28: MOV output[0], temp[43]; CONST[9] = { 1.0000 0.0039 0.0000 2.0000 } CONST[10] = { -1.0000 0.0000 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[8]._x__, const[8]._y__; 5: RCP temp[17].x, input[1].z___; 6: MUL temp[18].xy, input[1].xy__, temp[17].xx__; 7: MOV temp[18].z, const[4].__x_; 8: MUL temp[19].xy, temp[16].xy__, const[13].xy__; 9: TEX temp[20].xyz, temp[19].xy__, 2D[1]; 10: DP3 temp[22].x, temp[20].xyz_, const[9].xyz_; 11: MUL temp[23].xyz, temp[18].xyz_, temp[22].xxx_; 12: MUL temp[25].xyz, (const[7] - temp[23]).xyz_, const[6].xxx_; 13: MUL temp[26].xy, temp[16].xy__, const[14].xy__; 14: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 15: MUL temp[29].xyz, temp[27].xyz_, const[5].xyz_; 16: DP3 temp[30].x, temp[25].xyz_, temp[25].xyz_; 17: RSQ temp[31].x, |temp[30].x___|; 18: MUL temp[32].xyz, temp[25].xyz_, temp[31].xxx_; 19: MUL temp[33].xy, temp[16].xy__, const[15].xy__; 20: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 21: MAD temp[36].xyz, temp[34].xyz_, const[9].www_, none.-1-1-1_; 22: DP3 temp[37].x, temp[32].xyz_, temp[36].xyz_; 23: MAX temp[38].x, temp[37].x___, none.0___; 24: MUL temp[39].xyz, temp[29].xyz_, temp[38].xxx_; 25: DP3 temp[40].x, temp[25].xyz_, temp[25].xyz_; 26: TEX temp[41].x, temp[40].x___, 1D[0]; 27: MUL temp[43].xyz, temp[39].xyz_, temp[41].xxx_; 28: MOV output[0], temp[43]; CONST[5] = { 1.0000 0.0039 0.0000 2.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[6].xy__, const[7].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[4]._x__, const[4]._y__; 5: RCP temp[17].x, input[1].z___; 6: MUL temp[18].xy, input[1].xy__, temp[17].xx__; 7: MOV temp[18].z, const[0].__x_; 8: MUL temp[19].xy, temp[16].xy__, const[8].xy__; 9: TEX temp[20].xyz, temp[19].xy__, 2D[1]; 10: DP3 temp[22].x, temp[20].xyz_, const[5].xyz_; 11: MUL temp[23].xyz, temp[18].xyz_, temp[22].xxx_; 12: MUL temp[25].xyz, (const[3] - temp[23]).xyz_, const[2].xxx_; 13: MUL temp[26].xy, temp[16].xy__, const[9].xy__; 14: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 15: MUL temp[29].xyz, temp[27].xyz_, const[1].xyz_; 16: DP3 temp[30].x, temp[25].xyz_, temp[25].xyz_; 17: RSQ temp[31].x, |temp[30].x___|; 18: MUL temp[32].xyz, temp[25].xyz_, temp[31].xxx_; 19: MUL temp[33].xy, temp[16].xy__, const[10].xy__; 20: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 21: MAD temp[36].xyz, temp[34].xyz_, const[5].www_, none.-1-1-1_; 22: DP3 temp[37].x, temp[32].xyz_, temp[36].xyz_; 23: MAX temp[38].x, temp[37].x___, none.0___; 24: MUL temp[39].xyz, temp[29].xyz_, temp[38].xxx_; 25: DP3 temp[40].x, temp[25].xyz_, temp[25].xyz_; 26: TEX temp[41].x, temp[40].x___, 1D[0]; 27: MUL temp[43].xyz, temp[39].xyz_, temp[41].xxx_; 28: MOV output[0], temp[43]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[6], src2.xyz = const[7] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[15], src1.xyz = const[4] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = input[1] REPL_ALPHA temp[17].x RCP, src0.z 6: src0.xyz = input[1], src1.xyz = temp[17] MAD temp[18].xy, src0.xy_, src1.xx_, src0.000 7: src0.xyz = const[0] MAD temp[18].z, src0.__x, src0.111, src0.000 8: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[19].xy, src0.xy_, src1.xy_, src0.000 9: TEX temp[20].xyz, temp[19].xy__, 2D[1]; 10: src0.xyz = temp[20], src1.xyz = const[5] DP3 temp[22].x, src0.xyz, src1.xyz 11: src0.xyz = temp[18], src1.xyz = temp[22] MAD temp[23].xyz, src0.xyz, src1.xxx, src0.000 12: src0.xyz = temp[23], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[25].xyz, srcp.xyz, src2.xxx, src0.000 13: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[26].xy, src0.xy_, src1.xy_, src0.000 14: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 15: src0.xyz = temp[27], src1.xyz = const[1] MAD temp[29].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[25] DP3 temp[30].x, src0.xyz, src0.xyz 17: src0.xyz = temp[30] REPL_ALPHA temp[31].x RSQ, |src0.x| 18: src0.xyz = temp[25], src1.xyz = temp[31] MAD temp[32].xyz, src0.xyz, src1.xxx, src0.000 19: src0.xyz = temp[16], src1.xyz = const[10] MAD temp[33].xy, src0.xy_, src1.xy_, src0.000 20: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 21: src0.xyz = temp[34], src0.w = const[5] MAD temp[36].xyz, src0.xyz, src0.www, -src0.111 22: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[37].x, src0.xyz, src1.xyz 23: src0.xyz = temp[37] MAX temp[38].x, src0.x__, src0.0__ 24: src0.xyz = temp[29], src1.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src1.xxx, src0.000 25: src0.xyz = temp[25] DP3 temp[40].x, src0.xyz, src0.xyz 26: TEX temp[41].x, temp[40].x___, 1D[0]; 27: src0.xyz = temp[39], src1.xyz = temp[41] MAD temp[43].xyz, src0.xyz, src1.xxx, src0.000 28: src0.xyz = temp[43], src0.w = temp[43] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = input[0] MAD temp[18].z, src0.__x, src0.111, src0.000 RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13], src1.xyz = input[1] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 RCP temp[17].w, src1.z 2: src0.xyz = temp[14], src1.xyz = const[6], src2.xyz = const[7] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[1], src0.w = temp[17], src1.xyz = temp[17] MAD temp[18].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[15], src1.xyz = const[4] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[16], src1.xyz = const[10] MAD temp[33].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[26].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[19].xy, src0.xy_, src1.xy_, src0.000 9: BEGIN_TEX; 10: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 11: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 12: TEX temp[20].xyz, temp[19].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[34], src0.w = const[5] SEM_WAIT MAD temp[36].xyz, src0.xyz, src0.www, -src0.111 14: src0.xyz = temp[27], src1.xyz = const[1] MAD temp[29].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = const[5] DP3 temp[22].x, src0.xyz, src1.xyz 16: src0.xyz = temp[18], src1.xyz = temp[22] MAD temp[23].xyz, src0.xyz, src1.xxx, src0.000 17: src0.xyz = temp[23], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[25].xyz, srcp.xyz, src2.xxx, src0.000 18: src0.xyz = temp[25] DP3 temp[40].x, src0.xyz, src0.xyz 19: src0.xyz = temp[25] DP3 temp[30].x, src0.xyz, src0.xyz 20: src0.xyz = temp[30] REPL_ALPHA temp[31].x RSQ, |src0.x| 21: src0.xyz = temp[25], src1.xyz = temp[31] MAD temp[32].xyz, src0.xyz, src1.xxx, src0.000 22: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[37].x, src0.xyz, src1.xyz 23: src0.xyz = temp[37] MAX temp[38].x, src0.x__, src0.0__ 24: src0.xyz = temp[29], src1.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src1.xxx, src0.000 25: BEGIN_TEX; 26: TEX temp[41].x, temp[40].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 27: src0.xyz = temp[39], src1.xyz = temp[41] SEM_WAIT MAD temp[43].xyz, src0.xyz, src1.xxx, src0.000 28: src0.xyz = temp[43], src0.w = temp[43] 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], src0.w = input[0] MAD temp[18].z, src0.__x, src0.111, src0.000 RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13], src1.xyz = input[1] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 RCP temp[17].w, src1.z 2: src0.xyz = temp[14], src1.xyz = const[6], src2.xyz = const[7] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[1], src0.w = temp[17] MAD temp[18].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[15], src1.xyz = const[4] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[16], src1.xyz = const[10] MAD temp[33].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[26].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[19].xy, src0.xy_, src1.xy_, src0.000 9: BEGIN_TEX; 10: TEX temp[34].xyz, temp[33].xy__, 2D[2]; 11: TEX temp[27].xyz, temp[26].xy__, 2D[3]; 12: TEX temp[20].xyz, temp[19].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[34], src0.w = const[5] SEM_WAIT MAD temp[36].xyz, src0.xyz, src0.www, -src0.111 14: src0.xyz = temp[27], src1.xyz = const[1] MAD temp[29].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = const[5] DP3 temp[22].x, src0.xyz, src1.xyz 16: src0.xyz = temp[18], src1.xyz = temp[22] MAD temp[23].xyz, src0.xyz, src1.xxx, src0.000 17: src0.xyz = temp[23], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[25].xyz, srcp.xyz, src2.xxx, src0.000 18: src0.xyz = temp[25] DP3 temp[40].x, src0.xyz, src0.xyz 19: src0.xyz = temp[25] DP3 temp[30].x, src0.xyz, src0.xyz 20: src0.xyz = temp[30] REPL_ALPHA temp[31].x RSQ, |src0.x| 21: src0.xyz = temp[25], src1.xyz = temp[31] MAD temp[32].xyz, src0.xyz, src1.xxx, src0.000 22: src0.xyz = temp[32], src1.xyz = temp[36] DP3 temp[37].x, src0.xyz, src1.xyz 23: src0.xyz = temp[37] MAX temp[38].x, src0.x__, src0.0__ 24: src0.xyz = temp[29], src1.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src1.xxx, src0.000 25: BEGIN_TEX; 26: TEX temp[41].x, temp[40].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 27: src0.xyz = temp[39], src1.xyz = temp[41] SEM_WAIT MAD temp[43].xyz, src0.xyz, src1.xxx, src0.000 28: src0.xyz = temp[43], src0.w = temp[43] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[0], src0.w = input[1] MAD temp[2].z, src0.__x, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[1], src0.w = temp[0], src1.xyz = input[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.z 2: src0.xyz = temp[1], src1.xyz = const[6], src2.xyz = const[7] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = input[0], src0.w = temp[0] MAD temp[2].xy, src0.xy_, src0.ww_, src0.000 4: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[0].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[1] MAD temp[0].x, src0.x__, src0.11_, src0.00_ 6: src0.xyz = temp[0], src1.xyz = const[10] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[0], src1.xyz = const[9] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[0], src1.xyz = const[8] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 9: BEGIN_TEX; 10: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 11: TEX temp[3].xyz, temp[3].xy__, 2D[3]; 12: TEX temp[0].xyz, temp[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[1], src0.w = const[5] SEM_WAIT MAD temp[1].xyz, src0.xyz, src0.www, -src0.111 14: src0.xyz = temp[3], src1.xyz = const[1] MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[0], src1.xyz = const[5] DP3 temp[0].x, src0.xyz, src1.xyz 16: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 17: src0.xyz = temp[0], src1.xyz = const[3], src2.xyz = const[2], srcp.xyz = (src1 - src0) MAD temp[0].xyz, srcp.xyz, src2.xxx, src0.000 18: src0.xyz = temp[0] DP3 temp[2].x, src0.xyz, src0.xyz 19: src0.xyz = temp[0] DP3 temp[2].y, src0.xyz, src0.xyz 20: src0.xyz = temp[2] REPL_ALPHA temp[2].y RSQ, |src0.y| 21: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[0].x, src0.xyz, src1.xyz 23: src0.xyz = temp[0] MAX temp[0].x, src0.x__, src0.0__ 24: src0.xyz = temp[3], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 25: BEGIN_TEX; 26: TEX temp[1].x, temp[2].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 27: src0.xyz = temp[0], src1.xyz = temp[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 28: src0.xyz = temp[0], src0.w = temp[43] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=30************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 8, tex_end: 0 (code_addr: 00000200) 0: xyz: c0 t0 t0 bias-> t2.z (02080020) w: t1 t0 t0 bias-> t0.w (00800001) xyz: c0.xxx 1.0 0.0 op: 00050a81 w: t1.w c0.x c0.x op: 05000009 1: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t0.www 0.0 op: 00050600 w: t0.z t1.x t1.x op: 05000005 2: xyz: t1 c6 c7 bias-> t1.xy (01867981) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c6.xyz c7.xyz op: 00020200 w: t1.x t1.x t1.x op: 00000000 3: xyz: t0 t0 t0 bias-> t2.xy (01880000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 4: xyz: t1 c4 t0 bias-> t0.y (01000901) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c4.xxx c4.xyz op: 00010280 w: t1.x t1.x t1.x op: 00000000 5: xyz: t1 t0 t0 bias-> t0.x (00800001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 6: xyz: t0 c10 t0 bias-> t1.xy (01840a80) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c10.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 7: xyz: t0 c9 t0 bias-> t3.xy (018c0a40) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c9.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 c8 t0 bias-> t0.xy (01800a00) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c8.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 9, tex_offset: 0, alu_end: 11, tex_end: 2 (code_addr: 000402c9) TEX: TEX t1, t1, texture[2] (00009041) TEX t3, t3, texture[3] (000098c3) TEX t0, t0, texture[1] (00008800) 9: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: c5 t0 t0 bias-> (00000025) xyz: t1.xyz c5.www -1.0 op: 000d4600 w: t1.x t1.x t1.x op: 00000000 10: xyz: t3 c1 t0 bias-> t3.xyz (038c0843) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c1.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 11: xyz: t0 c5 t0 bias-> t0.x (00800940) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c5.xyz t0.xxx op: 00804200 w: t0.x t0.x t0.x op: 00000000 12: xyz: t2 t0 t0 bias-> t0.xyz (03800002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t0.xxx 0.0 op: 80050280 NOP w: t2.x t2.x t2.x op: 00000000 13: xyz: t0 c3 c2 sub-> t0.xyz (038228c0) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c2.xxx 0.0 op: 0025048f w: t0.x t0.x t0.x op: 00000000 14: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.xyz t0.xxx op: 00804000 w: t0.x t0.x t0.x op: 00000000 15: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.xyz t0.xxx op: 00804000 w: t0.x t0.x t0.x op: 00000000 16: xyz: t2 t0 t0 bias-> t2.y (01080002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xxx t2.xxx t2.xxx op: 05004081 w: |t2.y| t2.x t2.x op: 05800041 17: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t2.yyy 0.0 op: 00050300 w: t0.x t0.x t0.x op: 00000000 18: xyz: t0 t1 t0 bias-> t0.x (00800040) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t1.xyz t0.xxx op: 00804200 w: t0.x t0.x t0.x op: 00000000 19: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.0 t0.xxx op: 02804a00 w: t0.x t0.x t0.x op: 00000000 20: xyz: t3 t0 t0 bias-> t0.xyz (03800003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.xxx 0.0 op: 00050280 w: t3.x t3.x t3.x op: 00000000 NODE 2: alu_offset: 21, tex_offset: 3, alu_end: 1, tex_end: 0 (code_addr: 00403055) TEX: TEX t1, t2, texture[0] (00008042) 21: 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 22: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t43 t0 t0 bias-> o0.w (0100000b) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t43.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=31************************************* Hardware program ---------------- 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], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL SAMP[5] DCL SAMP[6] DCL CONST[17..18] DCL CONST[7..16] 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[0] FLT32 { 1.0000, 0.0039, 0.0000, 0.0312} IMM[1] FLT32 { 0.1250, 2.0000, -1.0000, 0.2500} IMM[2] FLT32 { 0.3750, 0.5000, 0.6250, 0.7500} IMM[3] FLT32 { 0.8750, 0.0625, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[18].xxxx, CONST[18].yyyy 2: RCP TEMP[1].x, IN[1].zzzz 3: MUL TEMP[1].xy, IN[1].xyyy, TEMP[1].xxxx 4: MOV TEMP[1].z, CONST[14].xxxx 5: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[4], RECT 6: DP3 TEMP[2].x, TEMP[2].xyzz, IMM[0].xyzz 7: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[2].xxxx 8: ADD TEMP[2].xyz, CONST[17].xyzz, -TEMP[1].xyzz 9: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[16].xxxx 10: DP3 TEMP[3].x, TEMP[2].xyzz, TEMP[2].xyzz 11: RSQ TEMP[3].x, TEMP[3].xxxx 12: MUL TEMP[3].xyz, TEMP[2].xyzz, TEMP[3].xxxx 13: DP3 TEMP[2].x, TEMP[2].xyzz, TEMP[2].xyzz 14: TEX TEMP[2].x, TEMP[2].xxxx, SAMP[3], 1D 15: DP3 TEMP[4].x, TEMP[3].xyzz, CONST[8].xyzz 16: ADD TEMP[4].x, IMM[0].xxxx, -TEMP[4].xxxx 17: RCP TEMP[5].x, CONST[9].xxxx 18: MUL TEMP[4].x, TEMP[4].xxxx, TEMP[5].xxxx 19: TEX TEMP[4].x, TEMP[4].xxxx, SAMP[2], 1D 20: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[4].xxxx 21: MUL TEMP[4], CONST[10], TEMP[1].xxxx 22: MAD TEMP[4], CONST[11], TEMP[1].yyyy, TEMP[4] 23: MAD TEMP[1], CONST[12], TEMP[1].zzzz, TEMP[4] 24: ADD TEMP[1], TEMP[1], CONST[13] 25: MUL TEMP[4].xy, TEMP[0].xyyy, IMM[0].wwww 26: MOV TEMP[5].x, TEMP[4].xxxx 27: FRC TEMP[6].x, TEMP[4].yyyy 28: MUL TEMP[6].x, TEMP[6].xxxx, IMM[1].xxxx 29: MOV TEMP[5].y, TEMP[6].xxxx 30: TEX TEMP[5], TEMP[5].xyyy, SAMP[0], 2D 31: MAD TEMP[5], TEMP[5], IMM[1].yyyy, IMM[1].zzzz 32: MAD TEMP[7].xy, TEMP[5].xyyy, CONST[7].xyyy, TEMP[1].xyyy 33: MOV TEMP[7].xy, TEMP[7].xyyy 34: MOV TEMP[7].w, TEMP[1].wwww 35: MOV TEMP[7].z, TEMP[1].zzzz 36: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 37: MAD TEMP[8].xy, TEMP[5].zwww, CONST[7].xyyy, TEMP[1].xyyy 38: MOV TEMP[8].xy, TEMP[8].xyyy 39: MOV TEMP[8].w, TEMP[1].wwww 40: MOV TEMP[8].z, TEMP[1].zzzz 41: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 42: ADD TEMP[5].x, TEMP[7].xxxx, TEMP[8].xxxx 43: MOV TEMP[7].x, TEMP[4].xxxx 44: ADD TEMP[8].x, TEMP[6].xxxx, IMM[1].xxxx 45: MOV TEMP[7].y, TEMP[8].xxxx 46: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 47: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 48: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 49: MOV TEMP[8].xy, TEMP[8].xyyy 50: MOV TEMP[8].w, TEMP[1].wwww 51: MOV TEMP[8].z, TEMP[1].zzzz 52: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 53: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 54: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 55: MOV TEMP[7].xy, TEMP[7].xyyy 56: MOV TEMP[7].w, TEMP[1].wwww 57: MOV TEMP[7].z, TEMP[1].zzzz 58: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 59: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 60: MOV TEMP[7].x, TEMP[4].xxxx 61: ADD TEMP[8].x, TEMP[6].xxxx, IMM[1].wwww 62: MOV TEMP[7].y, TEMP[8].xxxx 63: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 64: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 65: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 66: MOV TEMP[8].xy, TEMP[8].xyyy 67: MOV TEMP[8].w, TEMP[1].wwww 68: MOV TEMP[8].z, TEMP[1].zzzz 69: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 70: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 71: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 72: MOV TEMP[7].xy, TEMP[7].xyyy 73: MOV TEMP[7].w, TEMP[1].wwww 74: MOV TEMP[7].z, TEMP[1].zzzz 75: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 76: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 77: MOV TEMP[7].x, TEMP[4].xxxx 78: ADD TEMP[8].x, TEMP[6].xxxx, IMM[2].xxxx 79: MOV TEMP[7].y, TEMP[8].xxxx 80: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 81: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 82: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 83: MOV TEMP[8].xy, TEMP[8].xyyy 84: MOV TEMP[8].w, TEMP[1].wwww 85: MOV TEMP[8].z, TEMP[1].zzzz 86: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 87: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 88: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 89: MOV TEMP[7].xy, TEMP[7].xyyy 90: MOV TEMP[7].w, TEMP[1].wwww 91: MOV TEMP[7].z, TEMP[1].zzzz 92: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 93: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 94: MOV TEMP[7].x, TEMP[4].xxxx 95: ADD TEMP[8].x, TEMP[6].xxxx, IMM[2].yyyy 96: MOV TEMP[7].y, TEMP[8].xxxx 97: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 98: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 99: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 100: MOV TEMP[8].xy, TEMP[8].xyyy 101: MOV TEMP[8].w, TEMP[1].wwww 102: MOV TEMP[8].z, TEMP[1].zzzz 103: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 104: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 105: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 106: MOV TEMP[7].xy, TEMP[7].xyyy 107: MOV TEMP[7].w, TEMP[1].wwww 108: MOV TEMP[7].z, TEMP[1].zzzz 109: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 110: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 111: MOV TEMP[7].x, TEMP[4].xxxx 112: ADD TEMP[8].x, TEMP[6].xxxx, IMM[2].zzzz 113: MOV TEMP[7].y, TEMP[8].xxxx 114: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 115: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 116: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 117: MOV TEMP[8].xy, TEMP[8].xyyy 118: MOV TEMP[8].w, TEMP[1].wwww 119: MOV TEMP[8].z, TEMP[1].zzzz 120: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 121: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 122: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 123: MOV TEMP[7].xy, TEMP[7].xyyy 124: MOV TEMP[7].w, TEMP[1].wwww 125: MOV TEMP[7].z, TEMP[1].zzzz 126: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 127: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 128: MOV TEMP[7].x, TEMP[4].xxxx 129: ADD TEMP[8].x, TEMP[6].xxxx, IMM[2].wwww 130: MOV TEMP[7].y, TEMP[8].xxxx 131: TEX TEMP[7], TEMP[7].xyyy, SAMP[0], 2D 132: MAD TEMP[7], TEMP[7], IMM[1].yyyy, IMM[1].zzzz 133: MAD TEMP[8].xy, TEMP[7].xyyy, CONST[7].xyyy, TEMP[1].xyyy 134: MOV TEMP[8].xy, TEMP[8].xyyy 135: MOV TEMP[8].w, TEMP[1].wwww 136: MOV TEMP[8].z, TEMP[1].zzzz 137: TXP TEMP[8].x, TEMP[8], SAMP[1], SHADOW2D 138: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[8].xxxx 139: MAD TEMP[7].xy, TEMP[7].zwww, CONST[7].xyyy, TEMP[1].xyyy 140: MOV TEMP[7].xy, TEMP[7].xyyy 141: MOV TEMP[7].w, TEMP[1].wwww 142: MOV TEMP[7].z, TEMP[1].zzzz 143: TXP TEMP[7].x, TEMP[7], SAMP[1], SHADOW2D 144: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[7].xxxx 145: MOV TEMP[4].x, TEMP[4].xxxx 146: ADD TEMP[6].x, TEMP[6].xxxx, IMM[3].xxxx 147: MOV TEMP[4].y, TEMP[6].xxxx 148: TEX TEMP[4], TEMP[4].xyyy, SAMP[0], 2D 149: MAD TEMP[4], TEMP[4], IMM[1].yyyy, IMM[1].zzzz 150: MAD TEMP[6].xy, TEMP[4].xyyy, CONST[7].xyyy, TEMP[1].xyyy 151: MOV TEMP[6].xy, TEMP[6].xyyy 152: MOV TEMP[6].w, TEMP[1].wwww 153: MOV TEMP[6].z, TEMP[1].zzzz 154: TXP TEMP[6].x, TEMP[6], SAMP[1], SHADOW2D 155: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[6].xxxx 156: MAD TEMP[4].xy, TEMP[4].zwww, CONST[7].xyyy, TEMP[1].xyyy 157: MOV TEMP[4].xy, TEMP[4].xyyy 158: MOV TEMP[4].w, TEMP[1].wwww 159: MOV TEMP[4].z, TEMP[1].zzzz 160: TXP TEMP[1].x, TEMP[4], SAMP[1], SHADOW2D 161: ADD TEMP[5].x, TEMP[5].xxxx, TEMP[1].xxxx 162: MUL TEMP[1].x, TEMP[5].xxxx, IMM[3].yyyy 163: MUL TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 164: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[6], RECT 165: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[15].xyzz 166: TEX TEMP[4].xyz, TEMP[0].xyyy, SAMP[5], RECT 167: MAD TEMP[4].xyz, TEMP[4].xyzz, IMM[1].yyyy, IMM[1].zzzz 168: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[4].xyzz 169: MAX TEMP[3].x, TEMP[3].xxxx, IMM[3].zzzz 170: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 171: MUL TEMP[1].xyz, TEMP[2].xyzz, TEMP[1].xxxx 172: MOV OUT[0], TEMP[1] 173: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[4]; 9: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 12: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 13: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 14: RSQ temp[3].x, temp[3].xxxx; 15: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 16: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 17: TEX temp[2].x, temp[2].xxxx, 1D[3]; 18: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 19: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 20: RCP temp[5].x, const[9].xxxx; 21: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 22: TEX temp[4].x, temp[4].xxxx, 1D[2]; 23: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 24: MUL temp[4], const[10], temp[1].xxxx; 25: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 26: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 27: ADD temp[1], temp[1], const[13]; 28: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 29: MOV temp[5].x, temp[4].xxxx; 30: FRC temp[6].x, temp[4].yyyy; 31: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 32: MOV temp[5].y, temp[6].xxxx; 33: TEX temp[5], temp[5].xyyy, 2D[0]; 34: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 35: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 36: MOV temp[7].xy, temp[7].xyyy; 37: MOV temp[7].w, temp[1].wwww; 38: MOV temp[7].z, temp[1].zzzz; 39: TXP temp[7].x, temp[7], 2DSHADOW[1]; 40: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 41: MOV temp[8].xy, temp[8].xyyy; 42: MOV temp[8].w, temp[1].wwww; 43: MOV temp[8].z, temp[1].zzzz; 44: TXP temp[8].x, temp[8], 2DSHADOW[1]; 45: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 46: MOV temp[7].x, temp[4].xxxx; 47: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 48: MOV temp[7].y, temp[8].xxxx; 49: TEX temp[7], temp[7].xyyy, 2D[0]; 50: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 51: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 52: MOV temp[8].xy, temp[8].xyyy; 53: MOV temp[8].w, temp[1].wwww; 54: MOV temp[8].z, temp[1].zzzz; 55: TXP temp[8].x, temp[8], 2DSHADOW[1]; 56: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 57: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 58: MOV temp[7].xy, temp[7].xyyy; 59: MOV temp[7].w, temp[1].wwww; 60: MOV temp[7].z, temp[1].zzzz; 61: TXP temp[7].x, temp[7], 2DSHADOW[1]; 62: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 63: MOV temp[7].x, temp[4].xxxx; 64: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 65: MOV temp[7].y, temp[8].xxxx; 66: TEX temp[7], temp[7].xyyy, 2D[0]; 67: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 68: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 69: MOV temp[8].xy, temp[8].xyyy; 70: MOV temp[8].w, temp[1].wwww; 71: MOV temp[8].z, temp[1].zzzz; 72: TXP temp[8].x, temp[8], 2DSHADOW[1]; 73: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 74: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 75: MOV temp[7].xy, temp[7].xyyy; 76: MOV temp[7].w, temp[1].wwww; 77: MOV temp[7].z, temp[1].zzzz; 78: TXP temp[7].x, temp[7], 2DSHADOW[1]; 79: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 80: MOV temp[7].x, temp[4].xxxx; 81: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 82: MOV temp[7].y, temp[8].xxxx; 83: TEX temp[7], temp[7].xyyy, 2D[0]; 84: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 85: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 86: MOV temp[8].xy, temp[8].xyyy; 87: MOV temp[8].w, temp[1].wwww; 88: MOV temp[8].z, temp[1].zzzz; 89: TXP temp[8].x, temp[8], 2DSHADOW[1]; 90: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 91: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 92: MOV temp[7].xy, temp[7].xyyy; 93: MOV temp[7].w, temp[1].wwww; 94: MOV temp[7].z, temp[1].zzzz; 95: TXP temp[7].x, temp[7], 2DSHADOW[1]; 96: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 97: MOV temp[7].x, temp[4].xxxx; 98: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 99: MOV temp[7].y, temp[8].xxxx; 100: TEX temp[7], temp[7].xyyy, 2D[0]; 101: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 102: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 103: MOV temp[8].xy, temp[8].xyyy; 104: MOV temp[8].w, temp[1].wwww; 105: MOV temp[8].z, temp[1].zzzz; 106: TXP temp[8].x, temp[8], 2DSHADOW[1]; 107: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 108: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 109: MOV temp[7].xy, temp[7].xyyy; 110: MOV temp[7].w, temp[1].wwww; 111: MOV temp[7].z, temp[1].zzzz; 112: TXP temp[7].x, temp[7], 2DSHADOW[1]; 113: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 114: MOV temp[7].x, temp[4].xxxx; 115: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 116: MOV temp[7].y, temp[8].xxxx; 117: TEX temp[7], temp[7].xyyy, 2D[0]; 118: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 119: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 120: MOV temp[8].xy, temp[8].xyyy; 121: MOV temp[8].w, temp[1].wwww; 122: MOV temp[8].z, temp[1].zzzz; 123: TXP temp[8].x, temp[8], 2DSHADOW[1]; 124: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 125: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 126: MOV temp[7].xy, temp[7].xyyy; 127: MOV temp[7].w, temp[1].wwww; 128: MOV temp[7].z, temp[1].zzzz; 129: TXP temp[7].x, temp[7], 2DSHADOW[1]; 130: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 131: MOV temp[7].x, temp[4].xxxx; 132: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 133: MOV temp[7].y, temp[8].xxxx; 134: TEX temp[7], temp[7].xyyy, 2D[0]; 135: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 136: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 137: MOV temp[8].xy, temp[8].xyyy; 138: MOV temp[8].w, temp[1].wwww; 139: MOV temp[8].z, temp[1].zzzz; 140: TXP temp[8].x, temp[8], 2DSHADOW[1]; 141: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 142: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 143: MOV temp[7].xy, temp[7].xyyy; 144: MOV temp[7].w, temp[1].wwww; 145: MOV temp[7].z, temp[1].zzzz; 146: TXP temp[7].x, temp[7], 2DSHADOW[1]; 147: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 148: MOV temp[4].x, temp[4].xxxx; 149: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 150: MOV temp[4].y, temp[6].xxxx; 151: TEX temp[4], temp[4].xyyy, 2D[0]; 152: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 153: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 154: MOV temp[6].xy, temp[6].xyyy; 155: MOV temp[6].w, temp[1].wwww; 156: MOV temp[6].z, temp[1].zzzz; 157: TXP temp[6].x, temp[6], 2DSHADOW[1]; 158: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 159: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 160: MOV temp[4].xy, temp[4].xyyy; 161: MOV temp[4].w, temp[1].wwww; 162: MOV temp[4].z, temp[1].zzzz; 163: TXP temp[1].x, temp[4], 2DSHADOW[1]; 164: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 165: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 166: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 167: TEX temp[2].xyz, temp[0].xyyy, RECT[6]; 168: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 169: TEX temp[4].xyz, temp[0].xyyy, RECT[5]; 170: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 171: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 172: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 173: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 174: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 175: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[4]; 9: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 12: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 13: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 14: RSQ temp[3].x, temp[3].xxxx; 15: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 16: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 17: TEX temp[2].x, temp[2].xxxx, 1D[3]; 18: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 19: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 20: RCP temp[5].x, const[9].xxxx; 21: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 22: TEX temp[4].x, temp[4].xxxx, 1D[2]; 23: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 24: MUL temp[4], const[10], temp[1].xxxx; 25: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 26: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 27: ADD temp[1], temp[1], const[13]; 28: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 29: MOV temp[5].x, temp[4].xxxx; 30: FRC temp[6].x, temp[4].yyyy; 31: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 32: MOV temp[5].y, temp[6].xxxx; 33: TEX temp[5], temp[5].xyyy, 2D[0]; 34: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 35: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 36: MOV temp[7].xy, temp[7].xyyy; 37: MOV temp[7].w, temp[1].wwww; 38: MOV temp[7].z, temp[1].zzzz; 39: TXP temp[7].x, temp[7], 2DSHADOW[1]; 40: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 41: MOV temp[8].xy, temp[8].xyyy; 42: MOV temp[8].w, temp[1].wwww; 43: MOV temp[8].z, temp[1].zzzz; 44: TXP temp[8].x, temp[8], 2DSHADOW[1]; 45: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 46: MOV temp[7].x, temp[4].xxxx; 47: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 48: MOV temp[7].y, temp[8].xxxx; 49: TEX temp[7], temp[7].xyyy, 2D[0]; 50: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 51: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 52: MOV temp[8].xy, temp[8].xyyy; 53: MOV temp[8].w, temp[1].wwww; 54: MOV temp[8].z, temp[1].zzzz; 55: TXP temp[8].x, temp[8], 2DSHADOW[1]; 56: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 57: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 58: MOV temp[7].xy, temp[7].xyyy; 59: MOV temp[7].w, temp[1].wwww; 60: MOV temp[7].z, temp[1].zzzz; 61: TXP temp[7].x, temp[7], 2DSHADOW[1]; 62: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 63: MOV temp[7].x, temp[4].xxxx; 64: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 65: MOV temp[7].y, temp[8].xxxx; 66: TEX temp[7], temp[7].xyyy, 2D[0]; 67: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 68: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 69: MOV temp[8].xy, temp[8].xyyy; 70: MOV temp[8].w, temp[1].wwww; 71: MOV temp[8].z, temp[1].zzzz; 72: TXP temp[8].x, temp[8], 2DSHADOW[1]; 73: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 74: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 75: MOV temp[7].xy, temp[7].xyyy; 76: MOV temp[7].w, temp[1].wwww; 77: MOV temp[7].z, temp[1].zzzz; 78: TXP temp[7].x, temp[7], 2DSHADOW[1]; 79: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 80: MOV temp[7].x, temp[4].xxxx; 81: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 82: MOV temp[7].y, temp[8].xxxx; 83: TEX temp[7], temp[7].xyyy, 2D[0]; 84: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 85: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 86: MOV temp[8].xy, temp[8].xyyy; 87: MOV temp[8].w, temp[1].wwww; 88: MOV temp[8].z, temp[1].zzzz; 89: TXP temp[8].x, temp[8], 2DSHADOW[1]; 90: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 91: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 92: MOV temp[7].xy, temp[7].xyyy; 93: MOV temp[7].w, temp[1].wwww; 94: MOV temp[7].z, temp[1].zzzz; 95: TXP temp[7].x, temp[7], 2DSHADOW[1]; 96: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 97: MOV temp[7].x, temp[4].xxxx; 98: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 99: MOV temp[7].y, temp[8].xxxx; 100: TEX temp[7], temp[7].xyyy, 2D[0]; 101: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 102: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 103: MOV temp[8].xy, temp[8].xyyy; 104: MOV temp[8].w, temp[1].wwww; 105: MOV temp[8].z, temp[1].zzzz; 106: TXP temp[8].x, temp[8], 2DSHADOW[1]; 107: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 108: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 109: MOV temp[7].xy, temp[7].xyyy; 110: MOV temp[7].w, temp[1].wwww; 111: MOV temp[7].z, temp[1].zzzz; 112: TXP temp[7].x, temp[7], 2DSHADOW[1]; 113: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 114: MOV temp[7].x, temp[4].xxxx; 115: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 116: MOV temp[7].y, temp[8].xxxx; 117: TEX temp[7], temp[7].xyyy, 2D[0]; 118: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 119: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 120: MOV temp[8].xy, temp[8].xyyy; 121: MOV temp[8].w, temp[1].wwww; 122: MOV temp[8].z, temp[1].zzzz; 123: TXP temp[8].x, temp[8], 2DSHADOW[1]; 124: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 125: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 126: MOV temp[7].xy, temp[7].xyyy; 127: MOV temp[7].w, temp[1].wwww; 128: MOV temp[7].z, temp[1].zzzz; 129: TXP temp[7].x, temp[7], 2DSHADOW[1]; 130: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 131: MOV temp[7].x, temp[4].xxxx; 132: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 133: MOV temp[7].y, temp[8].xxxx; 134: TEX temp[7], temp[7].xyyy, 2D[0]; 135: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 136: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 137: MOV temp[8].xy, temp[8].xyyy; 138: MOV temp[8].w, temp[1].wwww; 139: MOV temp[8].z, temp[1].zzzz; 140: TXP temp[8].x, temp[8], 2DSHADOW[1]; 141: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 142: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 143: MOV temp[7].xy, temp[7].xyyy; 144: MOV temp[7].w, temp[1].wwww; 145: MOV temp[7].z, temp[1].zzzz; 146: TXP temp[7].x, temp[7], 2DSHADOW[1]; 147: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 148: MOV temp[4].x, temp[4].xxxx; 149: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 150: MOV temp[4].y, temp[6].xxxx; 151: TEX temp[4], temp[4].xyyy, 2D[0]; 152: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 153: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 154: MOV temp[6].xy, temp[6].xyyy; 155: MOV temp[6].w, temp[1].wwww; 156: MOV temp[6].z, temp[1].zzzz; 157: TXP temp[6].x, temp[6], 2DSHADOW[1]; 158: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 159: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 160: MOV temp[4].xy, temp[4].xyyy; 161: MOV temp[4].w, temp[1].wwww; 162: MOV temp[4].z, temp[1].zzzz; 163: TXP temp[1].x, temp[4], 2DSHADOW[1]; 164: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 165: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 166: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 167: TEX temp[2].xyz, temp[0].xyyy, RECT[6]; 168: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 169: TEX temp[4].xyz, temp[0].xyyy, RECT[5]; 170: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 171: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 172: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 173: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 174: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 175: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[4]; 9: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 12: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 13: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 14: RSQ temp[3].x, temp[3].xxxx; 15: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 16: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 17: TEX temp[2].x, temp[2].xxxx, 1D[3]; 18: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 19: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 20: RCP temp[5].x, const[9].xxxx; 21: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 22: TEX temp[4].x, temp[4].xxxx, 1D[2]; 23: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 24: MUL temp[4], const[10], temp[1].xxxx; 25: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 26: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 27: ADD temp[1], temp[1], const[13]; 28: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 29: MOV temp[5].x, temp[4].xxxx; 30: FRC temp[6].x, temp[4].yyyy; 31: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 32: MOV temp[5].y, temp[6].xxxx; 33: TEX temp[5], temp[5].xyyy, 2D[0]; 34: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 35: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 36: MOV temp[7].xy, temp[7].xyyy; 37: MOV temp[7].w, temp[1].wwww; 38: MOV temp[7].z, temp[1].zzzz; 39: TXP temp[7].x, temp[7], 2DSHADOW[1]; 40: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 41: MOV temp[8].xy, temp[8].xyyy; 42: MOV temp[8].w, temp[1].wwww; 43: MOV temp[8].z, temp[1].zzzz; 44: TXP temp[8].x, temp[8], 2DSHADOW[1]; 45: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 46: MOV temp[7].x, temp[4].xxxx; 47: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 48: MOV temp[7].y, temp[8].xxxx; 49: TEX temp[7], temp[7].xyyy, 2D[0]; 50: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 51: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 52: MOV temp[8].xy, temp[8].xyyy; 53: MOV temp[8].w, temp[1].wwww; 54: MOV temp[8].z, temp[1].zzzz; 55: TXP temp[8].x, temp[8], 2DSHADOW[1]; 56: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 57: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 58: MOV temp[7].xy, temp[7].xyyy; 59: MOV temp[7].w, temp[1].wwww; 60: MOV temp[7].z, temp[1].zzzz; 61: TXP temp[7].x, temp[7], 2DSHADOW[1]; 62: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 63: MOV temp[7].x, temp[4].xxxx; 64: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 65: MOV temp[7].y, temp[8].xxxx; 66: TEX temp[7], temp[7].xyyy, 2D[0]; 67: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 68: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 69: MOV temp[8].xy, temp[8].xyyy; 70: MOV temp[8].w, temp[1].wwww; 71: MOV temp[8].z, temp[1].zzzz; 72: TXP temp[8].x, temp[8], 2DSHADOW[1]; 73: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 74: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 75: MOV temp[7].xy, temp[7].xyyy; 76: MOV temp[7].w, temp[1].wwww; 77: MOV temp[7].z, temp[1].zzzz; 78: TXP temp[7].x, temp[7], 2DSHADOW[1]; 79: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 80: MOV temp[7].x, temp[4].xxxx; 81: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 82: MOV temp[7].y, temp[8].xxxx; 83: TEX temp[7], temp[7].xyyy, 2D[0]; 84: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 85: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 86: MOV temp[8].xy, temp[8].xyyy; 87: MOV temp[8].w, temp[1].wwww; 88: MOV temp[8].z, temp[1].zzzz; 89: TXP temp[8].x, temp[8], 2DSHADOW[1]; 90: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 91: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 92: MOV temp[7].xy, temp[7].xyyy; 93: MOV temp[7].w, temp[1].wwww; 94: MOV temp[7].z, temp[1].zzzz; 95: TXP temp[7].x, temp[7], 2DSHADOW[1]; 96: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 97: MOV temp[7].x, temp[4].xxxx; 98: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 99: MOV temp[7].y, temp[8].xxxx; 100: TEX temp[7], temp[7].xyyy, 2D[0]; 101: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 102: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 103: MOV temp[8].xy, temp[8].xyyy; 104: MOV temp[8].w, temp[1].wwww; 105: MOV temp[8].z, temp[1].zzzz; 106: TXP temp[8].x, temp[8], 2DSHADOW[1]; 107: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 108: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 109: MOV temp[7].xy, temp[7].xyyy; 110: MOV temp[7].w, temp[1].wwww; 111: MOV temp[7].z, temp[1].zzzz; 112: TXP temp[7].x, temp[7], 2DSHADOW[1]; 113: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 114: MOV temp[7].x, temp[4].xxxx; 115: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 116: MOV temp[7].y, temp[8].xxxx; 117: TEX temp[7], temp[7].xyyy, 2D[0]; 118: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 119: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 120: MOV temp[8].xy, temp[8].xyyy; 121: MOV temp[8].w, temp[1].wwww; 122: MOV temp[8].z, temp[1].zzzz; 123: TXP temp[8].x, temp[8], 2DSHADOW[1]; 124: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 125: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 126: MOV temp[7].xy, temp[7].xyyy; 127: MOV temp[7].w, temp[1].wwww; 128: MOV temp[7].z, temp[1].zzzz; 129: TXP temp[7].x, temp[7], 2DSHADOW[1]; 130: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 131: MOV temp[7].x, temp[4].xxxx; 132: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 133: MOV temp[7].y, temp[8].xxxx; 134: TEX temp[7], temp[7].xyyy, 2D[0]; 135: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 136: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 137: MOV temp[8].xy, temp[8].xyyy; 138: MOV temp[8].w, temp[1].wwww; 139: MOV temp[8].z, temp[1].zzzz; 140: TXP temp[8].x, temp[8], 2DSHADOW[1]; 141: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 142: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 143: MOV temp[7].xy, temp[7].xyyy; 144: MOV temp[7].w, temp[1].wwww; 145: MOV temp[7].z, temp[1].zzzz; 146: TXP temp[7].x, temp[7], 2DSHADOW[1]; 147: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 148: MOV temp[4].x, temp[4].xxxx; 149: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 150: MOV temp[4].y, temp[6].xxxx; 151: TEX temp[4], temp[4].xyyy, 2D[0]; 152: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 153: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 154: MOV temp[6].xy, temp[6].xyyy; 155: MOV temp[6].w, temp[1].wwww; 156: MOV temp[6].z, temp[1].zzzz; 157: TXP temp[6].x, temp[6], 2DSHADOW[1]; 158: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 159: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 160: MOV temp[4].xy, temp[4].xyyy; 161: MOV temp[4].w, temp[1].wwww; 162: MOV temp[4].z, temp[1].zzzz; 163: TXP temp[1].x, temp[4], 2DSHADOW[1]; 164: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 165: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 166: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 167: TEX temp[2].xyz, temp[0].xyyy, RECT[6]; 168: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 169: TEX temp[4].xyz, temp[0].xyyy, RECT[5]; 170: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 171: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 172: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 173: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 174: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 175: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[4]; 9: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 12: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 13: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 14: RSQ temp[3].x, temp[3].xxxx; 15: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 16: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 17: TEX temp[2].x, temp[2].xxxx, 1D[3]; 18: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 19: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 20: RCP temp[5].x, const[9].xxxx; 21: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 22: TEX temp[4].x, temp[4].xxxx, 1D[2]; 23: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 24: MUL temp[4], const[10], temp[1].xxxx; 25: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 26: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 27: ADD temp[1], temp[1], const[13]; 28: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 29: MOV temp[5].x, temp[4].xxxx; 30: FRC temp[6].x, temp[4].yyyy; 31: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 32: MOV temp[5].y, temp[6].xxxx; 33: TEX temp[5], temp[5].xyyy, 2D[0]; 34: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 35: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 36: MOV temp[7].xy, temp[7].xyyy; 37: MOV temp[7].w, temp[1].wwww; 38: MOV temp[7].z, temp[1].zzzz; 39: TXP temp[7].x, temp[7], 2DSHADOW[1]; 40: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 41: MOV temp[8].xy, temp[8].xyyy; 42: MOV temp[8].w, temp[1].wwww; 43: MOV temp[8].z, temp[1].zzzz; 44: TXP temp[8].x, temp[8], 2DSHADOW[1]; 45: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 46: MOV temp[7].x, temp[4].xxxx; 47: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 48: MOV temp[7].y, temp[8].xxxx; 49: TEX temp[7], temp[7].xyyy, 2D[0]; 50: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 51: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 52: MOV temp[8].xy, temp[8].xyyy; 53: MOV temp[8].w, temp[1].wwww; 54: MOV temp[8].z, temp[1].zzzz; 55: TXP temp[8].x, temp[8], 2DSHADOW[1]; 56: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 57: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 58: MOV temp[7].xy, temp[7].xyyy; 59: MOV temp[7].w, temp[1].wwww; 60: MOV temp[7].z, temp[1].zzzz; 61: TXP temp[7].x, temp[7], 2DSHADOW[1]; 62: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 63: MOV temp[7].x, temp[4].xxxx; 64: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 65: MOV temp[7].y, temp[8].xxxx; 66: TEX temp[7], temp[7].xyyy, 2D[0]; 67: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 68: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 69: MOV temp[8].xy, temp[8].xyyy; 70: MOV temp[8].w, temp[1].wwww; 71: MOV temp[8].z, temp[1].zzzz; 72: TXP temp[8].x, temp[8], 2DSHADOW[1]; 73: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 74: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 75: MOV temp[7].xy, temp[7].xyyy; 76: MOV temp[7].w, temp[1].wwww; 77: MOV temp[7].z, temp[1].zzzz; 78: TXP temp[7].x, temp[7], 2DSHADOW[1]; 79: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 80: MOV temp[7].x, temp[4].xxxx; 81: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 82: MOV temp[7].y, temp[8].xxxx; 83: TEX temp[7], temp[7].xyyy, 2D[0]; 84: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 85: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 86: MOV temp[8].xy, temp[8].xyyy; 87: MOV temp[8].w, temp[1].wwww; 88: MOV temp[8].z, temp[1].zzzz; 89: TXP temp[8].x, temp[8], 2DSHADOW[1]; 90: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 91: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 92: MOV temp[7].xy, temp[7].xyyy; 93: MOV temp[7].w, temp[1].wwww; 94: MOV temp[7].z, temp[1].zzzz; 95: TXP temp[7].x, temp[7], 2DSHADOW[1]; 96: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 97: MOV temp[7].x, temp[4].xxxx; 98: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 99: MOV temp[7].y, temp[8].xxxx; 100: TEX temp[7], temp[7].xyyy, 2D[0]; 101: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 102: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 103: MOV temp[8].xy, temp[8].xyyy; 104: MOV temp[8].w, temp[1].wwww; 105: MOV temp[8].z, temp[1].zzzz; 106: TXP temp[8].x, temp[8], 2DSHADOW[1]; 107: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 108: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 109: MOV temp[7].xy, temp[7].xyyy; 110: MOV temp[7].w, temp[1].wwww; 111: MOV temp[7].z, temp[1].zzzz; 112: TXP temp[7].x, temp[7], 2DSHADOW[1]; 113: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 114: MOV temp[7].x, temp[4].xxxx; 115: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 116: MOV temp[7].y, temp[8].xxxx; 117: TEX temp[7], temp[7].xyyy, 2D[0]; 118: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 119: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 120: MOV temp[8].xy, temp[8].xyyy; 121: MOV temp[8].w, temp[1].wwww; 122: MOV temp[8].z, temp[1].zzzz; 123: TXP temp[8].x, temp[8], 2DSHADOW[1]; 124: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 125: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 126: MOV temp[7].xy, temp[7].xyyy; 127: MOV temp[7].w, temp[1].wwww; 128: MOV temp[7].z, temp[1].zzzz; 129: TXP temp[7].x, temp[7], 2DSHADOW[1]; 130: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 131: MOV temp[7].x, temp[4].xxxx; 132: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 133: MOV temp[7].y, temp[8].xxxx; 134: TEX temp[7], temp[7].xyyy, 2D[0]; 135: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 136: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 137: MOV temp[8].xy, temp[8].xyyy; 138: MOV temp[8].w, temp[1].wwww; 139: MOV temp[8].z, temp[1].zzzz; 140: TXP temp[8].x, temp[8], 2DSHADOW[1]; 141: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 142: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 143: MOV temp[7].xy, temp[7].xyyy; 144: MOV temp[7].w, temp[1].wwww; 145: MOV temp[7].z, temp[1].zzzz; 146: TXP temp[7].x, temp[7], 2DSHADOW[1]; 147: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 148: MOV temp[4].x, temp[4].xxxx; 149: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 150: MOV temp[4].y, temp[6].xxxx; 151: TEX temp[4], temp[4].xyyy, 2D[0]; 152: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 153: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 154: MOV temp[6].xy, temp[6].xyyy; 155: MOV temp[6].w, temp[1].wwww; 156: MOV temp[6].z, temp[1].zzzz; 157: TXP temp[6].x, temp[6], 2DSHADOW[1]; 158: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 159: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 160: MOV temp[4].xy, temp[4].xyyy; 161: MOV temp[4].w, temp[1].wwww; 162: MOV temp[4].z, temp[1].zzzz; 163: TXP temp[1].x, temp[4], 2DSHADOW[1]; 164: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 165: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 166: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 167: TEX temp[2].xyz, temp[0].xyyy, RECT[6]; 168: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 169: TEX temp[4].xyz, temp[0].xyyy, RECT[5]; 170: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 171: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 172: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 173: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 174: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 175: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: TEX temp[2].xyz, temp[0].xyyy, RECT[4]; 9: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 10: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 11: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 12: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 13: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 14: RSQ temp[3].x, temp[3].xxxx; 15: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 16: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 17: TEX temp[2].x, temp[2].xxxx, 1D[3]; 18: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 19: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 20: RCP temp[5].x, const[9].xxxx; 21: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 22: TEX temp[4].x, temp[4].xxxx, 1D[2]; 23: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 24: MUL temp[4], const[10], temp[1].xxxx; 25: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 26: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 27: ADD temp[1], temp[1], const[13]; 28: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 29: MOV temp[5].x, temp[4].xxxx; 30: FRC temp[6].x, temp[4].yyyy; 31: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 32: MOV temp[5].y, temp[6].xxxx; 33: TEX temp[5], temp[5].xyyy, 2D[0]; 34: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 35: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 36: MOV temp[7].xy, temp[7].xyyy; 37: MOV temp[7].w, temp[1].wwww; 38: MOV temp[7].z, temp[1].zzzz; 39: TXP temp[7].x, temp[7], 2DSHADOW[1]; 40: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 41: MOV temp[8].xy, temp[8].xyyy; 42: MOV temp[8].w, temp[1].wwww; 43: MOV temp[8].z, temp[1].zzzz; 44: TXP temp[8].x, temp[8], 2DSHADOW[1]; 45: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 46: MOV temp[7].x, temp[4].xxxx; 47: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 48: MOV temp[7].y, temp[8].xxxx; 49: TEX temp[7], temp[7].xyyy, 2D[0]; 50: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 51: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 52: MOV temp[8].xy, temp[8].xyyy; 53: MOV temp[8].w, temp[1].wwww; 54: MOV temp[8].z, temp[1].zzzz; 55: TXP temp[8].x, temp[8], 2DSHADOW[1]; 56: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 57: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 58: MOV temp[7].xy, temp[7].xyyy; 59: MOV temp[7].w, temp[1].wwww; 60: MOV temp[7].z, temp[1].zzzz; 61: TXP temp[7].x, temp[7], 2DSHADOW[1]; 62: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 63: MOV temp[7].x, temp[4].xxxx; 64: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 65: MOV temp[7].y, temp[8].xxxx; 66: TEX temp[7], temp[7].xyyy, 2D[0]; 67: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 68: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 69: MOV temp[8].xy, temp[8].xyyy; 70: MOV temp[8].w, temp[1].wwww; 71: MOV temp[8].z, temp[1].zzzz; 72: TXP temp[8].x, temp[8], 2DSHADOW[1]; 73: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 74: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 75: MOV temp[7].xy, temp[7].xyyy; 76: MOV temp[7].w, temp[1].wwww; 77: MOV temp[7].z, temp[1].zzzz; 78: TXP temp[7].x, temp[7], 2DSHADOW[1]; 79: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 80: MOV temp[7].x, temp[4].xxxx; 81: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 82: MOV temp[7].y, temp[8].xxxx; 83: TEX temp[7], temp[7].xyyy, 2D[0]; 84: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 85: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 86: MOV temp[8].xy, temp[8].xyyy; 87: MOV temp[8].w, temp[1].wwww; 88: MOV temp[8].z, temp[1].zzzz; 89: TXP temp[8].x, temp[8], 2DSHADOW[1]; 90: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 91: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 92: MOV temp[7].xy, temp[7].xyyy; 93: MOV temp[7].w, temp[1].wwww; 94: MOV temp[7].z, temp[1].zzzz; 95: TXP temp[7].x, temp[7], 2DSHADOW[1]; 96: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 97: MOV temp[7].x, temp[4].xxxx; 98: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 99: MOV temp[7].y, temp[8].xxxx; 100: TEX temp[7], temp[7].xyyy, 2D[0]; 101: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 102: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 103: MOV temp[8].xy, temp[8].xyyy; 104: MOV temp[8].w, temp[1].wwww; 105: MOV temp[8].z, temp[1].zzzz; 106: TXP temp[8].x, temp[8], 2DSHADOW[1]; 107: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 108: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 109: MOV temp[7].xy, temp[7].xyyy; 110: MOV temp[7].w, temp[1].wwww; 111: MOV temp[7].z, temp[1].zzzz; 112: TXP temp[7].x, temp[7], 2DSHADOW[1]; 113: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 114: MOV temp[7].x, temp[4].xxxx; 115: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 116: MOV temp[7].y, temp[8].xxxx; 117: TEX temp[7], temp[7].xyyy, 2D[0]; 118: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 119: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 120: MOV temp[8].xy, temp[8].xyyy; 121: MOV temp[8].w, temp[1].wwww; 122: MOV temp[8].z, temp[1].zzzz; 123: TXP temp[8].x, temp[8], 2DSHADOW[1]; 124: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 125: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 126: MOV temp[7].xy, temp[7].xyyy; 127: MOV temp[7].w, temp[1].wwww; 128: MOV temp[7].z, temp[1].zzzz; 129: TXP temp[7].x, temp[7], 2DSHADOW[1]; 130: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 131: MOV temp[7].x, temp[4].xxxx; 132: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 133: MOV temp[7].y, temp[8].xxxx; 134: TEX temp[7], temp[7].xyyy, 2D[0]; 135: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 136: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 137: MOV temp[8].xy, temp[8].xyyy; 138: MOV temp[8].w, temp[1].wwww; 139: MOV temp[8].z, temp[1].zzzz; 140: TXP temp[8].x, temp[8], 2DSHADOW[1]; 141: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 142: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 143: MOV temp[7].xy, temp[7].xyyy; 144: MOV temp[7].w, temp[1].wwww; 145: MOV temp[7].z, temp[1].zzzz; 146: TXP temp[7].x, temp[7], 2DSHADOW[1]; 147: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 148: MOV temp[4].x, temp[4].xxxx; 149: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 150: MOV temp[4].y, temp[6].xxxx; 151: TEX temp[4], temp[4].xyyy, 2D[0]; 152: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 153: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 154: MOV temp[6].xy, temp[6].xyyy; 155: MOV temp[6].w, temp[1].wwww; 156: MOV temp[6].z, temp[1].zzzz; 157: TXP temp[6].x, temp[6], 2DSHADOW[1]; 158: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 159: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 160: MOV temp[4].xy, temp[4].xyyy; 161: MOV temp[4].w, temp[1].wwww; 162: MOV temp[4].z, temp[1].zzzz; 163: TXP temp[1].x, temp[4], 2DSHADOW[1]; 164: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 165: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 166: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 167: TEX temp[2].xyz, temp[0].xyyy, RECT[6]; 168: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 169: TEX temp[4].xyz, temp[0].xyyy, RECT[5]; 170: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 171: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 172: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 173: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 174: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 175: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: MUL temp[10], temp[0].xyyy, const[25]; 9: TEX temp[11], temp[10], 2D[4]; 10: MOV temp[2].xyz, temp[11]; 11: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 13: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 14: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 15: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 16: RSQ temp[3].x, temp[3].xxxx; 17: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 18: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 19: TEX temp[12], temp[2].xxxx, 1D[3]; 20: MOV temp[2].x, temp[12]; 21: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 22: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 23: RCP temp[5].x, const[9].xxxx; 24: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 25: TEX temp[13], temp[4].xxxx, 1D[2]; 26: MOV temp[4].x, temp[13]; 27: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 28: MUL temp[4], const[10], temp[1].xxxx; 29: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 30: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 31: ADD temp[1], temp[1], const[13]; 32: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 33: MOV temp[5].x, temp[4].xxxx; 34: FRC temp[6].x, temp[4].yyyy; 35: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 36: MOV temp[5].y, temp[6].xxxx; 37: TEX temp[5], temp[5].xyyy, 2D[0]; 38: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 39: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 40: MOV temp[7].xy, temp[7].xyyy; 41: MOV temp[7].w, temp[1].wwww; 42: MOV temp[7].z, temp[1].zzzz; 43: TXP temp[14], temp[7], 2DSHADOW[1]; 44: RCP temp[15].w, temp[7].wwww; 45: MUL_SAT temp[15].w, temp[7].zzzz, temp[15].wwww; 46: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 47: CMP temp[7].x, temp[15].www1, none.0001, none.1111; 48: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 49: MOV temp[8].xy, temp[8].xyyy; 50: MOV temp[8].w, temp[1].wwww; 51: MOV temp[8].z, temp[1].zzzz; 52: TXP temp[16], temp[8], 2DSHADOW[1]; 53: RCP temp[17].w, temp[8].wwww; 54: MUL_SAT temp[17].w, temp[8].zzzz, temp[17].wwww; 55: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 56: CMP temp[8].x, temp[17].www1, none.0001, none.1111; 57: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 58: MOV temp[7].x, temp[4].xxxx; 59: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 60: MOV temp[7].y, temp[8].xxxx; 61: TEX temp[7], temp[7].xyyy, 2D[0]; 62: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 63: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 64: MOV temp[8].xy, temp[8].xyyy; 65: MOV temp[8].w, temp[1].wwww; 66: MOV temp[8].z, temp[1].zzzz; 67: TXP temp[18], temp[8], 2DSHADOW[1]; 68: RCP temp[19].w, temp[8].wwww; 69: MUL_SAT temp[19].w, temp[8].zzzz, temp[19].wwww; 70: ADD temp[19].w, -temp[19].wwww, temp[18].xxxx; 71: CMP temp[8].x, temp[19].www1, none.0001, none.1111; 72: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 73: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 74: MOV temp[7].xy, temp[7].xyyy; 75: MOV temp[7].w, temp[1].wwww; 76: MOV temp[7].z, temp[1].zzzz; 77: TXP temp[20], temp[7], 2DSHADOW[1]; 78: RCP temp[21].w, temp[7].wwww; 79: MUL_SAT temp[21].w, temp[7].zzzz, temp[21].wwww; 80: ADD temp[21].w, -temp[21].wwww, temp[20].xxxx; 81: CMP temp[7].x, temp[21].www1, none.0001, none.1111; 82: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 83: MOV temp[7].x, temp[4].xxxx; 84: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 85: MOV temp[7].y, temp[8].xxxx; 86: TEX temp[7], temp[7].xyyy, 2D[0]; 87: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 88: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 89: MOV temp[8].xy, temp[8].xyyy; 90: MOV temp[8].w, temp[1].wwww; 91: MOV temp[8].z, temp[1].zzzz; 92: TXP temp[22], temp[8], 2DSHADOW[1]; 93: RCP temp[23].w, temp[8].wwww; 94: MUL_SAT temp[23].w, temp[8].zzzz, temp[23].wwww; 95: ADD temp[23].w, -temp[23].wwww, temp[22].xxxx; 96: CMP temp[8].x, temp[23].www1, none.0001, none.1111; 97: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 98: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 99: MOV temp[7].xy, temp[7].xyyy; 100: MOV temp[7].w, temp[1].wwww; 101: MOV temp[7].z, temp[1].zzzz; 102: TXP temp[24], temp[7], 2DSHADOW[1]; 103: RCP temp[25].w, temp[7].wwww; 104: MUL_SAT temp[25].w, temp[7].zzzz, temp[25].wwww; 105: ADD temp[25].w, -temp[25].wwww, temp[24].xxxx; 106: CMP temp[7].x, temp[25].www1, none.0001, none.1111; 107: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 108: MOV temp[7].x, temp[4].xxxx; 109: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 110: MOV temp[7].y, temp[8].xxxx; 111: TEX temp[7], temp[7].xyyy, 2D[0]; 112: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 113: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 114: MOV temp[8].xy, temp[8].xyyy; 115: MOV temp[8].w, temp[1].wwww; 116: MOV temp[8].z, temp[1].zzzz; 117: TXP temp[26], temp[8], 2DSHADOW[1]; 118: RCP temp[27].w, temp[8].wwww; 119: MUL_SAT temp[27].w, temp[8].zzzz, temp[27].wwww; 120: ADD temp[27].w, -temp[27].wwww, temp[26].xxxx; 121: CMP temp[8].x, temp[27].www1, none.0001, none.1111; 122: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 123: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 124: MOV temp[7].xy, temp[7].xyyy; 125: MOV temp[7].w, temp[1].wwww; 126: MOV temp[7].z, temp[1].zzzz; 127: TXP temp[28], temp[7], 2DSHADOW[1]; 128: RCP temp[29].w, temp[7].wwww; 129: MUL_SAT temp[29].w, temp[7].zzzz, temp[29].wwww; 130: ADD temp[29].w, -temp[29].wwww, temp[28].xxxx; 131: CMP temp[7].x, temp[29].www1, none.0001, none.1111; 132: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 133: MOV temp[7].x, temp[4].xxxx; 134: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 135: MOV temp[7].y, temp[8].xxxx; 136: TEX temp[7], temp[7].xyyy, 2D[0]; 137: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 138: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 139: MOV temp[8].xy, temp[8].xyyy; 140: MOV temp[8].w, temp[1].wwww; 141: MOV temp[8].z, temp[1].zzzz; 142: TXP temp[30], temp[8], 2DSHADOW[1]; 143: RCP temp[31].w, temp[8].wwww; 144: MUL_SAT temp[31].w, temp[8].zzzz, temp[31].wwww; 145: ADD temp[31].w, -temp[31].wwww, temp[30].xxxx; 146: CMP temp[8].x, temp[31].www1, none.0001, none.1111; 147: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 148: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 149: MOV temp[7].xy, temp[7].xyyy; 150: MOV temp[7].w, temp[1].wwww; 151: MOV temp[7].z, temp[1].zzzz; 152: TXP temp[32], temp[7], 2DSHADOW[1]; 153: RCP temp[33].w, temp[7].wwww; 154: MUL_SAT temp[33].w, temp[7].zzzz, temp[33].wwww; 155: ADD temp[33].w, -temp[33].wwww, temp[32].xxxx; 156: CMP temp[7].x, temp[33].www1, none.0001, none.1111; 157: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 158: MOV temp[7].x, temp[4].xxxx; 159: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 160: MOV temp[7].y, temp[8].xxxx; 161: TEX temp[7], temp[7].xyyy, 2D[0]; 162: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 163: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 164: MOV temp[8].xy, temp[8].xyyy; 165: MOV temp[8].w, temp[1].wwww; 166: MOV temp[8].z, temp[1].zzzz; 167: TXP temp[34], temp[8], 2DSHADOW[1]; 168: RCP temp[35].w, temp[8].wwww; 169: MUL_SAT temp[35].w, temp[8].zzzz, temp[35].wwww; 170: ADD temp[35].w, -temp[35].wwww, temp[34].xxxx; 171: CMP temp[8].x, temp[35].www1, none.0001, none.1111; 172: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 173: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 174: MOV temp[7].xy, temp[7].xyyy; 175: MOV temp[7].w, temp[1].wwww; 176: MOV temp[7].z, temp[1].zzzz; 177: TXP temp[36], temp[7], 2DSHADOW[1]; 178: RCP temp[37].w, temp[7].wwww; 179: MUL_SAT temp[37].w, temp[7].zzzz, temp[37].wwww; 180: ADD temp[37].w, -temp[37].wwww, temp[36].xxxx; 181: CMP temp[7].x, temp[37].www1, none.0001, none.1111; 182: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 183: MOV temp[7].x, temp[4].xxxx; 184: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 185: MOV temp[7].y, temp[8].xxxx; 186: TEX temp[7], temp[7].xyyy, 2D[0]; 187: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 188: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 189: MOV temp[8].xy, temp[8].xyyy; 190: MOV temp[8].w, temp[1].wwww; 191: MOV temp[8].z, temp[1].zzzz; 192: TXP temp[38], temp[8], 2DSHADOW[1]; 193: RCP temp[39].w, temp[8].wwww; 194: MUL_SAT temp[39].w, temp[8].zzzz, temp[39].wwww; 195: ADD temp[39].w, -temp[39].wwww, temp[38].xxxx; 196: CMP temp[8].x, temp[39].www1, none.0001, none.1111; 197: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 198: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 199: MOV temp[7].xy, temp[7].xyyy; 200: MOV temp[7].w, temp[1].wwww; 201: MOV temp[7].z, temp[1].zzzz; 202: TXP temp[40], temp[7], 2DSHADOW[1]; 203: RCP temp[41].w, temp[7].wwww; 204: MUL_SAT temp[41].w, temp[7].zzzz, temp[41].wwww; 205: ADD temp[41].w, -temp[41].wwww, temp[40].xxxx; 206: CMP temp[7].x, temp[41].www1, none.0001, none.1111; 207: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 208: MOV temp[4].x, temp[4].xxxx; 209: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 210: MOV temp[4].y, temp[6].xxxx; 211: TEX temp[4], temp[4].xyyy, 2D[0]; 212: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 213: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 214: MOV temp[6].xy, temp[6].xyyy; 215: MOV temp[6].w, temp[1].wwww; 216: MOV temp[6].z, temp[1].zzzz; 217: TXP temp[42], temp[6], 2DSHADOW[1]; 218: RCP temp[43].w, temp[6].wwww; 219: MUL_SAT temp[43].w, temp[6].zzzz, temp[43].wwww; 220: ADD temp[43].w, -temp[43].wwww, temp[42].xxxx; 221: CMP temp[6].x, temp[43].www1, none.0001, none.1111; 222: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 223: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 224: MOV temp[4].xy, temp[4].xyyy; 225: MOV temp[4].w, temp[1].wwww; 226: MOV temp[4].z, temp[1].zzzz; 227: TXP temp[44], temp[4], 2DSHADOW[1]; 228: RCP temp[45].w, temp[4].wwww; 229: MUL_SAT temp[45].w, temp[4].zzzz, temp[45].wwww; 230: ADD temp[45].w, -temp[45].wwww, temp[44].xxxx; 231: CMP temp[1].x, temp[45].www1, none.0001, none.1111; 232: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 233: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 234: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 235: MUL temp[46], temp[0].xyyy, const[26]; 236: TEX temp[47], temp[46], 2D[6]; 237: MOV temp[2].xyz, temp[47]; 238: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 239: MUL temp[48], temp[0].xyyy, const[27]; 240: TEX temp[49], temp[48], 2D[5]; 241: MOV temp[4].xyz, temp[49]; 242: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 243: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 244: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 245: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 246: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 247: 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[23].xyz0, const[24].xyz0; 3: MOV temp[0], temp[9]; 4: MAD temp[0].y, temp[9], const[18].xxxx, const[18].yyyy; 5: RCP temp[1].x, input[1].zzzz; 6: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 7: MOV temp[1].z, const[14].xxxx; 8: MUL temp[10], temp[0].xyyy, const[25]; 9: TEX temp[11], temp[10], 2D[4]; 10: MOV temp[2].xyz, temp[11]; 11: DP3 temp[2].x, temp[2].xyzz, const[19].xyzz; 12: MUL temp[1].xyz, temp[1].xyzz, temp[2].xxxx; 13: ADD temp[2].xyz, const[17].xyzz, -temp[1].xyzz; 14: MUL temp[2].xyz, temp[2].xyzz, const[16].xxxx; 15: DP3 temp[3].x, temp[2].xyzz, temp[2].xyzz; 16: RSQ temp[3].x, |temp[3].xxxx|; 17: MUL temp[3].xyz, temp[2].xyzz, temp[3].xxxx; 18: DP3 temp[2].x, temp[2].xyzz, temp[2].xyzz; 19: TEX temp[12], temp[2].xxxx, 1D[3]; 20: MOV temp[2].x, temp[12]; 21: DP3 temp[4].x, temp[3].xyzz, const[8].xyzz; 22: ADD temp[4].x, const[19].xxxx, -temp[4].xxxx; 23: RCP temp[5].x, const[9].xxxx; 24: MUL temp[4].x, temp[4].xxxx, temp[5].xxxx; 25: TEX temp[13], temp[4].xxxx, 1D[2]; 26: MOV temp[4].x, temp[13]; 27: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 28: MUL temp[4], const[10], temp[1].xxxx; 29: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 30: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 31: ADD temp[1], temp[1], const[13]; 32: MUL temp[4].xy, temp[0].xyyy, const[19].wwww; 33: MOV temp[5].x, temp[4].xxxx; 34: FRC temp[6].x, temp[4].yyyy; 35: MUL temp[6].x, temp[6].xxxx, const[20].xxxx; 36: MOV temp[5].y, temp[6].xxxx; 37: TEX temp[5], temp[5].xyyy, 2D[0]; 38: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 39: MAD temp[7].xy, temp[5].xyyy, const[7].xyyy, temp[1].xyyy; 40: MOV temp[7].xy, temp[7].xyyy; 41: MOV temp[7].w, temp[1].wwww; 42: MOV temp[7].z, temp[1].zzzz; 43: TXP temp[14], temp[7], 2DSHADOW[1]; 44: RCP temp[15].w, temp[7].wwww; 45: MUL_SAT temp[15].w, temp[7].zzzz, temp[15].wwww; 46: ADD temp[15].w, -temp[15].wwww, temp[14].xxxx; 47: CMP temp[7].x, temp[15].www1, none.0001, none.1111; 48: MAD temp[8].xy, temp[5].zwww, const[7].xyyy, temp[1].xyyy; 49: MOV temp[8].xy, temp[8].xyyy; 50: MOV temp[8].w, temp[1].wwww; 51: MOV temp[8].z, temp[1].zzzz; 52: TXP temp[16], temp[8], 2DSHADOW[1]; 53: RCP temp[17].w, temp[8].wwww; 54: MUL_SAT temp[17].w, temp[8].zzzz, temp[17].wwww; 55: ADD temp[17].w, -temp[17].wwww, temp[16].xxxx; 56: CMP temp[8].x, temp[17].www1, none.0001, none.1111; 57: ADD temp[5].x, temp[7].xxxx, temp[8].xxxx; 58: MOV temp[7].x, temp[4].xxxx; 59: ADD temp[8].x, temp[6].xxxx, const[20].xxxx; 60: MOV temp[7].y, temp[8].xxxx; 61: TEX temp[7], temp[7].xyyy, 2D[0]; 62: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 63: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 64: MOV temp[8].xy, temp[8].xyyy; 65: MOV temp[8].w, temp[1].wwww; 66: MOV temp[8].z, temp[1].zzzz; 67: TXP temp[18], temp[8], 2DSHADOW[1]; 68: RCP temp[19].w, temp[8].wwww; 69: MUL_SAT temp[19].w, temp[8].zzzz, temp[19].wwww; 70: ADD temp[19].w, -temp[19].wwww, temp[18].xxxx; 71: CMP temp[8].x, temp[19].www1, none.0001, none.1111; 72: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 73: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 74: MOV temp[7].xy, temp[7].xyyy; 75: MOV temp[7].w, temp[1].wwww; 76: MOV temp[7].z, temp[1].zzzz; 77: TXP temp[20], temp[7], 2DSHADOW[1]; 78: RCP temp[21].w, temp[7].wwww; 79: MUL_SAT temp[21].w, temp[7].zzzz, temp[21].wwww; 80: ADD temp[21].w, -temp[21].wwww, temp[20].xxxx; 81: CMP temp[7].x, temp[21].www1, none.0001, none.1111; 82: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 83: MOV temp[7].x, temp[4].xxxx; 84: ADD temp[8].x, temp[6].xxxx, const[20].wwww; 85: MOV temp[7].y, temp[8].xxxx; 86: TEX temp[7], temp[7].xyyy, 2D[0]; 87: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 88: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 89: MOV temp[8].xy, temp[8].xyyy; 90: MOV temp[8].w, temp[1].wwww; 91: MOV temp[8].z, temp[1].zzzz; 92: TXP temp[22], temp[8], 2DSHADOW[1]; 93: RCP temp[23].w, temp[8].wwww; 94: MUL_SAT temp[23].w, temp[8].zzzz, temp[23].wwww; 95: ADD temp[23].w, -temp[23].wwww, temp[22].xxxx; 96: CMP temp[8].x, temp[23].www1, none.0001, none.1111; 97: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 98: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 99: MOV temp[7].xy, temp[7].xyyy; 100: MOV temp[7].w, temp[1].wwww; 101: MOV temp[7].z, temp[1].zzzz; 102: TXP temp[24], temp[7], 2DSHADOW[1]; 103: RCP temp[25].w, temp[7].wwww; 104: MUL_SAT temp[25].w, temp[7].zzzz, temp[25].wwww; 105: ADD temp[25].w, -temp[25].wwww, temp[24].xxxx; 106: CMP temp[7].x, temp[25].www1, none.0001, none.1111; 107: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 108: MOV temp[7].x, temp[4].xxxx; 109: ADD temp[8].x, temp[6].xxxx, const[21].xxxx; 110: MOV temp[7].y, temp[8].xxxx; 111: TEX temp[7], temp[7].xyyy, 2D[0]; 112: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 113: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 114: MOV temp[8].xy, temp[8].xyyy; 115: MOV temp[8].w, temp[1].wwww; 116: MOV temp[8].z, temp[1].zzzz; 117: TXP temp[26], temp[8], 2DSHADOW[1]; 118: RCP temp[27].w, temp[8].wwww; 119: MUL_SAT temp[27].w, temp[8].zzzz, temp[27].wwww; 120: ADD temp[27].w, -temp[27].wwww, temp[26].xxxx; 121: CMP temp[8].x, temp[27].www1, none.0001, none.1111; 122: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 123: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 124: MOV temp[7].xy, temp[7].xyyy; 125: MOV temp[7].w, temp[1].wwww; 126: MOV temp[7].z, temp[1].zzzz; 127: TXP temp[28], temp[7], 2DSHADOW[1]; 128: RCP temp[29].w, temp[7].wwww; 129: MUL_SAT temp[29].w, temp[7].zzzz, temp[29].wwww; 130: ADD temp[29].w, -temp[29].wwww, temp[28].xxxx; 131: CMP temp[7].x, temp[29].www1, none.0001, none.1111; 132: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 133: MOV temp[7].x, temp[4].xxxx; 134: ADD temp[8].x, temp[6].xxxx, const[21].yyyy; 135: MOV temp[7].y, temp[8].xxxx; 136: TEX temp[7], temp[7].xyyy, 2D[0]; 137: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 138: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 139: MOV temp[8].xy, temp[8].xyyy; 140: MOV temp[8].w, temp[1].wwww; 141: MOV temp[8].z, temp[1].zzzz; 142: TXP temp[30], temp[8], 2DSHADOW[1]; 143: RCP temp[31].w, temp[8].wwww; 144: MUL_SAT temp[31].w, temp[8].zzzz, temp[31].wwww; 145: ADD temp[31].w, -temp[31].wwww, temp[30].xxxx; 146: CMP temp[8].x, temp[31].www1, none.0001, none.1111; 147: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 148: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 149: MOV temp[7].xy, temp[7].xyyy; 150: MOV temp[7].w, temp[1].wwww; 151: MOV temp[7].z, temp[1].zzzz; 152: TXP temp[32], temp[7], 2DSHADOW[1]; 153: RCP temp[33].w, temp[7].wwww; 154: MUL_SAT temp[33].w, temp[7].zzzz, temp[33].wwww; 155: ADD temp[33].w, -temp[33].wwww, temp[32].xxxx; 156: CMP temp[7].x, temp[33].www1, none.0001, none.1111; 157: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 158: MOV temp[7].x, temp[4].xxxx; 159: ADD temp[8].x, temp[6].xxxx, const[21].zzzz; 160: MOV temp[7].y, temp[8].xxxx; 161: TEX temp[7], temp[7].xyyy, 2D[0]; 162: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 163: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 164: MOV temp[8].xy, temp[8].xyyy; 165: MOV temp[8].w, temp[1].wwww; 166: MOV temp[8].z, temp[1].zzzz; 167: TXP temp[34], temp[8], 2DSHADOW[1]; 168: RCP temp[35].w, temp[8].wwww; 169: MUL_SAT temp[35].w, temp[8].zzzz, temp[35].wwww; 170: ADD temp[35].w, -temp[35].wwww, temp[34].xxxx; 171: CMP temp[8].x, temp[35].www1, none.0001, none.1111; 172: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 173: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 174: MOV temp[7].xy, temp[7].xyyy; 175: MOV temp[7].w, temp[1].wwww; 176: MOV temp[7].z, temp[1].zzzz; 177: TXP temp[36], temp[7], 2DSHADOW[1]; 178: RCP temp[37].w, temp[7].wwww; 179: MUL_SAT temp[37].w, temp[7].zzzz, temp[37].wwww; 180: ADD temp[37].w, -temp[37].wwww, temp[36].xxxx; 181: CMP temp[7].x, temp[37].www1, none.0001, none.1111; 182: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 183: MOV temp[7].x, temp[4].xxxx; 184: ADD temp[8].x, temp[6].xxxx, const[21].wwww; 185: MOV temp[7].y, temp[8].xxxx; 186: TEX temp[7], temp[7].xyyy, 2D[0]; 187: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 188: MAD temp[8].xy, temp[7].xyyy, const[7].xyyy, temp[1].xyyy; 189: MOV temp[8].xy, temp[8].xyyy; 190: MOV temp[8].w, temp[1].wwww; 191: MOV temp[8].z, temp[1].zzzz; 192: TXP temp[38], temp[8], 2DSHADOW[1]; 193: RCP temp[39].w, temp[8].wwww; 194: MUL_SAT temp[39].w, temp[8].zzzz, temp[39].wwww; 195: ADD temp[39].w, -temp[39].wwww, temp[38].xxxx; 196: CMP temp[8].x, temp[39].www1, none.0001, none.1111; 197: ADD temp[5].x, temp[5].xxxx, temp[8].xxxx; 198: MAD temp[7].xy, temp[7].zwww, const[7].xyyy, temp[1].xyyy; 199: MOV temp[7].xy, temp[7].xyyy; 200: MOV temp[7].w, temp[1].wwww; 201: MOV temp[7].z, temp[1].zzzz; 202: TXP temp[40], temp[7], 2DSHADOW[1]; 203: RCP temp[41].w, temp[7].wwww; 204: MUL_SAT temp[41].w, temp[7].zzzz, temp[41].wwww; 205: ADD temp[41].w, -temp[41].wwww, temp[40].xxxx; 206: CMP temp[7].x, temp[41].www1, none.0001, none.1111; 207: ADD temp[5].x, temp[5].xxxx, temp[7].xxxx; 208: MOV temp[4].x, temp[4].xxxx; 209: ADD temp[6].x, temp[6].xxxx, const[22].xxxx; 210: MOV temp[4].y, temp[6].xxxx; 211: TEX temp[4], temp[4].xyyy, 2D[0]; 212: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 213: MAD temp[6].xy, temp[4].xyyy, const[7].xyyy, temp[1].xyyy; 214: MOV temp[6].xy, temp[6].xyyy; 215: MOV temp[6].w, temp[1].wwww; 216: MOV temp[6].z, temp[1].zzzz; 217: TXP temp[42], temp[6], 2DSHADOW[1]; 218: RCP temp[43].w, temp[6].wwww; 219: MUL_SAT temp[43].w, temp[6].zzzz, temp[43].wwww; 220: ADD temp[43].w, -temp[43].wwww, temp[42].xxxx; 221: CMP temp[6].x, temp[43].www1, none.0001, none.1111; 222: ADD temp[5].x, temp[5].xxxx, temp[6].xxxx; 223: MAD temp[4].xy, temp[4].zwww, const[7].xyyy, temp[1].xyyy; 224: MOV temp[4].xy, temp[4].xyyy; 225: MOV temp[4].w, temp[1].wwww; 226: MOV temp[4].z, temp[1].zzzz; 227: TXP temp[44], temp[4], 2DSHADOW[1]; 228: RCP temp[45].w, temp[4].wwww; 229: MUL_SAT temp[45].w, temp[4].zzzz, temp[45].wwww; 230: ADD temp[45].w, -temp[45].wwww, temp[44].xxxx; 231: CMP temp[1].x, temp[45].www1, none.0001, none.1111; 232: ADD temp[5].x, temp[5].xxxx, temp[1].xxxx; 233: MUL temp[1].x, temp[5].xxxx, const[22].yyyy; 234: MUL temp[1].x, temp[2].xxxx, temp[1].xxxx; 235: MUL temp[46], temp[0].xyyy, const[26]; 236: TEX temp[47], temp[46], 2D[6]; 237: MOV temp[2].xyz, temp[47]; 238: MUL temp[2].xyz, temp[2].xyzz, const[15].xyzz; 239: MUL temp[48], temp[0].xyyy, const[27]; 240: TEX temp[49], temp[48], 2D[5]; 241: MOV temp[4].xyz, temp[49]; 242: MAD temp[4].xyz, temp[4].xyzz, const[20].yyyy, const[20].zzzz; 243: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 244: MAX temp[3].x, temp[3].xxxx, const[22].zzzz; 245: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 246: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 247: 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[23].xy__, const[24].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[18]._x__, const[18]._y__; 5: RCP temp[1].x, input[1].z___; 6: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 7: MOV temp[1].z, const[14].__x_; 8: MUL temp[10].xy, temp[0].xy__, const[25].xy__; 9: TEX temp[11].xyz, temp[10].xy__, 2D[4]; 10: MOV temp[2].xyz, temp[11].xyz_; 11: DP3 temp[2].x, temp[2].xyz_, const[19].xyz_; 12: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 13: ADD temp[2].xyz, const[17].xyz_, -temp[1].xyz_; 14: MUL temp[2].xyz, temp[2].xyz_, const[16].xxx_; 15: DP3 temp[3].x, temp[2].xyz_, temp[2].xyz_; 16: RSQ temp[3].x, |temp[3].x___|; 17: MUL temp[3].xyz, temp[2].xyz_, temp[3].xxx_; 18: DP3 temp[2].x, temp[2].xyz_, temp[2].xyz_; 19: TEX temp[12].x, temp[2].x___, 1D[3]; 20: MOV temp[2].x, temp[12].x___; 21: DP3 temp[4].x, temp[3].xyz_, const[8].xyz_; 22: ADD temp[4].x, const[19].x___, -temp[4].x___; 23: RCP temp[5].x, const[9].x___; 24: MUL temp[4].x, temp[4].x___, temp[5].x___; 25: TEX temp[13].x, temp[4].x___, 1D[2]; 26: MOV temp[4].x, temp[13].x___; 27: MUL temp[2].x, temp[2].x___, temp[4].x___; 28: MUL temp[4], const[10], temp[1].xxxx; 29: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 30: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 31: ADD temp[1], temp[1], const[13]; 32: MUL temp[4].xy, temp[0].xy__, const[19].ww__; 33: MOV temp[5].x, temp[4].x___; 34: FRC temp[6].x, temp[4].y___; 35: MUL temp[6].x, temp[6].x___, const[20].x___; 36: MOV temp[5].y, temp[6]._x__; 37: TEX temp[5], temp[5].xy__, 2D[0]; 38: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 39: MAD temp[7].xy, temp[5].xy__, const[7].xy__, temp[1].xy__; 40: MOV temp[7].xy, temp[7].xy__; 41: MOV temp[7].w, temp[1].___w; 42: MOV temp[7].z, temp[1].__z_; 43: TXP temp[14].x, temp[7].xy_w, 2DSHADOW[1]; 44: RCP temp[15].w, temp[7].___w; 45: MUL_SAT temp[15].w, temp[7].___z, temp[15].___w; 46: ADD temp[15].w, -temp[15].___w, temp[14].___x; 47: CMP temp[7].x, temp[15].w___, none.0___, none.1___; 48: MAD temp[8].xy, temp[5].zw__, const[7].xy__, temp[1].xy__; 49: MOV temp[8].xy, temp[8].xy__; 50: MOV temp[8].w, temp[1].___w; 51: MOV temp[8].z, temp[1].__z_; 52: TXP temp[16].x, temp[8].xy_w, 2DSHADOW[1]; 53: RCP temp[17].w, temp[8].___w; 54: MUL_SAT temp[17].w, temp[8].___z, temp[17].___w; 55: ADD temp[17].w, -temp[17].___w, temp[16].___x; 56: CMP temp[8].x, temp[17].w___, none.0___, none.1___; 57: ADD temp[5].x, temp[7].x___, temp[8].x___; 58: MOV temp[7].x, temp[4].x___; 59: ADD temp[8].x, temp[6].x___, const[20].x___; 60: MOV temp[7].y, temp[8]._x__; 61: TEX temp[7], temp[7].xy__, 2D[0]; 62: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 63: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 64: MOV temp[8].xy, temp[8].xy__; 65: MOV temp[8].w, temp[1].___w; 66: MOV temp[8].z, temp[1].__z_; 67: TXP temp[18].x, temp[8].xy_w, 2DSHADOW[1]; 68: RCP temp[19].w, temp[8].___w; 69: MUL_SAT temp[19].w, temp[8].___z, temp[19].___w; 70: ADD temp[19].w, -temp[19].___w, temp[18].___x; 71: CMP temp[8].x, temp[19].w___, none.0___, none.1___; 72: ADD temp[5].x, temp[5].x___, temp[8].x___; 73: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 74: MOV temp[7].xy, temp[7].xy__; 75: MOV temp[7].w, temp[1].___w; 76: MOV temp[7].z, temp[1].__z_; 77: TXP temp[20].x, temp[7].xy_w, 2DSHADOW[1]; 78: RCP temp[21].w, temp[7].___w; 79: MUL_SAT temp[21].w, temp[7].___z, temp[21].___w; 80: ADD temp[21].w, -temp[21].___w, temp[20].___x; 81: CMP temp[7].x, temp[21].w___, none.0___, none.1___; 82: ADD temp[5].x, temp[5].x___, temp[7].x___; 83: MOV temp[7].x, temp[4].x___; 84: ADD temp[8].x, temp[6].x___, const[20].w___; 85: MOV temp[7].y, temp[8]._x__; 86: TEX temp[7], temp[7].xy__, 2D[0]; 87: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 88: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 89: MOV temp[8].xy, temp[8].xy__; 90: MOV temp[8].w, temp[1].___w; 91: MOV temp[8].z, temp[1].__z_; 92: TXP temp[22].x, temp[8].xy_w, 2DSHADOW[1]; 93: RCP temp[23].w, temp[8].___w; 94: MUL_SAT temp[23].w, temp[8].___z, temp[23].___w; 95: ADD temp[23].w, -temp[23].___w, temp[22].___x; 96: CMP temp[8].x, temp[23].w___, none.0___, none.1___; 97: ADD temp[5].x, temp[5].x___, temp[8].x___; 98: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 99: MOV temp[7].xy, temp[7].xy__; 100: MOV temp[7].w, temp[1].___w; 101: MOV temp[7].z, temp[1].__z_; 102: TXP temp[24].x, temp[7].xy_w, 2DSHADOW[1]; 103: RCP temp[25].w, temp[7].___w; 104: MUL_SAT temp[25].w, temp[7].___z, temp[25].___w; 105: ADD temp[25].w, -temp[25].___w, temp[24].___x; 106: CMP temp[7].x, temp[25].w___, none.0___, none.1___; 107: ADD temp[5].x, temp[5].x___, temp[7].x___; 108: MOV temp[7].x, temp[4].x___; 109: ADD temp[8].x, temp[6].x___, const[21].x___; 110: MOV temp[7].y, temp[8]._x__; 111: TEX temp[7], temp[7].xy__, 2D[0]; 112: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 113: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 114: MOV temp[8].xy, temp[8].xy__; 115: MOV temp[8].w, temp[1].___w; 116: MOV temp[8].z, temp[1].__z_; 117: TXP temp[26].x, temp[8].xy_w, 2DSHADOW[1]; 118: RCP temp[27].w, temp[8].___w; 119: MUL_SAT temp[27].w, temp[8].___z, temp[27].___w; 120: ADD temp[27].w, -temp[27].___w, temp[26].___x; 121: CMP temp[8].x, temp[27].w___, none.0___, none.1___; 122: ADD temp[5].x, temp[5].x___, temp[8].x___; 123: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 124: MOV temp[7].xy, temp[7].xy__; 125: MOV temp[7].w, temp[1].___w; 126: MOV temp[7].z, temp[1].__z_; 127: TXP temp[28].x, temp[7].xy_w, 2DSHADOW[1]; 128: RCP temp[29].w, temp[7].___w; 129: MUL_SAT temp[29].w, temp[7].___z, temp[29].___w; 130: ADD temp[29].w, -temp[29].___w, temp[28].___x; 131: CMP temp[7].x, temp[29].w___, none.0___, none.1___; 132: ADD temp[5].x, temp[5].x___, temp[7].x___; 133: MOV temp[7].x, temp[4].x___; 134: ADD temp[8].x, temp[6].x___, const[21].y___; 135: MOV temp[7].y, temp[8]._x__; 136: TEX temp[7], temp[7].xy__, 2D[0]; 137: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 138: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 139: MOV temp[8].xy, temp[8].xy__; 140: MOV temp[8].w, temp[1].___w; 141: MOV temp[8].z, temp[1].__z_; 142: TXP temp[30].x, temp[8].xy_w, 2DSHADOW[1]; 143: RCP temp[31].w, temp[8].___w; 144: MUL_SAT temp[31].w, temp[8].___z, temp[31].___w; 145: ADD temp[31].w, -temp[31].___w, temp[30].___x; 146: CMP temp[8].x, temp[31].w___, none.0___, none.1___; 147: ADD temp[5].x, temp[5].x___, temp[8].x___; 148: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 149: MOV temp[7].xy, temp[7].xy__; 150: MOV temp[7].w, temp[1].___w; 151: MOV temp[7].z, temp[1].__z_; 152: TXP temp[32].x, temp[7].xy_w, 2DSHADOW[1]; 153: RCP temp[33].w, temp[7].___w; 154: MUL_SAT temp[33].w, temp[7].___z, temp[33].___w; 155: ADD temp[33].w, -temp[33].___w, temp[32].___x; 156: CMP temp[7].x, temp[33].w___, none.0___, none.1___; 157: ADD temp[5].x, temp[5].x___, temp[7].x___; 158: MOV temp[7].x, temp[4].x___; 159: ADD temp[8].x, temp[6].x___, const[21].z___; 160: MOV temp[7].y, temp[8]._x__; 161: TEX temp[7], temp[7].xy__, 2D[0]; 162: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 163: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 164: MOV temp[8].xy, temp[8].xy__; 165: MOV temp[8].w, temp[1].___w; 166: MOV temp[8].z, temp[1].__z_; 167: TXP temp[34].x, temp[8].xy_w, 2DSHADOW[1]; 168: RCP temp[35].w, temp[8].___w; 169: MUL_SAT temp[35].w, temp[8].___z, temp[35].___w; 170: ADD temp[35].w, -temp[35].___w, temp[34].___x; 171: CMP temp[8].x, temp[35].w___, none.0___, none.1___; 172: ADD temp[5].x, temp[5].x___, temp[8].x___; 173: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 174: MOV temp[7].xy, temp[7].xy__; 175: MOV temp[7].w, temp[1].___w; 176: MOV temp[7].z, temp[1].__z_; 177: TXP temp[36].x, temp[7].xy_w, 2DSHADOW[1]; 178: RCP temp[37].w, temp[7].___w; 179: MUL_SAT temp[37].w, temp[7].___z, temp[37].___w; 180: ADD temp[37].w, -temp[37].___w, temp[36].___x; 181: CMP temp[7].x, temp[37].w___, none.0___, none.1___; 182: ADD temp[5].x, temp[5].x___, temp[7].x___; 183: MOV temp[7].x, temp[4].x___; 184: ADD temp[8].x, temp[6].x___, const[21].w___; 185: MOV temp[7].y, temp[8]._x__; 186: TEX temp[7], temp[7].xy__, 2D[0]; 187: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 188: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 189: MOV temp[8].xy, temp[8].xy__; 190: MOV temp[8].w, temp[1].___w; 191: MOV temp[8].z, temp[1].__z_; 192: TXP temp[38].x, temp[8].xy_w, 2DSHADOW[1]; 193: RCP temp[39].w, temp[8].___w; 194: MUL_SAT temp[39].w, temp[8].___z, temp[39].___w; 195: ADD temp[39].w, -temp[39].___w, temp[38].___x; 196: CMP temp[8].x, temp[39].w___, none.0___, none.1___; 197: ADD temp[5].x, temp[5].x___, temp[8].x___; 198: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 199: MOV temp[7].xy, temp[7].xy__; 200: MOV temp[7].w, temp[1].___w; 201: MOV temp[7].z, temp[1].__z_; 202: TXP temp[40].x, temp[7].xy_w, 2DSHADOW[1]; 203: RCP temp[41].w, temp[7].___w; 204: MUL_SAT temp[41].w, temp[7].___z, temp[41].___w; 205: ADD temp[41].w, -temp[41].___w, temp[40].___x; 206: CMP temp[7].x, temp[41].w___, none.0___, none.1___; 207: ADD temp[5].x, temp[5].x___, temp[7].x___; 208: MOV temp[4].x, temp[4].x___; 209: ADD temp[6].x, temp[6].x___, const[22].x___; 210: MOV temp[4].y, temp[6]._x__; 211: TEX temp[4], temp[4].xy__, 2D[0]; 212: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 213: MAD temp[6].xy, temp[4].xy__, const[7].xy__, temp[1].xy__; 214: MOV temp[6].xy, temp[6].xy__; 215: MOV temp[6].w, temp[1].___w; 216: MOV temp[6].z, temp[1].__z_; 217: TXP temp[42].x, temp[6].xy_w, 2DSHADOW[1]; 218: RCP temp[43].w, temp[6].___w; 219: MUL_SAT temp[43].w, temp[6].___z, temp[43].___w; 220: ADD temp[43].w, -temp[43].___w, temp[42].___x; 221: CMP temp[6].x, temp[43].w___, none.0___, none.1___; 222: ADD temp[5].x, temp[5].x___, temp[6].x___; 223: MAD temp[4].xy, temp[4].zw__, const[7].xy__, temp[1].xy__; 224: MOV temp[4].xy, temp[4].xy__; 225: MOV temp[4].w, temp[1].___w; 226: MOV temp[4].z, temp[1].__z_; 227: TXP temp[44].x, temp[4].xy_w, 2DSHADOW[1]; 228: RCP temp[45].w, temp[4].___w; 229: MUL_SAT temp[45].w, temp[4].___z, temp[45].___w; 230: ADD temp[45].w, -temp[45].___w, temp[44].___x; 231: CMP temp[1].x, temp[45].w___, none.0___, none.1___; 232: ADD temp[5].x, temp[5].x___, temp[1].x___; 233: MUL temp[1].x, temp[5].x___, const[22].y___; 234: MUL temp[1].x, temp[2].x___, temp[1].x___; 235: MUL temp[46].xy, temp[0].xy__, const[26].xy__; 236: TEX temp[47].xyz, temp[46].xy__, 2D[6]; 237: MOV temp[2].xyz, temp[47].xyz_; 238: MUL temp[2].xyz, temp[2].xyz_, const[15].xyz_; 239: MUL temp[48].xy, temp[0].xy__, const[27].xy__; 240: TEX temp[49].xyz, temp[48].xy__, 2D[5]; 241: MOV temp[4].xyz, temp[49].xyz_; 242: MAD temp[4].xyz, temp[4].xyz_, const[20].yyy_, const[20].zzz_; 243: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 244: MAX temp[3].x, temp[3].x___, const[22].z___; 245: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 246: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 247: 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[23].xy__, const[24].xy__; 3: MOV temp[0].x, temp[9].x___; 4: MAD temp[0].y, temp[9]._y__, const[18]._x__, const[18]._y__; 5: RCP temp[1].x, input[1].z___; 6: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 7: MOV temp[1].z, const[14].__x_; 8: MUL temp[10].xy, temp[0].xy__, const[25].xy__; 9: TEX temp[11].xyz, temp[10].xy__, 2D[4]; 10: MOV temp[2].xyz, temp[11].xyz_; 11: DP3 temp[2].x, temp[2].xyz_, const[19].xyz_; 12: MUL temp[1].xyz, temp[1].xyz_, temp[2].xxx_; 13: ADD temp[2].xyz, const[17].xyz_, -temp[1].xyz_; 14: MUL temp[2].xyz, temp[2].xyz_, const[16].xxx_; 15: DP3 temp[3].x, temp[2].xyz_, temp[2].xyz_; 16: RSQ temp[3].x, |temp[3].x___|; 17: MUL temp[3].xyz, temp[2].xyz_, temp[3].xxx_; 18: DP3 temp[2].x, temp[2].xyz_, temp[2].xyz_; 19: TEX temp[12].x, temp[2].x___, 1D[3]; 20: MOV temp[2].x, temp[12].x___; 21: DP3 temp[4].x, temp[3].xyz_, const[8].xyz_; 22: ADD temp[4].x, const[19].x___, -temp[4].x___; 23: RCP temp[5].x, const[9].x___; 24: MUL temp[4].x, temp[4].x___, temp[5].x___; 25: TEX temp[13].x, temp[4].x___, 1D[2]; 26: MOV temp[4].x, temp[13].x___; 27: MUL temp[2].x, temp[2].x___, temp[4].x___; 28: MUL temp[4], const[10], temp[1].xxxx; 29: MAD temp[4], const[11], temp[1].yyyy, temp[4]; 30: MAD temp[1], const[12], temp[1].zzzz, temp[4]; 31: ADD temp[1], temp[1], const[13]; 32: MUL temp[4].xy, temp[0].xy__, const[19].ww__; 33: MOV temp[5].x, temp[4].x___; 34: FRC temp[6].x, temp[4].y___; 35: MUL temp[6].x, temp[6].x___, const[20].x___; 36: MOV temp[5].y, temp[6]._x__; 37: TEX temp[5], temp[5].xy__, 2D[0]; 38: MAD temp[5], temp[5], const[20].yyyy, const[20].zzzz; 39: MAD temp[7].xy, temp[5].xy__, const[7].xy__, temp[1].xy__; 40: MOV temp[7].xy, temp[7].xy__; 41: MOV temp[7].w, temp[1].___w; 42: MOV temp[7].z, temp[1].__z_; 43: TXP temp[14].x, temp[7].xy_w, 2DSHADOW[1]; 44: RCP temp[15].w, temp[7].___w; 45: MUL_SAT temp[15].w, temp[7].___z, temp[15].___w; 46: ADD temp[15].w, -temp[15].___w, temp[14].___x; 47: CMP temp[7].x, temp[15].w___, none.0___, none.1___; 48: MAD temp[8].xy, temp[5].zw__, const[7].xy__, temp[1].xy__; 49: MOV temp[8].xy, temp[8].xy__; 50: MOV temp[8].w, temp[1].___w; 51: MOV temp[8].z, temp[1].__z_; 52: TXP temp[16].x, temp[8].xy_w, 2DSHADOW[1]; 53: RCP temp[17].w, temp[8].___w; 54: MUL_SAT temp[17].w, temp[8].___z, temp[17].___w; 55: ADD temp[17].w, -temp[17].___w, temp[16].___x; 56: CMP temp[8].x, temp[17].w___, none.0___, none.1___; 57: ADD temp[5].x, temp[7].x___, temp[8].x___; 58: MOV temp[7].x, temp[4].x___; 59: ADD temp[8].x, temp[6].x___, const[20].x___; 60: MOV temp[7].y, temp[8]._x__; 61: TEX temp[7], temp[7].xy__, 2D[0]; 62: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 63: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 64: MOV temp[8].xy, temp[8].xy__; 65: MOV temp[8].w, temp[1].___w; 66: MOV temp[8].z, temp[1].__z_; 67: TXP temp[18].x, temp[8].xy_w, 2DSHADOW[1]; 68: RCP temp[19].w, temp[8].___w; 69: MUL_SAT temp[19].w, temp[8].___z, temp[19].___w; 70: ADD temp[19].w, -temp[19].___w, temp[18].___x; 71: CMP temp[8].x, temp[19].w___, none.0___, none.1___; 72: ADD temp[5].x, temp[5].x___, temp[8].x___; 73: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 74: MOV temp[7].xy, temp[7].xy__; 75: MOV temp[7].w, temp[1].___w; 76: MOV temp[7].z, temp[1].__z_; 77: TXP temp[20].x, temp[7].xy_w, 2DSHADOW[1]; 78: RCP temp[21].w, temp[7].___w; 79: MUL_SAT temp[21].w, temp[7].___z, temp[21].___w; 80: ADD temp[21].w, -temp[21].___w, temp[20].___x; 81: CMP temp[7].x, temp[21].w___, none.0___, none.1___; 82: ADD temp[5].x, temp[5].x___, temp[7].x___; 83: MOV temp[7].x, temp[4].x___; 84: ADD temp[8].x, temp[6].x___, const[20].w___; 85: MOV temp[7].y, temp[8]._x__; 86: TEX temp[7], temp[7].xy__, 2D[0]; 87: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 88: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 89: MOV temp[8].xy, temp[8].xy__; 90: MOV temp[8].w, temp[1].___w; 91: MOV temp[8].z, temp[1].__z_; 92: TXP temp[22].x, temp[8].xy_w, 2DSHADOW[1]; 93: RCP temp[23].w, temp[8].___w; 94: MUL_SAT temp[23].w, temp[8].___z, temp[23].___w; 95: ADD temp[23].w, -temp[23].___w, temp[22].___x; 96: CMP temp[8].x, temp[23].w___, none.0___, none.1___; 97: ADD temp[5].x, temp[5].x___, temp[8].x___; 98: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 99: MOV temp[7].xy, temp[7].xy__; 100: MOV temp[7].w, temp[1].___w; 101: MOV temp[7].z, temp[1].__z_; 102: TXP temp[24].x, temp[7].xy_w, 2DSHADOW[1]; 103: RCP temp[25].w, temp[7].___w; 104: MUL_SAT temp[25].w, temp[7].___z, temp[25].___w; 105: ADD temp[25].w, -temp[25].___w, temp[24].___x; 106: CMP temp[7].x, temp[25].w___, none.0___, none.1___; 107: ADD temp[5].x, temp[5].x___, temp[7].x___; 108: MOV temp[7].x, temp[4].x___; 109: ADD temp[8].x, temp[6].x___, const[21].x___; 110: MOV temp[7].y, temp[8]._x__; 111: TEX temp[7], temp[7].xy__, 2D[0]; 112: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 113: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 114: MOV temp[8].xy, temp[8].xy__; 115: MOV temp[8].w, temp[1].___w; 116: MOV temp[8].z, temp[1].__z_; 117: TXP temp[26].x, temp[8].xy_w, 2DSHADOW[1]; 118: RCP temp[27].w, temp[8].___w; 119: MUL_SAT temp[27].w, temp[8].___z, temp[27].___w; 120: ADD temp[27].w, -temp[27].___w, temp[26].___x; 121: CMP temp[8].x, temp[27].w___, none.0___, none.1___; 122: ADD temp[5].x, temp[5].x___, temp[8].x___; 123: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 124: MOV temp[7].xy, temp[7].xy__; 125: MOV temp[7].w, temp[1].___w; 126: MOV temp[7].z, temp[1].__z_; 127: TXP temp[28].x, temp[7].xy_w, 2DSHADOW[1]; 128: RCP temp[29].w, temp[7].___w; 129: MUL_SAT temp[29].w, temp[7].___z, temp[29].___w; 130: ADD temp[29].w, -temp[29].___w, temp[28].___x; 131: CMP temp[7].x, temp[29].w___, none.0___, none.1___; 132: ADD temp[5].x, temp[5].x___, temp[7].x___; 133: MOV temp[7].x, temp[4].x___; 134: ADD temp[8].x, temp[6].x___, const[21].y___; 135: MOV temp[7].y, temp[8]._x__; 136: TEX temp[7], temp[7].xy__, 2D[0]; 137: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 138: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 139: MOV temp[8].xy, temp[8].xy__; 140: MOV temp[8].w, temp[1].___w; 141: MOV temp[8].z, temp[1].__z_; 142: TXP temp[30].x, temp[8].xy_w, 2DSHADOW[1]; 143: RCP temp[31].w, temp[8].___w; 144: MUL_SAT temp[31].w, temp[8].___z, temp[31].___w; 145: ADD temp[31].w, -temp[31].___w, temp[30].___x; 146: CMP temp[8].x, temp[31].w___, none.0___, none.1___; 147: ADD temp[5].x, temp[5].x___, temp[8].x___; 148: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 149: MOV temp[7].xy, temp[7].xy__; 150: MOV temp[7].w, temp[1].___w; 151: MOV temp[7].z, temp[1].__z_; 152: TXP temp[32].x, temp[7].xy_w, 2DSHADOW[1]; 153: RCP temp[33].w, temp[7].___w; 154: MUL_SAT temp[33].w, temp[7].___z, temp[33].___w; 155: ADD temp[33].w, -temp[33].___w, temp[32].___x; 156: CMP temp[7].x, temp[33].w___, none.0___, none.1___; 157: ADD temp[5].x, temp[5].x___, temp[7].x___; 158: MOV temp[7].x, temp[4].x___; 159: ADD temp[8].x, temp[6].x___, const[21].z___; 160: MOV temp[7].y, temp[8]._x__; 161: TEX temp[7], temp[7].xy__, 2D[0]; 162: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 163: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 164: MOV temp[8].xy, temp[8].xy__; 165: MOV temp[8].w, temp[1].___w; 166: MOV temp[8].z, temp[1].__z_; 167: TXP temp[34].x, temp[8].xy_w, 2DSHADOW[1]; 168: RCP temp[35].w, temp[8].___w; 169: MUL_SAT temp[35].w, temp[8].___z, temp[35].___w; 170: ADD temp[35].w, -temp[35].___w, temp[34].___x; 171: CMP temp[8].x, temp[35].w___, none.0___, none.1___; 172: ADD temp[5].x, temp[5].x___, temp[8].x___; 173: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 174: MOV temp[7].xy, temp[7].xy__; 175: MOV temp[7].w, temp[1].___w; 176: MOV temp[7].z, temp[1].__z_; 177: TXP temp[36].x, temp[7].xy_w, 2DSHADOW[1]; 178: RCP temp[37].w, temp[7].___w; 179: MUL_SAT temp[37].w, temp[7].___z, temp[37].___w; 180: ADD temp[37].w, -temp[37].___w, temp[36].___x; 181: CMP temp[7].x, temp[37].w___, none.0___, none.1___; 182: ADD temp[5].x, temp[5].x___, temp[7].x___; 183: MOV temp[7].x, temp[4].x___; 184: ADD temp[8].x, temp[6].x___, const[21].w___; 185: MOV temp[7].y, temp[8]._x__; 186: TEX temp[7], temp[7].xy__, 2D[0]; 187: MAD temp[7], temp[7], const[20].yyyy, const[20].zzzz; 188: MAD temp[8].xy, temp[7].xy__, const[7].xy__, temp[1].xy__; 189: MOV temp[8].xy, temp[8].xy__; 190: MOV temp[8].w, temp[1].___w; 191: MOV temp[8].z, temp[1].__z_; 192: TXP temp[38].x, temp[8].xy_w, 2DSHADOW[1]; 193: RCP temp[39].w, temp[8].___w; 194: MUL_SAT temp[39].w, temp[8].___z, temp[39].___w; 195: ADD temp[39].w, -temp[39].___w, temp[38].___x; 196: CMP temp[8].x, temp[39].w___, none.0___, none.1___; 197: ADD temp[5].x, temp[5].x___, temp[8].x___; 198: MAD temp[7].xy, temp[7].zw__, const[7].xy__, temp[1].xy__; 199: MOV temp[7].xy, temp[7].xy__; 200: MOV temp[7].w, temp[1].___w; 201: MOV temp[7].z, temp[1].__z_; 202: TXP temp[40].x, temp[7].xy_w, 2DSHADOW[1]; 203: RCP temp[41].w, temp[7].___w; 204: MUL_SAT temp[41].w, temp[7].___z, temp[41].___w; 205: ADD temp[41].w, -temp[41].___w, temp[40].___x; 206: CMP temp[7].x, temp[41].w___, none.0___, none.1___; 207: ADD temp[5].x, temp[5].x___, temp[7].x___; 208: MOV temp[4].x, temp[4].x___; 209: ADD temp[6].x, temp[6].x___, const[22].x___; 210: MOV temp[4].y, temp[6]._x__; 211: TEX temp[4], temp[4].xy__, 2D[0]; 212: MAD temp[4], temp[4], const[20].yyyy, const[20].zzzz; 213: MAD temp[6].xy, temp[4].xy__, const[7].xy__, temp[1].xy__; 214: MOV temp[6].xy, temp[6].xy__; 215: MOV temp[6].w, temp[1].___w; 216: MOV temp[6].z, temp[1].__z_; 217: TXP temp[42].x, temp[6].xy_w, 2DSHADOW[1]; 218: RCP temp[43].w, temp[6].___w; 219: MUL_SAT temp[43].w, temp[6].___z, temp[43].___w; 220: ADD temp[43].w, -temp[43].___w, temp[42].___x; 221: CMP temp[6].x, temp[43].w___, none.0___, none.1___; 222: ADD temp[5].x, temp[5].x___, temp[6].x___; 223: MAD temp[4].xy, temp[4].zw__, const[7].xy__, temp[1].xy__; 224: MOV temp[4].xy, temp[4].xy__; 225: MOV temp[4].w, temp[1].___w; 226: MOV temp[4].z, temp[1].__z_; 227: TXP temp[44].x, temp[4].xy_w, 2DSHADOW[1]; 228: RCP temp[45].w, temp[4].___w; 229: MUL_SAT temp[45].w, temp[4].___z, temp[45].___w; 230: ADD temp[45].w, -temp[45].___w, temp[44].___x; 231: CMP temp[1].x, temp[45].w___, none.0___, none.1___; 232: ADD temp[5].x, temp[5].x___, temp[1].x___; 233: MUL temp[1].x, temp[5].x___, const[22].y___; 234: MUL temp[1].x, temp[2].x___, temp[1].x___; 235: MUL temp[46].xy, temp[0].xy__, const[26].xy__; 236: TEX temp[47].xyz, temp[46].xy__, 2D[6]; 237: MOV temp[2].xyz, temp[47].xyz_; 238: MUL temp[2].xyz, temp[2].xyz_, const[15].xyz_; 239: MUL temp[48].xy, temp[0].xy__, const[27].xy__; 240: TEX temp[49].xyz, temp[48].xy__, 2D[5]; 241: MOV temp[4].xyz, temp[49].xyz_; 242: MAD temp[4].xyz, temp[4].xyz_, const[20].yyy_, const[20].zzz_; 243: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 244: MAX temp[3].x, temp[3].x___, const[22].z___; 245: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 246: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 247: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[50].w, input[0].___w; 1: MUL temp[51].xy, input[0].xy__, temp[50].ww__; 2: MAD temp[52].xy, temp[51].xy__, const[23].xy__, const[24].xy__; 3: MOV temp[53].x, temp[52].x___; 4: MAD temp[53].y, temp[52]._y__, const[18]._x__, const[18]._y__; 5: RCP temp[54].x, input[1].z___; 6: MUL temp[55].xy, input[1].xy__, temp[54].xx__; 7: MOV temp[55].z, const[14].__x_; 8: MUL temp[56].xy, temp[53].xy__, const[25].xy__; 9: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 10: MOV temp[58].xyz, temp[57].xyz_; 11: DP3 temp[59].x, temp[58].xyz_, const[19].xyz_; 12: MUL temp[60].xyz, temp[55].xyz_, temp[59].xxx_; 13: ADD temp[61].xyz, const[17].xyz_, -temp[60].xyz_; 14: MUL temp[62].xyz, temp[61].xyz_, const[16].xxx_; 15: DP3 temp[63].x, temp[62].xyz_, temp[62].xyz_; 16: RSQ temp[64].x, |temp[63].x___|; 17: MUL temp[65].xyz, temp[62].xyz_, temp[64].xxx_; 18: DP3 temp[66].x, temp[62].xyz_, temp[62].xyz_; 19: TEX temp[67].x, temp[66].x___, 1D[3]; 20: MOV temp[68].x, temp[67].x___; 21: DP3 temp[69].x, temp[65].xyz_, const[8].xyz_; 22: ADD temp[70].x, const[19].x___, -temp[69].x___; 23: RCP temp[71].x, const[9].x___; 24: MUL temp[72].x, temp[70].x___, temp[71].x___; 25: TEX temp[73].x, temp[72].x___, 1D[2]; 26: MOV temp[74].x, temp[73].x___; 27: MUL temp[75].x, temp[68].x___, temp[74].x___; 28: MUL temp[76], const[10], temp[60].xxxx; 29: MAD temp[77], const[11], temp[60].yyyy, temp[76]; 30: MAD temp[78], const[12], temp[60].zzzz, temp[77]; 31: ADD temp[79], temp[78], const[13]; 32: MUL temp[80].xy, temp[53].xy__, const[19].ww__; 33: MOV temp[81].x, temp[80].x___; 34: FRC temp[82].x, temp[80].y___; 35: MUL temp[83].x, temp[82].x___, const[20].x___; 36: MOV temp[81].y, temp[83]._x__; 37: TEX temp[84], temp[81].xy__, 2D[0]; 38: MAD temp[85], temp[84], const[20].yyyy, const[20].zzzz; 39: MAD temp[86].xy, temp[85].xy__, const[7].xy__, temp[79].xy__; 40: MOV temp[87].xy, temp[86].xy__; 41: MOV temp[87].w, temp[79].___w; 42: MOV temp[88].z, temp[79].__z_; 43: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 44: RCP temp[90].w, temp[87].___w; 45: MUL_SAT temp[91].w, temp[88].___z, temp[90].___w; 46: ADD temp[92].w, -temp[91].___w, temp[89].___x; 47: CMP temp[93].x, temp[92].w___, none.0___, none.1___; 48: MAD temp[94].xy, temp[85].zw__, const[7].xy__, temp[79].xy__; 49: MOV temp[95].xy, temp[94].xy__; 50: MOV temp[95].w, temp[79].___w; 51: MOV temp[96].z, temp[79].__z_; 52: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 53: RCP temp[98].w, temp[95].___w; 54: MUL_SAT temp[99].w, temp[96].___z, temp[98].___w; 55: ADD temp[100].w, -temp[99].___w, temp[97].___x; 56: CMP temp[101].x, temp[100].w___, none.0___, none.1___; 57: ADD temp[102].x, temp[93].x___, temp[101].x___; 58: MOV temp[103].x, temp[80].x___; 59: ADD temp[104].x, temp[83].x___, const[20].x___; 60: MOV temp[103].y, temp[104]._x__; 61: TEX temp[105], temp[103].xy__, 2D[0]; 62: MAD temp[106], temp[105], const[20].yyyy, const[20].zzzz; 63: MAD temp[107].xy, temp[106].xy__, const[7].xy__, temp[79].xy__; 64: MOV temp[108].xy, temp[107].xy__; 65: MOV temp[108].w, temp[79].___w; 66: MOV temp[109].z, temp[79].__z_; 67: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 68: RCP temp[111].w, temp[108].___w; 69: MUL_SAT temp[112].w, temp[109].___z, temp[111].___w; 70: ADD temp[113].w, -temp[112].___w, temp[110].___x; 71: CMP temp[114].x, temp[113].w___, none.0___, none.1___; 72: ADD temp[115].x, temp[102].x___, temp[114].x___; 73: MAD temp[116].xy, temp[106].zw__, const[7].xy__, temp[79].xy__; 74: MOV temp[117].xy, temp[116].xy__; 75: MOV temp[117].w, temp[79].___w; 76: MOV temp[118].z, temp[79].__z_; 77: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 78: RCP temp[120].w, temp[117].___w; 79: MUL_SAT temp[121].w, temp[118].___z, temp[120].___w; 80: ADD temp[122].w, -temp[121].___w, temp[119].___x; 81: CMP temp[123].x, temp[122].w___, none.0___, none.1___; 82: ADD temp[124].x, temp[115].x___, temp[123].x___; 83: MOV temp[125].x, temp[80].x___; 84: ADD temp[126].x, temp[83].x___, const[20].w___; 85: MOV temp[125].y, temp[126]._x__; 86: TEX temp[127], temp[125].xy__, 2D[0]; 87: MAD temp[128], temp[127], const[20].yyyy, const[20].zzzz; 88: MAD temp[129].xy, temp[128].xy__, const[7].xy__, temp[79].xy__; 89: MOV temp[130].xy, temp[129].xy__; 90: MOV temp[130].w, temp[79].___w; 91: MOV temp[131].z, temp[79].__z_; 92: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1]; 93: RCP temp[133].w, temp[130].___w; 94: MUL_SAT temp[134].w, temp[131].___z, temp[133].___w; 95: ADD temp[135].w, -temp[134].___w, temp[132].___x; 96: CMP temp[136].x, temp[135].w___, none.0___, none.1___; 97: ADD temp[137].x, temp[124].x___, temp[136].x___; 98: MAD temp[138].xy, temp[128].zw__, const[7].xy__, temp[79].xy__; 99: MOV temp[139].xy, temp[138].xy__; 100: MOV temp[139].w, temp[79].___w; 101: MOV temp[140].z, temp[79].__z_; 102: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 103: RCP temp[142].w, temp[139].___w; 104: MUL_SAT temp[143].w, temp[140].___z, temp[142].___w; 105: ADD temp[144].w, -temp[143].___w, temp[141].___x; 106: CMP temp[145].x, temp[144].w___, none.0___, none.1___; 107: ADD temp[146].x, temp[137].x___, temp[145].x___; 108: MOV temp[147].x, temp[80].x___; 109: ADD temp[148].x, temp[83].x___, const[21].x___; 110: MOV temp[147].y, temp[148]._x__; 111: TEX temp[149], temp[147].xy__, 2D[0]; 112: MAD temp[150], temp[149], const[20].yyyy, const[20].zzzz; 113: MAD temp[151].xy, temp[150].xy__, const[7].xy__, temp[79].xy__; 114: MOV temp[152].xy, temp[151].xy__; 115: MOV temp[152].w, temp[79].___w; 116: MOV temp[153].z, temp[79].__z_; 117: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 118: RCP temp[155].w, temp[152].___w; 119: MUL_SAT temp[156].w, temp[153].___z, temp[155].___w; 120: ADD temp[157].w, -temp[156].___w, temp[154].___x; 121: CMP temp[158].x, temp[157].w___, none.0___, none.1___; 122: ADD temp[159].x, temp[146].x___, temp[158].x___; 123: MAD temp[160].xy, temp[150].zw__, const[7].xy__, temp[79].xy__; 124: MOV temp[161].xy, temp[160].xy__; 125: MOV temp[161].w, temp[79].___w; 126: MOV temp[162].z, temp[79].__z_; 127: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 128: RCP temp[164].w, temp[161].___w; 129: MUL_SAT temp[165].w, temp[162].___z, temp[164].___w; 130: ADD temp[166].w, -temp[165].___w, temp[163].___x; 131: CMP temp[167].x, temp[166].w___, none.0___, none.1___; 132: ADD temp[168].x, temp[159].x___, temp[167].x___; 133: MOV temp[169].x, temp[80].x___; 134: ADD temp[170].x, temp[83].x___, const[21].y___; 135: MOV temp[169].y, temp[170]._x__; 136: TEX temp[171], temp[169].xy__, 2D[0]; 137: MAD temp[172], temp[171], const[20].yyyy, const[20].zzzz; 138: MAD temp[173].xy, temp[172].xy__, const[7].xy__, temp[79].xy__; 139: MOV temp[174].xy, temp[173].xy__; 140: MOV temp[174].w, temp[79].___w; 141: MOV temp[175].z, temp[79].__z_; 142: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1]; 143: RCP temp[177].w, temp[174].___w; 144: MUL_SAT temp[178].w, temp[175].___z, temp[177].___w; 145: ADD temp[179].w, -temp[178].___w, temp[176].___x; 146: CMP temp[180].x, temp[179].w___, none.0___, none.1___; 147: ADD temp[181].x, temp[168].x___, temp[180].x___; 148: MAD temp[182].xy, temp[172].zw__, const[7].xy__, temp[79].xy__; 149: MOV temp[183].xy, temp[182].xy__; 150: MOV temp[183].w, temp[79].___w; 151: MOV temp[184].z, temp[79].__z_; 152: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 153: RCP temp[186].w, temp[183].___w; 154: MUL_SAT temp[187].w, temp[184].___z, temp[186].___w; 155: ADD temp[188].w, -temp[187].___w, temp[185].___x; 156: CMP temp[189].x, temp[188].w___, none.0___, none.1___; 157: ADD temp[190].x, temp[181].x___, temp[189].x___; 158: MOV temp[191].x, temp[80].x___; 159: ADD temp[192].x, temp[83].x___, const[21].z___; 160: MOV temp[191].y, temp[192]._x__; 161: TEX temp[193], temp[191].xy__, 2D[0]; 162: MAD temp[194], temp[193], const[20].yyyy, const[20].zzzz; 163: MAD temp[195].xy, temp[194].xy__, const[7].xy__, temp[79].xy__; 164: MOV temp[196].xy, temp[195].xy__; 165: MOV temp[196].w, temp[79].___w; 166: MOV temp[197].z, temp[79].__z_; 167: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 168: RCP temp[199].w, temp[196].___w; 169: MUL_SAT temp[200].w, temp[197].___z, temp[199].___w; 170: ADD temp[201].w, -temp[200].___w, temp[198].___x; 171: CMP temp[202].x, temp[201].w___, none.0___, none.1___; 172: ADD temp[203].x, temp[190].x___, temp[202].x___; 173: MAD temp[204].xy, temp[194].zw__, const[7].xy__, temp[79].xy__; 174: MOV temp[205].xy, temp[204].xy__; 175: MOV temp[205].w, temp[79].___w; 176: MOV temp[206].z, temp[79].__z_; 177: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 178: RCP temp[208].w, temp[205].___w; 179: MUL_SAT temp[209].w, temp[206].___z, temp[208].___w; 180: ADD temp[210].w, -temp[209].___w, temp[207].___x; 181: CMP temp[211].x, temp[210].w___, none.0___, none.1___; 182: ADD temp[212].x, temp[203].x___, temp[211].x___; 183: MOV temp[213].x, temp[80].x___; 184: ADD temp[214].x, temp[83].x___, const[21].w___; 185: MOV temp[213].y, temp[214]._x__; 186: TEX temp[215], temp[213].xy__, 2D[0]; 187: MAD temp[216], temp[215], const[20].yyyy, const[20].zzzz; 188: MAD temp[217].xy, temp[216].xy__, const[7].xy__, temp[79].xy__; 189: MOV temp[218].xy, temp[217].xy__; 190: MOV temp[218].w, temp[79].___w; 191: MOV temp[219].z, temp[79].__z_; 192: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 193: RCP temp[221].w, temp[218].___w; 194: MUL_SAT temp[222].w, temp[219].___z, temp[221].___w; 195: ADD temp[223].w, -temp[222].___w, temp[220].___x; 196: CMP temp[224].x, temp[223].w___, none.0___, none.1___; 197: ADD temp[225].x, temp[212].x___, temp[224].x___; 198: MAD temp[226].xy, temp[216].zw__, const[7].xy__, temp[79].xy__; 199: MOV temp[227].xy, temp[226].xy__; 200: MOV temp[227].w, temp[79].___w; 201: MOV temp[228].z, temp[79].__z_; 202: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1]; 203: RCP temp[230].w, temp[227].___w; 204: MUL_SAT temp[231].w, temp[228].___z, temp[230].___w; 205: ADD temp[232].w, -temp[231].___w, temp[229].___x; 206: CMP temp[233].x, temp[232].w___, none.0___, none.1___; 207: ADD temp[234].x, temp[225].x___, temp[233].x___; 208: MOV temp[235].x, temp[80].x___; 209: ADD temp[236].x, temp[83].x___, const[22].x___; 210: MOV temp[235].y, temp[236]._x__; 211: TEX temp[237], temp[235].xy__, 2D[0]; 212: MAD temp[238], temp[237], const[20].yyyy, const[20].zzzz; 213: MAD temp[239].xy, temp[238].xy__, const[7].xy__, temp[79].xy__; 214: MOV temp[240].xy, temp[239].xy__; 215: MOV temp[240].w, temp[79].___w; 216: MOV temp[241].z, temp[79].__z_; 217: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 218: RCP temp[243].w, temp[240].___w; 219: MUL_SAT temp[244].w, temp[241].___z, temp[243].___w; 220: ADD temp[245].w, -temp[244].___w, temp[242].___x; 221: CMP temp[246].x, temp[245].w___, none.0___, none.1___; 222: ADD temp[247].x, temp[234].x___, temp[246].x___; 223: MAD temp[248].xy, temp[238].zw__, const[7].xy__, temp[79].xy__; 224: MOV temp[249].xy, temp[248].xy__; 225: MOV temp[249].w, temp[79].___w; 226: MOV temp[250].z, temp[79].__z_; 227: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 228: RCP temp[252].w, temp[249].___w; 229: MUL_SAT temp[253].w, temp[250].___z, temp[252].___w; 230: ADD temp[254].w, -temp[253].___w, temp[251].___x; 231: CMP temp[255].x, temp[254].w___, none.0___, none.1___; 232: ADD temp[256].x, temp[247].x___, temp[255].x___; 233: MUL temp[257].x, temp[256].x___, const[22].y___; 234: MUL temp[258].x, temp[75].x___, temp[257].x___; 235: MUL temp[259].xy, temp[53].xy__, const[26].xy__; 236: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 237: MOV temp[261].xyz, temp[260].xyz_; 238: MUL temp[262].xyz, temp[261].xyz_, const[15].xyz_; 239: MUL temp[263].xy, temp[53].xy__, const[27].xy__; 240: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 241: MOV temp[265].xyz, temp[264].xyz_; 242: MAD temp[266].xyz, temp[265].xyz_, const[20].yyy_, const[20].zzz_; 243: DP3 temp[267].x, temp[65].xyz_, temp[266].xyz_; 244: MAX temp[268].x, temp[267].x___, const[22].z___; 245: MUL temp[269].xyz, temp[262].xyz_, temp[268].xxx_; 246: MUL temp[79].xyz, temp[269].xyz_, temp[258].xxx_; 247: MOV output[0], temp[79]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[50].w, input[0].___w; 1: MUL temp[51].xy, input[0].xy__, temp[50].ww__; 2: MAD temp[52].xy, temp[51].xy__, const[23].xy__, const[24].xy__; 3: MOV temp[53].x, temp[52].x___; 4: MAD temp[53].y, temp[52]._y__, const[18]._x__, const[18]._y__; 5: RCP temp[54].x, input[1].z___; 6: MUL temp[55].xy, input[1].xy__, temp[54].xx__; 7: MOV temp[55].z, const[14].__x_; 8: MUL temp[56].xy, temp[53].xy__, const[25].xy__; 9: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 10: DP3 temp[59].x, temp[57].xyz_, const[19].xyz_; 11: MUL temp[60].xyz, temp[55].xyz_, temp[59].xxx_; 12: MUL temp[62].xyz, (const[17] - temp[60]).xyz_, const[16].xxx_; 13: DP3 temp[63].x, temp[62].xyz_, temp[62].xyz_; 14: RSQ temp[64].x, |temp[63].x___|; 15: MUL temp[65].xyz, temp[62].xyz_, temp[64].xxx_; 16: DP3 temp[66].x, temp[62].xyz_, temp[62].xyz_; 17: TEX temp[67].x, temp[66].x___, 1D[3]; 18: DP3 temp[69].x, temp[65].xyz_, const[8].xyz_; 19: ADD temp[70].x, none.1___, -temp[69].x___; 20: RCP temp[71].x, const[9].x___; 21: MUL temp[72].x, temp[70].x___, temp[71].x___; 22: TEX temp[73].x, temp[72].x___, 1D[2]; 23: MUL temp[75].x, temp[67].x___, temp[73].x___; 24: MUL temp[76], const[10], temp[60].xxxx; 25: MAD temp[77], const[11], temp[60].yyyy, temp[76]; 26: MAD temp[78], const[12], temp[60].zzzz, temp[77]; 27: ADD temp[79], temp[78], const[13]; 28: MUL temp[80].xy, temp[53].xy__, const[19].ww__; 29: MOV temp[81].x, temp[80].x___; 30: FRC temp[83].x / 8, temp[80].y___; 31: MOV temp[81].y, temp[83]._x__; 32: TEX temp[84], temp[81].xy__, 2D[0]; 33: MAD temp[85], temp[84], const[20].yyyy, -none.1111; 34: MAD temp[86].xy, temp[85].xy__, const[7].xy__, temp[79].xy__; 35: MOV temp[87].xy, temp[86].xy__; 36: MOV temp[87].w, temp[79].___w; 37: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 38: RCP temp[90].w, temp[87].___w; 39: MUL_SAT temp[91].w, temp[79].___z, temp[90].___w; 40: ADD temp[92].w, -temp[91].___w, temp[89].___x; 41: CMP temp[93].x, temp[92].w___, none.0___, none.1___; 42: MAD temp[94].xy, temp[85].zw__, const[7].xy__, temp[79].xy__; 43: MOV temp[95].xy, temp[94].xy__; 44: MOV temp[95].w, temp[79].___w; 45: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 46: RCP temp[98].w, temp[95].___w; 47: MUL_SAT temp[99].w, temp[79].___z, temp[98].___w; 48: ADD temp[100].w, -temp[99].___w, temp[97].___x; 49: CMP temp[101].x, temp[100].w___, none.0___, none.1___; 50: MOV temp[103].x, temp[80].x___; 51: MOV temp[103].y, (const[20] + temp[83])._x__; 52: TEX temp[105], temp[103].xy__, 2D[0]; 53: MAD temp[106], temp[105], const[20].yyyy, -none.1111; 54: MAD temp[107].xy, temp[106].xy__, const[7].xy__, temp[79].xy__; 55: MOV temp[108].xy, temp[107].xy__; 56: MOV temp[108].w, temp[79].___w; 57: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 58: RCP temp[111].w, temp[108].___w; 59: MUL_SAT temp[112].w, temp[79].___z, temp[111].___w; 60: ADD temp[113].w, -temp[112].___w, temp[110].___x; 61: CMP temp[114].x, temp[113].w___, none.0___, none.1___; 62: ADD temp[115].x, (temp[101] + temp[93]).x___, temp[114].x___; 63: MAD temp[116].xy, temp[106].zw__, const[7].xy__, temp[79].xy__; 64: MOV temp[117].xy, temp[116].xy__; 65: MOV temp[117].w, temp[79].___w; 66: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 67: RCP temp[120].w, temp[117].___w; 68: MUL_SAT temp[121].w, temp[79].___z, temp[120].___w; 69: ADD temp[122].w, -temp[121].___w, temp[119].___x; 70: CMP temp[123].x, temp[122].w___, none.0___, none.1___; 71: MOV temp[125].x, temp[80].x___; 72: ADD temp[126].x, temp[83].x___, const[20].w___; 73: MOV temp[125].y, temp[126]._x__; 74: TEX temp[127], temp[125].xy__, 2D[0]; 75: MAD temp[128], temp[127], const[20].yyyy, -none.1111; 76: MAD temp[129].xy, temp[128].xy__, const[7].xy__, temp[79].xy__; 77: MOV temp[130].xy, temp[129].xy__; 78: MOV temp[130].w, temp[79].___w; 79: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1]; 80: RCP temp[133].w, temp[130].___w; 81: MUL_SAT temp[134].w, temp[79].___z, temp[133].___w; 82: ADD temp[135].w, -temp[134].___w, temp[132].___x; 83: CMP temp[136].x, temp[135].w___, none.0___, none.1___; 84: ADD temp[137].x, (temp[123] + temp[115]).x___, temp[136].x___; 85: MAD temp[138].xy, temp[128].zw__, const[7].xy__, temp[79].xy__; 86: MOV temp[139].xy, temp[138].xy__; 87: MOV temp[139].w, temp[79].___w; 88: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 89: RCP temp[142].w, temp[139].___w; 90: MUL_SAT temp[143].w, temp[79].___z, temp[142].___w; 91: ADD temp[144].w, -temp[143].___w, temp[141].___x; 92: CMP temp[145].x, temp[144].w___, none.0___, none.1___; 93: MOV temp[147].x, temp[80].x___; 94: MOV temp[147].y, (const[21] + temp[83])._x__; 95: TEX temp[149], temp[147].xy__, 2D[0]; 96: MAD temp[150], temp[149], const[20].yyyy, -none.1111; 97: MAD temp[151].xy, temp[150].xy__, const[7].xy__, temp[79].xy__; 98: MOV temp[152].xy, temp[151].xy__; 99: MOV temp[152].w, temp[79].___w; 100: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 101: RCP temp[155].w, temp[152].___w; 102: MUL_SAT temp[156].w, temp[79].___z, temp[155].___w; 103: ADD temp[157].w, -temp[156].___w, temp[154].___x; 104: CMP temp[158].x, temp[157].w___, none.0___, none.1___; 105: ADD temp[159].x, (temp[145] + temp[137]).x___, temp[158].x___; 106: MAD temp[160].xy, temp[150].zw__, const[7].xy__, temp[79].xy__; 107: MOV temp[161].xy, temp[160].xy__; 108: MOV temp[161].w, temp[79].___w; 109: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 110: RCP temp[164].w, temp[161].___w; 111: MUL_SAT temp[165].w, temp[79].___z, temp[164].___w; 112: ADD temp[166].w, -temp[165].___w, temp[163].___x; 113: CMP temp[167].x, temp[166].w___, none.0___, none.1___; 114: MOV temp[169].x, temp[80].x___; 115: ADD temp[170].x, temp[83].x___, none.H___; 116: MOV temp[169].y, temp[170]._x__; 117: TEX temp[171], temp[169].xy__, 2D[0]; 118: MAD temp[172], temp[171], const[20].yyyy, -none.1111; 119: MAD temp[173].xy, temp[172].xy__, const[7].xy__, temp[79].xy__; 120: MOV temp[174].xy, temp[173].xy__; 121: MOV temp[174].w, temp[79].___w; 122: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1]; 123: RCP temp[177].w, temp[174].___w; 124: MUL_SAT temp[178].w, temp[79].___z, temp[177].___w; 125: ADD temp[179].w, -temp[178].___w, temp[176].___x; 126: CMP temp[180].x, temp[179].w___, none.0___, none.1___; 127: ADD temp[181].x, (temp[167] + temp[159]).x___, temp[180].x___; 128: MAD temp[182].xy, temp[172].zw__, const[7].xy__, temp[79].xy__; 129: MOV temp[183].xy, temp[182].xy__; 130: MOV temp[183].w, temp[79].___w; 131: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 132: RCP temp[186].w, temp[183].___w; 133: MUL_SAT temp[187].w, temp[79].___z, temp[186].___w; 134: ADD temp[188].w, -temp[187].___w, temp[185].___x; 135: CMP temp[189].x, temp[188].w___, none.0___, none.1___; 136: MOV temp[191].x, temp[80].x___; 137: ADD temp[192].x, temp[83].x___, const[21].z___; 138: MOV temp[191].y, temp[192]._x__; 139: TEX temp[193], temp[191].xy__, 2D[0]; 140: MAD temp[194], temp[193], const[20].yyyy, -none.1111; 141: MAD temp[195].xy, temp[194].xy__, const[7].xy__, temp[79].xy__; 142: MOV temp[196].xy, temp[195].xy__; 143: MOV temp[196].w, temp[79].___w; 144: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 145: RCP temp[199].w, temp[196].___w; 146: MUL_SAT temp[200].w, temp[79].___z, temp[199].___w; 147: ADD temp[201].w, -temp[200].___w, temp[198].___x; 148: CMP temp[202].x, temp[201].w___, none.0___, none.1___; 149: ADD temp[203].x, (temp[189] + temp[181]).x___, temp[202].x___; 150: MAD temp[204].xy, temp[194].zw__, const[7].xy__, temp[79].xy__; 151: MOV temp[205].xy, temp[204].xy__; 152: MOV temp[205].w, temp[79].___w; 153: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 154: RCP temp[208].w, temp[205].___w; 155: MUL_SAT temp[209].w, temp[79].___z, temp[208].___w; 156: ADD temp[210].w, -temp[209].___w, temp[207].___x; 157: CMP temp[211].x, temp[210].w___, none.0___, none.1___; 158: MOV temp[213].x, temp[80].x___; 159: ADD temp[214].x, temp[83].x___, const[21].w___; 160: MOV temp[213].y, temp[214]._x__; 161: TEX temp[215], temp[213].xy__, 2D[0]; 162: MAD temp[216], temp[215], const[20].yyyy, -none.1111; 163: MAD temp[217].xy, temp[216].xy__, const[7].xy__, temp[79].xy__; 164: MOV temp[218].xy, temp[217].xy__; 165: MOV temp[218].w, temp[79].___w; 166: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 167: RCP temp[221].w, temp[218].___w; 168: MUL_SAT temp[222].w, temp[79].___z, temp[221].___w; 169: ADD temp[223].w, -temp[222].___w, temp[220].___x; 170: CMP temp[224].x, temp[223].w___, none.0___, none.1___; 171: ADD temp[225].x, (temp[211] + temp[203]).x___, temp[224].x___; 172: MAD temp[226].xy, temp[216].zw__, const[7].xy__, temp[79].xy__; 173: MOV temp[227].xy, temp[226].xy__; 174: MOV temp[227].w, temp[79].___w; 175: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1]; 176: RCP temp[230].w, temp[227].___w; 177: MUL_SAT temp[231].w, temp[79].___z, temp[230].___w; 178: ADD temp[232].w, -temp[231].___w, temp[229].___x; 179: CMP temp[233].x, temp[232].w___, none.0___, none.1___; 180: MOV temp[235].x, temp[80].x___; 181: MOV temp[235].y, (const[22] + temp[83])._x__; 182: TEX temp[237], temp[235].xy__, 2D[0]; 183: MAD temp[238], temp[237], const[20].yyyy, -none.1111; 184: MAD temp[239].xy, temp[238].xy__, const[7].xy__, temp[79].xy__; 185: MOV temp[240].xy, temp[239].xy__; 186: MOV temp[240].w, temp[79].___w; 187: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 188: RCP temp[243].w, temp[240].___w; 189: MUL_SAT temp[244].w, temp[79].___z, temp[243].___w; 190: ADD temp[245].w, -temp[244].___w, temp[242].___x; 191: CMP temp[246].x, temp[245].w___, none.0___, none.1___; 192: ADD temp[247].x, (temp[233] + temp[225]).x___, temp[246].x___; 193: MAD temp[248].xy, temp[238].zw__, const[7].xy__, temp[79].xy__; 194: MOV temp[249].xy, temp[248].xy__; 195: MOV temp[249].w, temp[79].___w; 196: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 197: RCP temp[252].w, temp[249].___w; 198: MUL_SAT temp[253].w, temp[79].___z, temp[252].___w; 199: ADD temp[254].w, -temp[253].___w, temp[251].___x; 200: CMP temp[255].x, temp[254].w___, none.0___, none.1___; 201: MUL temp[257].x, (temp[255] + temp[247]).x___, const[22].y___; 202: MUL temp[258].x, temp[75].x___, temp[257].x___; 203: MUL temp[259].xy, temp[53].xy__, const[26].xy__; 204: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 205: MUL temp[262].xyz, temp[260].xyz_, const[15].xyz_; 206: MUL temp[263].xy, temp[53].xy__, const[27].xy__; 207: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 208: MAD temp[266].xyz, temp[264].xyz_, const[20].yyy_, none.-1-1-1_; 209: DP3 temp[267].x, temp[65].xyz_, temp[266].xyz_; 210: MAX temp[268].x, temp[267].x___, none.0___; 211: MUL temp[269].xyz, temp[262].xyz_, temp[268].xxx_; 212: MUL temp[79].xyz, temp[269].xyz_, temp[258].xxx_; 213: MOV output[0], temp[79]; CONST[19] = { 1.0000 0.0039 0.0000 0.0312 } CONST[20] = { 0.1250 2.0000 -1.0000 0.2500 } CONST[21] = { 0.3750 0.5000 0.6250 0.7500 } CONST[22] = { 0.8750 0.0625 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[50].w, input[0].___w; 1: MUL temp[51].xy, input[0].xy__, temp[50].ww__; 2: MAD temp[52].xy, temp[51].xy__, const[23].xy__, const[24].xy__; 3: MOV temp[53].x, temp[52].x___; 4: MAD temp[53].y, temp[52]._y__, const[18]._x__, const[18]._y__; 5: RCP temp[54].x, input[1].z___; 6: MUL temp[55].xy, input[1].xy__, temp[54].xx__; 7: MOV temp[55].z, const[14].__x_; 8: MUL temp[56].xy, temp[53].xy__, const[25].xy__; 9: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 10: DP3 temp[59].x, temp[57].xyz_, const[19].xyz_; 11: MUL temp[60].xyz, temp[55].xyz_, temp[59].xxx_; 12: MUL temp[62].xyz, (const[17] - temp[60]).xyz_, const[16].xxx_; 13: DP3 temp[63].x, temp[62].xyz_, temp[62].xyz_; 14: RSQ temp[64].x, |temp[63].x___|; 15: MUL temp[65].xyz, temp[62].xyz_, temp[64].xxx_; 16: DP3 temp[66].x, temp[62].xyz_, temp[62].xyz_; 17: TEX temp[67].x, temp[66].x___, 1D[3]; 18: DP3 temp[69].x, temp[65].xyz_, const[8].xyz_; 19: ADD temp[70].x, none.1___, -temp[69].x___; 20: RCP temp[71].x, const[9].x___; 21: MUL temp[72].x, temp[70].x___, temp[71].x___; 22: TEX temp[73].x, temp[72].x___, 1D[2]; 23: MUL temp[75].x, temp[67].x___, temp[73].x___; 24: MUL temp[76], const[10], temp[60].xxxx; 25: MAD temp[77], const[11], temp[60].yyyy, temp[76]; 26: MAD temp[78], const[12], temp[60].zzzz, temp[77]; 27: ADD temp[79], temp[78], const[13]; 28: MUL temp[80].xy, temp[53].xy__, const[19].ww__; 29: MOV temp[81].x, temp[80].x___; 30: FRC temp[83].x / 8, temp[80].y___; 31: MOV temp[81].y, temp[83]._x__; 32: TEX temp[84], temp[81].xy__, 2D[0]; 33: MAD temp[85], temp[84], const[20].yyyy, -none.1111; 34: MAD temp[86].xy, temp[85].xy__, const[7].xy__, temp[79].xy__; 35: MOV temp[87].xy, temp[86].xy__; 36: MOV temp[87].w, temp[79].___w; 37: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 38: RCP temp[90].w, temp[87].___w; 39: MUL_SAT temp[91].w, temp[79].___z, temp[90].___w; 40: ADD temp[92].w, -temp[91].___w, temp[89].___x; 41: CMP temp[93].x, temp[92].w___, none.0___, none.1___; 42: MOV temp[0].x, temp[85].z___; 43: MOV temp[0].y, temp[85]._w__; 44: MAD temp[94].xy, temp[0].xy__, const[7].xy__, temp[79].xy__; 45: MOV temp[95].xy, temp[94].xy__; 46: MOV temp[95].w, temp[79].___w; 47: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 48: RCP temp[98].w, temp[95].___w; 49: MUL_SAT temp[99].w, temp[79].___z, temp[98].___w; 50: ADD temp[100].w, -temp[99].___w, temp[97].___x; 51: CMP temp[101].x, temp[100].w___, none.0___, none.1___; 52: MOV temp[103].x, temp[80].x___; 53: MOV temp[103].y, (const[20] + temp[83])._x__; 54: TEX temp[105], temp[103].xy__, 2D[0]; 55: MAD temp[106], temp[105], const[20].yyyy, -none.1111; 56: MAD temp[107].xy, temp[106].xy__, const[7].xy__, temp[79].xy__; 57: MOV temp[108].xy, temp[107].xy__; 58: MOV temp[108].w, temp[79].___w; 59: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 60: RCP temp[111].w, temp[108].___w; 61: MUL_SAT temp[112].w, temp[79].___z, temp[111].___w; 62: ADD temp[113].w, -temp[112].___w, temp[110].___x; 63: CMP temp[114].x, temp[113].w___, none.0___, none.1___; 64: ADD temp[115].x, (temp[101] + temp[93]).x___, temp[114].x___; 65: MOV temp[1].x, temp[106].z___; 66: MOV temp[1].y, temp[106]._w__; 67: MAD temp[116].xy, temp[1].xy__, const[7].xy__, temp[79].xy__; 68: MOV temp[117].xy, temp[116].xy__; 69: MOV temp[117].w, temp[79].___w; 70: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 71: RCP temp[120].w, temp[117].___w; 72: MUL_SAT temp[121].w, temp[79].___z, temp[120].___w; 73: ADD temp[122].w, -temp[121].___w, temp[119].___x; 74: CMP temp[123].x, temp[122].w___, none.0___, none.1___; 75: MOV temp[125].x, temp[80].x___; 76: ADD temp[126].x, temp[83].x___, const[20].w___; 77: MOV temp[125].y, temp[126]._x__; 78: TEX temp[127], temp[125].xy__, 2D[0]; 79: MAD temp[128], temp[127], const[20].yyyy, -none.1111; 80: MAD temp[129].xy, temp[128].xy__, const[7].xy__, temp[79].xy__; 81: MOV temp[130].xy, temp[129].xy__; 82: MOV temp[130].w, temp[79].___w; 83: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1]; 84: RCP temp[133].w, temp[130].___w; 85: MUL_SAT temp[134].w, temp[79].___z, temp[133].___w; 86: ADD temp[135].w, -temp[134].___w, temp[132].___x; 87: CMP temp[136].x, temp[135].w___, none.0___, none.1___; 88: ADD temp[137].x, (temp[123] + temp[115]).x___, temp[136].x___; 89: MOV temp[2].x, temp[128].z___; 90: MOV temp[2].y, temp[128]._w__; 91: MAD temp[138].xy, temp[2].xy__, const[7].xy__, temp[79].xy__; 92: MOV temp[139].xy, temp[138].xy__; 93: MOV temp[139].w, temp[79].___w; 94: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 95: RCP temp[142].w, temp[139].___w; 96: MUL_SAT temp[143].w, temp[79].___z, temp[142].___w; 97: ADD temp[144].w, -temp[143].___w, temp[141].___x; 98: CMP temp[145].x, temp[144].w___, none.0___, none.1___; 99: MOV temp[147].x, temp[80].x___; 100: MOV temp[147].y, (const[21] + temp[83])._x__; 101: TEX temp[149], temp[147].xy__, 2D[0]; 102: MAD temp[150], temp[149], const[20].yyyy, -none.1111; 103: MAD temp[151].xy, temp[150].xy__, const[7].xy__, temp[79].xy__; 104: MOV temp[152].xy, temp[151].xy__; 105: MOV temp[152].w, temp[79].___w; 106: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 107: RCP temp[155].w, temp[152].___w; 108: MUL_SAT temp[156].w, temp[79].___z, temp[155].___w; 109: ADD temp[157].w, -temp[156].___w, temp[154].___x; 110: CMP temp[158].x, temp[157].w___, none.0___, none.1___; 111: ADD temp[159].x, (temp[145] + temp[137]).x___, temp[158].x___; 112: MOV temp[3].x, temp[150].z___; 113: MOV temp[3].y, temp[150]._w__; 114: MAD temp[160].xy, temp[3].xy__, const[7].xy__, temp[79].xy__; 115: MOV temp[161].xy, temp[160].xy__; 116: MOV temp[161].w, temp[79].___w; 117: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 118: RCP temp[164].w, temp[161].___w; 119: MUL_SAT temp[165].w, temp[79].___z, temp[164].___w; 120: ADD temp[166].w, -temp[165].___w, temp[163].___x; 121: CMP temp[167].x, temp[166].w___, none.0___, none.1___; 122: MOV temp[169].x, temp[80].x___; 123: ADD temp[170].x, temp[83].x___, none.H___; 124: MOV temp[169].y, temp[170]._x__; 125: TEX temp[171], temp[169].xy__, 2D[0]; 126: MAD temp[172], temp[171], const[20].yyyy, -none.1111; 127: MAD temp[173].xy, temp[172].xy__, const[7].xy__, temp[79].xy__; 128: MOV temp[174].xy, temp[173].xy__; 129: MOV temp[174].w, temp[79].___w; 130: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1]; 131: RCP temp[177].w, temp[174].___w; 132: MUL_SAT temp[178].w, temp[79].___z, temp[177].___w; 133: ADD temp[179].w, -temp[178].___w, temp[176].___x; 134: CMP temp[180].x, temp[179].w___, none.0___, none.1___; 135: ADD temp[181].x, (temp[167] + temp[159]).x___, temp[180].x___; 136: MOV temp[4].x, temp[172].z___; 137: MOV temp[4].y, temp[172]._w__; 138: MAD temp[182].xy, temp[4].xy__, const[7].xy__, temp[79].xy__; 139: MOV temp[183].xy, temp[182].xy__; 140: MOV temp[183].w, temp[79].___w; 141: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 142: RCP temp[186].w, temp[183].___w; 143: MUL_SAT temp[187].w, temp[79].___z, temp[186].___w; 144: ADD temp[188].w, -temp[187].___w, temp[185].___x; 145: CMP temp[189].x, temp[188].w___, none.0___, none.1___; 146: MOV temp[191].x, temp[80].x___; 147: ADD temp[192].x, temp[83].x___, const[21].z___; 148: MOV temp[191].y, temp[192]._x__; 149: TEX temp[193], temp[191].xy__, 2D[0]; 150: MAD temp[194], temp[193], const[20].yyyy, -none.1111; 151: MAD temp[195].xy, temp[194].xy__, const[7].xy__, temp[79].xy__; 152: MOV temp[196].xy, temp[195].xy__; 153: MOV temp[196].w, temp[79].___w; 154: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 155: RCP temp[199].w, temp[196].___w; 156: MUL_SAT temp[200].w, temp[79].___z, temp[199].___w; 157: ADD temp[201].w, -temp[200].___w, temp[198].___x; 158: CMP temp[202].x, temp[201].w___, none.0___, none.1___; 159: ADD temp[203].x, (temp[189] + temp[181]).x___, temp[202].x___; 160: MOV temp[5].x, temp[194].z___; 161: MOV temp[5].y, temp[194]._w__; 162: MAD temp[204].xy, temp[5].xy__, const[7].xy__, temp[79].xy__; 163: MOV temp[205].xy, temp[204].xy__; 164: MOV temp[205].w, temp[79].___w; 165: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 166: RCP temp[208].w, temp[205].___w; 167: MUL_SAT temp[209].w, temp[79].___z, temp[208].___w; 168: ADD temp[210].w, -temp[209].___w, temp[207].___x; 169: CMP temp[211].x, temp[210].w___, none.0___, none.1___; 170: MOV temp[213].x, temp[80].x___; 171: ADD temp[214].x, temp[83].x___, const[21].w___; 172: MOV temp[213].y, temp[214]._x__; 173: TEX temp[215], temp[213].xy__, 2D[0]; 174: MAD temp[216], temp[215], const[20].yyyy, -none.1111; 175: MAD temp[217].xy, temp[216].xy__, const[7].xy__, temp[79].xy__; 176: MOV temp[218].xy, temp[217].xy__; 177: MOV temp[218].w, temp[79].___w; 178: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 179: RCP temp[221].w, temp[218].___w; 180: MUL_SAT temp[222].w, temp[79].___z, temp[221].___w; 181: ADD temp[223].w, -temp[222].___w, temp[220].___x; 182: CMP temp[224].x, temp[223].w___, none.0___, none.1___; 183: ADD temp[225].x, (temp[211] + temp[203]).x___, temp[224].x___; 184: MOV temp[6].x, temp[216].z___; 185: MOV temp[6].y, temp[216]._w__; 186: MAD temp[226].xy, temp[6].xy__, const[7].xy__, temp[79].xy__; 187: MOV temp[227].xy, temp[226].xy__; 188: MOV temp[227].w, temp[79].___w; 189: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1]; 190: RCP temp[230].w, temp[227].___w; 191: MUL_SAT temp[231].w, temp[79].___z, temp[230].___w; 192: ADD temp[232].w, -temp[231].___w, temp[229].___x; 193: CMP temp[233].x, temp[232].w___, none.0___, none.1___; 194: MOV temp[235].x, temp[80].x___; 195: MOV temp[235].y, (const[22] + temp[83])._x__; 196: TEX temp[237], temp[235].xy__, 2D[0]; 197: MAD temp[238], temp[237], const[20].yyyy, -none.1111; 198: MAD temp[239].xy, temp[238].xy__, const[7].xy__, temp[79].xy__; 199: MOV temp[240].xy, temp[239].xy__; 200: MOV temp[240].w, temp[79].___w; 201: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 202: RCP temp[243].w, temp[240].___w; 203: MUL_SAT temp[244].w, temp[79].___z, temp[243].___w; 204: ADD temp[245].w, -temp[244].___w, temp[242].___x; 205: CMP temp[246].x, temp[245].w___, none.0___, none.1___; 206: ADD temp[247].x, (temp[233] + temp[225]).x___, temp[246].x___; 207: MOV temp[7].x, temp[238].z___; 208: MOV temp[7].y, temp[238]._w__; 209: MAD temp[248].xy, temp[7].xy__, const[7].xy__, temp[79].xy__; 210: MOV temp[249].xy, temp[248].xy__; 211: MOV temp[249].w, temp[79].___w; 212: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 213: RCP temp[252].w, temp[249].___w; 214: MUL_SAT temp[253].w, temp[79].___z, temp[252].___w; 215: ADD temp[254].w, -temp[253].___w, temp[251].___x; 216: CMP temp[255].x, temp[254].w___, none.0___, none.1___; 217: MUL temp[257].x, (temp[255] + temp[247]).x___, const[22].y___; 218: MUL temp[258].x, temp[75].x___, temp[257].x___; 219: MUL temp[259].xy, temp[53].xy__, const[26].xy__; 220: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 221: MUL temp[262].xyz, temp[260].xyz_, const[15].xyz_; 222: MUL temp[263].xy, temp[53].xy__, const[27].xy__; 223: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 224: MAD temp[266].xyz, temp[264].xyz_, const[20].yyy_, none.-1-1-1_; 225: DP3 temp[267].x, temp[65].xyz_, temp[266].xyz_; 226: MAX temp[268].x, temp[267].x___, none.0___; 227: MUL temp[269].xyz, temp[262].xyz_, temp[268].xxx_; 228: MUL temp[79].xyz, temp[269].xyz_, temp[258].xxx_; 229: MOV output[0], temp[79]; CONST[12] = { 1.0000 0.0039 0.0000 0.0312 } CONST[13] = { 0.1250 2.0000 -1.0000 0.2500 } CONST[14] = { 0.3750 0.5000 0.6250 0.7500 } CONST[15] = { 0.8750 0.0625 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[50].w, input[0].___w; 1: MUL temp[51].xy, input[0].xy__, temp[50].ww__; 2: MAD temp[52].xy, temp[51].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[53].x, temp[52].x___; 4: MAD temp[53].y, temp[52]._y__, const[11]._x__, const[11]._y__; 5: RCP temp[54].x, input[1].z___; 6: MUL temp[55].xy, input[1].xy__, temp[54].xx__; 7: MOV temp[55].z, const[7].__x_; 8: MUL temp[56].xy, temp[53].xy__, const[18].xy__; 9: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 10: DP3 temp[59].x, temp[57].xyz_, const[12].xyz_; 11: MUL temp[60].xyz, temp[55].xyz_, temp[59].xxx_; 12: MUL temp[62].xyz, (const[10] - temp[60]).xyz_, const[9].xxx_; 13: DP3 temp[63].x, temp[62].xyz_, temp[62].xyz_; 14: RSQ temp[64].x, |temp[63].x___|; 15: MUL temp[65].xyz, temp[62].xyz_, temp[64].xxx_; 16: DP3 temp[66].x, temp[62].xyz_, temp[62].xyz_; 17: TEX temp[67].x, temp[66].x___, 1D[3]; 18: DP3 temp[69].x, temp[65].xyz_, const[1].xyz_; 19: ADD temp[70].x, none.1___, -temp[69].x___; 20: RCP temp[71].x, const[2].x___; 21: MUL temp[72].x, temp[70].x___, temp[71].x___; 22: TEX temp[73].x, temp[72].x___, 1D[2]; 23: MUL temp[75].x, temp[67].x___, temp[73].x___; 24: MUL temp[76], const[3], temp[60].xxxx; 25: MAD temp[77], const[4], temp[60].yyyy, temp[76]; 26: MAD temp[78], const[5], temp[60].zzzz, temp[77]; 27: ADD temp[79], temp[78], const[6]; 28: MUL temp[80].xy, temp[53].xy__, const[12].ww__; 29: MOV temp[81].x, temp[80].x___; 30: FRC temp[83].x / 8, temp[80].y___; 31: MOV temp[81].y, temp[83]._x__; 32: TEX temp[84], temp[81].xy__, 2D[0]; 33: MAD temp[85], temp[84], const[13].yyyy, -none.1111; 34: MAD temp[86].xy, temp[85].xy__, const[0].xy__, temp[79].xy__; 35: MOV temp[87].xy, temp[86].xy__; 36: MOV temp[87].w, temp[79].___w; 37: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 38: RCP temp[90].w, temp[87].___w; 39: MUL_SAT temp[91].w, temp[79].___z, temp[90].___w; 40: ADD temp[92].w, -temp[91].___w, temp[89].___x; 41: CMP temp[93].x, temp[92].w___, none.0___, none.1___; 42: MOV temp[0].x, temp[85].z___; 43: MOV temp[0].y, temp[85]._w__; 44: MAD temp[94].xy, temp[0].xy__, const[0].xy__, temp[79].xy__; 45: MOV temp[95].xy, temp[94].xy__; 46: MOV temp[95].w, temp[79].___w; 47: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 48: RCP temp[98].w, temp[95].___w; 49: MUL_SAT temp[99].w, temp[79].___z, temp[98].___w; 50: ADD temp[100].w, -temp[99].___w, temp[97].___x; 51: CMP temp[101].x, temp[100].w___, none.0___, none.1___; 52: MOV temp[103].x, temp[80].x___; 53: MOV temp[103].y, (const[13] + temp[83])._x__; 54: TEX temp[105], temp[103].xy__, 2D[0]; 55: MAD temp[106], temp[105], const[13].yyyy, -none.1111; 56: MAD temp[107].xy, temp[106].xy__, const[0].xy__, temp[79].xy__; 57: MOV temp[108].xy, temp[107].xy__; 58: MOV temp[108].w, temp[79].___w; 59: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 60: RCP temp[111].w, temp[108].___w; 61: MUL_SAT temp[112].w, temp[79].___z, temp[111].___w; 62: ADD temp[113].w, -temp[112].___w, temp[110].___x; 63: CMP temp[114].x, temp[113].w___, none.0___, none.1___; 64: ADD temp[115].x, (temp[101] + temp[93]).x___, temp[114].x___; 65: MOV temp[1].x, temp[106].z___; 66: MOV temp[1].y, temp[106]._w__; 67: MAD temp[116].xy, temp[1].xy__, const[0].xy__, temp[79].xy__; 68: MOV temp[117].xy, temp[116].xy__; 69: MOV temp[117].w, temp[79].___w; 70: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 71: RCP temp[120].w, temp[117].___w; 72: MUL_SAT temp[121].w, temp[79].___z, temp[120].___w; 73: ADD temp[122].w, -temp[121].___w, temp[119].___x; 74: CMP temp[123].x, temp[122].w___, none.0___, none.1___; 75: MOV temp[125].x, temp[80].x___; 76: ADD temp[126].x, temp[83].x___, const[13].w___; 77: MOV temp[125].y, temp[126]._x__; 78: TEX temp[127], temp[125].xy__, 2D[0]; 79: MAD temp[128], temp[127], const[13].yyyy, -none.1111; 80: MAD temp[129].xy, temp[128].xy__, const[0].xy__, temp[79].xy__; 81: MOV temp[130].xy, temp[129].xy__; 82: MOV temp[130].w, temp[79].___w; 83: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1]; 84: RCP temp[133].w, temp[130].___w; 85: MUL_SAT temp[134].w, temp[79].___z, temp[133].___w; 86: ADD temp[135].w, -temp[134].___w, temp[132].___x; 87: CMP temp[136].x, temp[135].w___, none.0___, none.1___; 88: ADD temp[137].x, (temp[123] + temp[115]).x___, temp[136].x___; 89: MOV temp[2].x, temp[128].z___; 90: MOV temp[2].y, temp[128]._w__; 91: MAD temp[138].xy, temp[2].xy__, const[0].xy__, temp[79].xy__; 92: MOV temp[139].xy, temp[138].xy__; 93: MOV temp[139].w, temp[79].___w; 94: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 95: RCP temp[142].w, temp[139].___w; 96: MUL_SAT temp[143].w, temp[79].___z, temp[142].___w; 97: ADD temp[144].w, -temp[143].___w, temp[141].___x; 98: CMP temp[145].x, temp[144].w___, none.0___, none.1___; 99: MOV temp[147].x, temp[80].x___; 100: MOV temp[147].y, (const[14] + temp[83])._x__; 101: TEX temp[149], temp[147].xy__, 2D[0]; 102: MAD temp[150], temp[149], const[13].yyyy, -none.1111; 103: MAD temp[151].xy, temp[150].xy__, const[0].xy__, temp[79].xy__; 104: MOV temp[152].xy, temp[151].xy__; 105: MOV temp[152].w, temp[79].___w; 106: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 107: RCP temp[155].w, temp[152].___w; 108: MUL_SAT temp[156].w, temp[79].___z, temp[155].___w; 109: ADD temp[157].w, -temp[156].___w, temp[154].___x; 110: CMP temp[158].x, temp[157].w___, none.0___, none.1___; 111: ADD temp[159].x, (temp[145] + temp[137]).x___, temp[158].x___; 112: MOV temp[3].x, temp[150].z___; 113: MOV temp[3].y, temp[150]._w__; 114: MAD temp[160].xy, temp[3].xy__, const[0].xy__, temp[79].xy__; 115: MOV temp[161].xy, temp[160].xy__; 116: MOV temp[161].w, temp[79].___w; 117: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 118: RCP temp[164].w, temp[161].___w; 119: MUL_SAT temp[165].w, temp[79].___z, temp[164].___w; 120: ADD temp[166].w, -temp[165].___w, temp[163].___x; 121: CMP temp[167].x, temp[166].w___, none.0___, none.1___; 122: MOV temp[169].x, temp[80].x___; 123: ADD temp[170].x, temp[83].x___, none.H___; 124: MOV temp[169].y, temp[170]._x__; 125: TEX temp[171], temp[169].xy__, 2D[0]; 126: MAD temp[172], temp[171], const[13].yyyy, -none.1111; 127: MAD temp[173].xy, temp[172].xy__, const[0].xy__, temp[79].xy__; 128: MOV temp[174].xy, temp[173].xy__; 129: MOV temp[174].w, temp[79].___w; 130: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1]; 131: RCP temp[177].w, temp[174].___w; 132: MUL_SAT temp[178].w, temp[79].___z, temp[177].___w; 133: ADD temp[179].w, -temp[178].___w, temp[176].___x; 134: CMP temp[180].x, temp[179].w___, none.0___, none.1___; 135: ADD temp[181].x, (temp[167] + temp[159]).x___, temp[180].x___; 136: MOV temp[4].x, temp[172].z___; 137: MOV temp[4].y, temp[172]._w__; 138: MAD temp[182].xy, temp[4].xy__, const[0].xy__, temp[79].xy__; 139: MOV temp[183].xy, temp[182].xy__; 140: MOV temp[183].w, temp[79].___w; 141: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 142: RCP temp[186].w, temp[183].___w; 143: MUL_SAT temp[187].w, temp[79].___z, temp[186].___w; 144: ADD temp[188].w, -temp[187].___w, temp[185].___x; 145: CMP temp[189].x, temp[188].w___, none.0___, none.1___; 146: MOV temp[191].x, temp[80].x___; 147: ADD temp[192].x, temp[83].x___, const[14].z___; 148: MOV temp[191].y, temp[192]._x__; 149: TEX temp[193], temp[191].xy__, 2D[0]; 150: MAD temp[194], temp[193], const[13].yyyy, -none.1111; 151: MAD temp[195].xy, temp[194].xy__, const[0].xy__, temp[79].xy__; 152: MOV temp[196].xy, temp[195].xy__; 153: MOV temp[196].w, temp[79].___w; 154: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 155: RCP temp[199].w, temp[196].___w; 156: MUL_SAT temp[200].w, temp[79].___z, temp[199].___w; 157: ADD temp[201].w, -temp[200].___w, temp[198].___x; 158: CMP temp[202].x, temp[201].w___, none.0___, none.1___; 159: ADD temp[203].x, (temp[189] + temp[181]).x___, temp[202].x___; 160: MOV temp[5].x, temp[194].z___; 161: MOV temp[5].y, temp[194]._w__; 162: MAD temp[204].xy, temp[5].xy__, const[0].xy__, temp[79].xy__; 163: MOV temp[205].xy, temp[204].xy__; 164: MOV temp[205].w, temp[79].___w; 165: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 166: RCP temp[208].w, temp[205].___w; 167: MUL_SAT temp[209].w, temp[79].___z, temp[208].___w; 168: ADD temp[210].w, -temp[209].___w, temp[207].___x; 169: CMP temp[211].x, temp[210].w___, none.0___, none.1___; 170: MOV temp[213].x, temp[80].x___; 171: ADD temp[214].x, temp[83].x___, const[14].w___; 172: MOV temp[213].y, temp[214]._x__; 173: TEX temp[215], temp[213].xy__, 2D[0]; 174: MAD temp[216], temp[215], const[13].yyyy, -none.1111; 175: MAD temp[217].xy, temp[216].xy__, const[0].xy__, temp[79].xy__; 176: MOV temp[218].xy, temp[217].xy__; 177: MOV temp[218].w, temp[79].___w; 178: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 179: RCP temp[221].w, temp[218].___w; 180: MUL_SAT temp[222].w, temp[79].___z, temp[221].___w; 181: ADD temp[223].w, -temp[222].___w, temp[220].___x; 182: CMP temp[224].x, temp[223].w___, none.0___, none.1___; 183: ADD temp[225].x, (temp[211] + temp[203]).x___, temp[224].x___; 184: MOV temp[6].x, temp[216].z___; 185: MOV temp[6].y, temp[216]._w__; 186: MAD temp[226].xy, temp[6].xy__, const[0].xy__, temp[79].xy__; 187: MOV temp[227].xy, temp[226].xy__; 188: MOV temp[227].w, temp[79].___w; 189: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1]; 190: RCP temp[230].w, temp[227].___w; 191: MUL_SAT temp[231].w, temp[79].___z, temp[230].___w; 192: ADD temp[232].w, -temp[231].___w, temp[229].___x; 193: CMP temp[233].x, temp[232].w___, none.0___, none.1___; 194: MOV temp[235].x, temp[80].x___; 195: MOV temp[235].y, (const[15] + temp[83])._x__; 196: TEX temp[237], temp[235].xy__, 2D[0]; 197: MAD temp[238], temp[237], const[13].yyyy, -none.1111; 198: MAD temp[239].xy, temp[238].xy__, const[0].xy__, temp[79].xy__; 199: MOV temp[240].xy, temp[239].xy__; 200: MOV temp[240].w, temp[79].___w; 201: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 202: RCP temp[243].w, temp[240].___w; 203: MUL_SAT temp[244].w, temp[79].___z, temp[243].___w; 204: ADD temp[245].w, -temp[244].___w, temp[242].___x; 205: CMP temp[246].x, temp[245].w___, none.0___, none.1___; 206: ADD temp[247].x, (temp[233] + temp[225]).x___, temp[246].x___; 207: MOV temp[7].x, temp[238].z___; 208: MOV temp[7].y, temp[238]._w__; 209: MAD temp[248].xy, temp[7].xy__, const[0].xy__, temp[79].xy__; 210: MOV temp[249].xy, temp[248].xy__; 211: MOV temp[249].w, temp[79].___w; 212: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 213: RCP temp[252].w, temp[249].___w; 214: MUL_SAT temp[253].w, temp[79].___z, temp[252].___w; 215: ADD temp[254].w, -temp[253].___w, temp[251].___x; 216: CMP temp[255].x, temp[254].w___, none.0___, none.1___; 217: MUL temp[257].x, (temp[255] + temp[247]).x___, const[15].y___; 218: MUL temp[258].x, temp[75].x___, temp[257].x___; 219: MUL temp[259].xy, temp[53].xy__, const[19].xy__; 220: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 221: MUL temp[262].xyz, temp[260].xyz_, const[8].xyz_; 222: MUL temp[263].xy, temp[53].xy__, const[20].xy__; 223: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 224: MAD temp[266].xyz, temp[264].xyz_, const[13].yyy_, none.-1-1-1_; 225: DP3 temp[267].x, temp[65].xyz_, temp[266].xyz_; 226: MAX temp[268].x, temp[267].x___, none.0___; 227: MUL temp[269].xyz, temp[262].xyz_, temp[268].xxx_; 228: MUL temp[79].xyz, temp[269].xyz_, temp[258].xxx_; 229: MOV output[0], temp[79]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[50].w, src0.w 1: src0.xyz = input[0], src0.w = temp[50] MAD temp[51].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[51], src1.xyz = const[16], src2.xyz = const[17] MAD temp[52].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[52] MAD temp[53].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[52], src1.xyz = const[11] MAD temp[53].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = input[1] REPL_ALPHA temp[54].x RCP, src0.z 6: src0.xyz = input[1], src1.xyz = temp[54] MAD temp[55].xy, src0.xy_, src1.xx_, src0.000 7: src0.xyz = const[7] MAD temp[55].z, src0.__x, src0.111, src0.000 8: src0.xyz = temp[53], src1.xyz = const[18] MAD temp[56].xy, src0.xy_, src1.xy_, src0.000 9: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 10: src0.xyz = temp[57], src1.xyz = const[12] DP3 temp[59].x, src0.xyz, src1.xyz 11: src0.xyz = temp[55], src1.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src1.xxx, src0.000 12: src0.xyz = temp[60], src1.xyz = const[10], src2.xyz = const[9], srcp.xyz = (src1 - src0) MAD temp[62].xyz, srcp.xyz, src2.xxx, src0.000 13: src0.xyz = temp[62] DP3 temp[63].x, src0.xyz, src0.xyz 14: src0.xyz = temp[63] REPL_ALPHA temp[64].x RSQ, |src0.x| 15: src0.xyz = temp[62], src1.xyz = temp[64] MAD temp[65].xyz, src0.xyz, src1.xxx, src0.000 16: src0.xyz = temp[62] DP3 temp[66].x, src0.xyz, src0.xyz 17: TEX temp[67].x, temp[66].x___, 1D[3]; 18: src0.xyz = temp[65], src1.xyz = const[1] DP3 temp[69].x, src0.xyz, src1.xyz 19: src0.xyz = temp[69] MAD temp[70].x, src0.1__, src0.111, -src0.x__ 20: src0.xyz = const[2] REPL_ALPHA temp[71].x RCP, src0.x 21: src0.xyz = temp[70], src1.xyz = temp[71] MAD temp[72].x, src0.x__, src1.x__, src0.000 22: TEX temp[73].x, temp[72].x___, 1D[2]; 23: src0.xyz = temp[67], src1.xyz = temp[73] MAD temp[75].x, src0.x__, src1.x__, src0.000 24: src0.xyz = const[3], src0.w = const[3], src1.xyz = temp[60] MAD temp[76].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[76].w, src0.w, src1.x, src0.0 25: src0.xyz = const[4], src0.w = const[4], src1.xyz = temp[60], src1.w = temp[76], src2.xyz = temp[76] MAD temp[77].xyz, src0.xyz, src1.yyy, src2.xyz MAD temp[77].w, src0.w, src1.y, src1.w 26: src0.xyz = const[5], src0.w = const[5], src1.xyz = temp[60], src1.w = temp[77], src2.xyz = temp[77] MAD temp[78].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[78].w, src0.w, src1.z, src1.w 27: src0.xyz = temp[78], src0.w = temp[78], src1.xyz = const[6], src1.w = const[6] MAD temp[79].xyz, src0.xyz, src0.111, src1.xyz MAD temp[79].w, src0.w, src0.1, src1.w 28: src0.xyz = temp[53], src0.w = const[12] MAD temp[80].xy, src0.xy_, src0.ww_, src0.000 29: src0.xyz = temp[80] MAD temp[81].x, src0.x__, src0.111, src0.000 30: src0.xyz = temp[80] FRC temp[83].x / 8, src0.y__ 31: src0.xyz = temp[83] MAD temp[81].y, src0._x_, src0.111, src0.000 32: TEX temp[84], temp[81].xy__, 2D[0]; 33: src0.xyz = temp[84], src0.w = temp[84], src1.xyz = const[13] MAD temp[85].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[85].w, src0.w, src1.y, -src0.1 34: src0.xyz = temp[85], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[86].xy, src0.xy_, src1.xy_, src2.xy_ 35: src0.xyz = temp[86] MAD temp[87].xy, src0.xy_, src0.111, src0.000 36: src0.w = temp[79] MAD temp[87].w, src0.w, src0.1, src0.0 37: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 38: src0.w = temp[87] RCP temp[90].w, src0.w 39: src0.xyz = temp[79], src0.w = temp[90] MAD_SAT temp[91].w, src0.z, src0.w, src0.0 40: src0.xyz = temp[89], src0.w = temp[91] MAD temp[92].w, -src0.w, src0.1, src0.x 41: src0.w = temp[92] CMP temp[93].x, src0.1__, src0.0__, src0.w__ 42: src0.xyz = temp[85] MAD temp[0].x, src0.z__, src0.111, src0.000 43: src0.w = temp[85] MAD temp[0].y, src0._w_, src0.111, src0.000 44: src0.xyz = temp[0], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ 45: src0.xyz = temp[94] MAD temp[95].xy, src0.xy_, src0.111, src0.000 46: src0.w = temp[79] MAD temp[95].w, src0.w, src0.1, src0.0 47: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 48: src0.w = temp[95] RCP temp[98].w, src0.w 49: src0.xyz = temp[79], src0.w = temp[98] MAD_SAT temp[99].w, src0.z, src0.w, src0.0 50: src0.xyz = temp[97], src0.w = temp[99] MAD temp[100].w, -src0.w, src0.1, src0.x 51: src0.w = temp[100] CMP temp[101].x, src0.1__, src0.0__, src0.w__ 52: src0.xyz = temp[80] MAD temp[103].x, src0.x__, src0.111, src0.000 53: src0.xyz = temp[83], src1.xyz = const[13], srcp.xyz = (src1 + src0) MAD temp[103].y, srcp._x_, src0.111, src0.000 54: TEX temp[105], temp[103].xy__, 2D[0]; 55: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = const[13] MAD temp[106].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[106].w, src0.w, src1.y, -src0.1 56: src0.xyz = temp[106], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[107].xy, src0.xy_, src1.xy_, src2.xy_ 57: src0.xyz = temp[107] MAD temp[108].xy, src0.xy_, src0.111, src0.000 58: src0.w = temp[79] MAD temp[108].w, src0.w, src0.1, src0.0 59: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 60: src0.w = temp[108] RCP temp[111].w, src0.w 61: src0.xyz = temp[79], src0.w = temp[111] MAD_SAT temp[112].w, src0.z, src0.w, src0.0 62: src0.xyz = temp[110], src0.w = temp[112] MAD temp[113].w, -src0.w, src0.1, src0.x 63: src0.w = temp[113] CMP temp[114].x, src0.1__, src0.0__, src0.w__ 64: src0.xyz = temp[93], src1.xyz = temp[101], src2.xyz = temp[114], srcp.xyz = (src1 + src0) MAD temp[115].x, srcp.x__, src0.111, src2.x__ 65: src0.xyz = temp[106] MAD temp[1].x, src0.z__, src0.111, src0.000 66: src0.w = temp[106] MAD temp[1].y, src0._w_, src0.111, src0.000 67: src0.xyz = temp[1], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[116].xy, src0.xy_, src1.xy_, src2.xy_ 68: src0.xyz = temp[116] MAD temp[117].xy, src0.xy_, src0.111, src0.000 69: src0.w = temp[79] MAD temp[117].w, src0.w, src0.1, src0.0 70: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 71: src0.w = temp[117] RCP temp[120].w, src0.w 72: src0.xyz = temp[79], src0.w = temp[120] MAD_SAT temp[121].w, src0.z, src0.w, src0.0 73: src0.xyz = temp[119], src0.w = temp[121] MAD temp[122].w, -src0.w, src0.1, src0.x 74: src0.w = temp[122] CMP temp[123].x, src0.1__, src0.0__, src0.w__ 75: src0.xyz = temp[80] MAD temp[125].x, src0.x__, src0.111, src0.000 76: src0.xyz = temp[83], src0.w = const[13] MAD temp[126].x, src0.x__, src0.111, src0.w__ 77: src0.xyz = temp[126] MAD temp[125].y, src0._x_, src0.111, src0.000 78: TEX temp[127], temp[125].xy__, 2D[0]; 79: src0.xyz = temp[127], src0.w = temp[127], src1.xyz = const[13] MAD temp[128].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[128].w, src0.w, src1.y, -src0.1 80: src0.xyz = temp[128], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[129].xy, src0.xy_, src1.xy_, src2.xy_ 81: src0.xyz = temp[129] MAD temp[130].xy, src0.xy_, src0.111, src0.000 82: src0.w = temp[79] MAD temp[130].w, src0.w, src0.1, src0.0 83: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1]; 84: src0.w = temp[130] RCP temp[133].w, src0.w 85: src0.xyz = temp[79], src0.w = temp[133] MAD_SAT temp[134].w, src0.z, src0.w, src0.0 86: src0.xyz = temp[132], src0.w = temp[134] MAD temp[135].w, -src0.w, src0.1, src0.x 87: src0.w = temp[135] CMP temp[136].x, src0.1__, src0.0__, src0.w__ 88: src0.xyz = temp[115], src1.xyz = temp[123], src2.xyz = temp[136], srcp.xyz = (src1 + src0) MAD temp[137].x, srcp.x__, src0.111, src2.x__ 89: src0.xyz = temp[128] MAD temp[2].x, src0.z__, src0.111, src0.000 90: src0.w = temp[128] MAD temp[2].y, src0._w_, src0.111, src0.000 91: src0.xyz = temp[2], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[138].xy, src0.xy_, src1.xy_, src2.xy_ 92: src0.xyz = temp[138] MAD temp[139].xy, src0.xy_, src0.111, src0.000 93: src0.w = temp[79] MAD temp[139].w, src0.w, src0.1, src0.0 94: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 95: src0.w = temp[139] RCP temp[142].w, src0.w 96: src0.xyz = temp[79], src0.w = temp[142] MAD_SAT temp[143].w, src0.z, src0.w, src0.0 97: src0.xyz = temp[141], src0.w = temp[143] MAD temp[144].w, -src0.w, src0.1, src0.x 98: src0.w = temp[144] CMP temp[145].x, src0.1__, src0.0__, src0.w__ 99: src0.xyz = temp[80] MAD temp[147].x, src0.x__, src0.111, src0.000 100: src0.xyz = temp[83], src1.xyz = const[14], srcp.xyz = (src1 + src0) MAD temp[147].y, srcp._x_, src0.111, src0.000 101: TEX temp[149], temp[147].xy__, 2D[0]; 102: src0.xyz = temp[149], src0.w = temp[149], src1.xyz = const[13] MAD temp[150].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[150].w, src0.w, src1.y, -src0.1 103: src0.xyz = temp[150], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[151].xy, src0.xy_, src1.xy_, src2.xy_ 104: src0.xyz = temp[151] MAD temp[152].xy, src0.xy_, src0.111, src0.000 105: src0.w = temp[79] MAD temp[152].w, src0.w, src0.1, src0.0 106: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 107: src0.w = temp[152] RCP temp[155].w, src0.w 108: src0.xyz = temp[79], src0.w = temp[155] MAD_SAT temp[156].w, src0.z, src0.w, src0.0 109: src0.xyz = temp[154], src0.w = temp[156] MAD temp[157].w, -src0.w, src0.1, src0.x 110: src0.w = temp[157] CMP temp[158].x, src0.1__, src0.0__, src0.w__ 111: src0.xyz = temp[137], src1.xyz = temp[145], src2.xyz = temp[158], srcp.xyz = (src1 + src0) MAD temp[159].x, srcp.x__, src0.111, src2.x__ 112: src0.xyz = temp[150] MAD temp[3].x, src0.z__, src0.111, src0.000 113: src0.w = temp[150] MAD temp[3].y, src0._w_, src0.111, src0.000 114: src0.xyz = temp[3], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[160].xy, src0.xy_, src1.xy_, src2.xy_ 115: src0.xyz = temp[160] MAD temp[161].xy, src0.xy_, src0.111, src0.000 116: src0.w = temp[79] MAD temp[161].w, src0.w, src0.1, src0.0 117: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 118: src0.w = temp[161] RCP temp[164].w, src0.w 119: src0.xyz = temp[79], src0.w = temp[164] MAD_SAT temp[165].w, src0.z, src0.w, src0.0 120: src0.xyz = temp[163], src0.w = temp[165] MAD temp[166].w, -src0.w, src0.1, src0.x 121: src0.w = temp[166] CMP temp[167].x, src0.1__, src0.0__, src0.w__ 122: src0.xyz = temp[80] MAD temp[169].x, src0.x__, src0.111, src0.000 123: src0.xyz = temp[83] MAD temp[170].x, src0.x__, src0.111, src0.H__ 124: src0.xyz = temp[170] MAD temp[169].y, src0._x_, src0.111, src0.000 125: TEX temp[171], temp[169].xy__, 2D[0]; 126: src0.xyz = temp[171], src0.w = temp[171], src1.xyz = const[13] MAD temp[172].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[172].w, src0.w, src1.y, -src0.1 127: src0.xyz = temp[172], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[173].xy, src0.xy_, src1.xy_, src2.xy_ 128: src0.xyz = temp[173] MAD temp[174].xy, src0.xy_, src0.111, src0.000 129: src0.w = temp[79] MAD temp[174].w, src0.w, src0.1, src0.0 130: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1]; 131: src0.w = temp[174] RCP temp[177].w, src0.w 132: src0.xyz = temp[79], src0.w = temp[177] MAD_SAT temp[178].w, src0.z, src0.w, src0.0 133: src0.xyz = temp[176], src0.w = temp[178] MAD temp[179].w, -src0.w, src0.1, src0.x 134: src0.w = temp[179] CMP temp[180].x, src0.1__, src0.0__, src0.w__ 135: src0.xyz = temp[159], src1.xyz = temp[167], src2.xyz = temp[180], srcp.xyz = (src1 + src0) MAD temp[181].x, srcp.x__, src0.111, src2.x__ 136: src0.xyz = temp[172] MAD temp[4].x, src0.z__, src0.111, src0.000 137: src0.w = temp[172] MAD temp[4].y, src0._w_, src0.111, src0.000 138: src0.xyz = temp[4], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[182].xy, src0.xy_, src1.xy_, src2.xy_ 139: src0.xyz = temp[182] MAD temp[183].xy, src0.xy_, src0.111, src0.000 140: src0.w = temp[79] MAD temp[183].w, src0.w, src0.1, src0.0 141: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 142: src0.w = temp[183] RCP temp[186].w, src0.w 143: src0.xyz = temp[79], src0.w = temp[186] MAD_SAT temp[187].w, src0.z, src0.w, src0.0 144: src0.xyz = temp[185], src0.w = temp[187] MAD temp[188].w, -src0.w, src0.1, src0.x 145: src0.w = temp[188] CMP temp[189].x, src0.1__, src0.0__, src0.w__ 146: src0.xyz = temp[80] MAD temp[191].x, src0.x__, src0.111, src0.000 147: src0.xyz = temp[83], src1.xyz = const[14] MAD temp[192].x, src0.x__, src0.111, src1.z__ 148: src0.xyz = temp[192] MAD temp[191].y, src0._x_, src0.111, src0.000 149: TEX temp[193], temp[191].xy__, 2D[0]; 150: src0.xyz = temp[193], src0.w = temp[193], src1.xyz = const[13] MAD temp[194].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[194].w, src0.w, src1.y, -src0.1 151: src0.xyz = temp[194], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[195].xy, src0.xy_, src1.xy_, src2.xy_ 152: src0.xyz = temp[195] MAD temp[196].xy, src0.xy_, src0.111, src0.000 153: src0.w = temp[79] MAD temp[196].w, src0.w, src0.1, src0.0 154: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 155: src0.w = temp[196] RCP temp[199].w, src0.w 156: src0.xyz = temp[79], src0.w = temp[199] MAD_SAT temp[200].w, src0.z, src0.w, src0.0 157: src0.xyz = temp[198], src0.w = temp[200] MAD temp[201].w, -src0.w, src0.1, src0.x 158: src0.w = temp[201] CMP temp[202].x, src0.1__, src0.0__, src0.w__ 159: src0.xyz = temp[181], src1.xyz = temp[189], src2.xyz = temp[202], srcp.xyz = (src1 + src0) MAD temp[203].x, srcp.x__, src0.111, src2.x__ 160: src0.xyz = temp[194] MAD temp[5].x, src0.z__, src0.111, src0.000 161: src0.w = temp[194] MAD temp[5].y, src0._w_, src0.111, src0.000 162: src0.xyz = temp[5], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[204].xy, src0.xy_, src1.xy_, src2.xy_ 163: src0.xyz = temp[204] MAD temp[205].xy, src0.xy_, src0.111, src0.000 164: src0.w = temp[79] MAD temp[205].w, src0.w, src0.1, src0.0 165: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 166: src0.w = temp[205] RCP temp[208].w, src0.w 167: src0.xyz = temp[79], src0.w = temp[208] MAD_SAT temp[209].w, src0.z, src0.w, src0.0 168: src0.xyz = temp[207], src0.w = temp[209] MAD temp[210].w, -src0.w, src0.1, src0.x 169: src0.w = temp[210] CMP temp[211].x, src0.1__, src0.0__, src0.w__ 170: src0.xyz = temp[80] MAD temp[213].x, src0.x__, src0.111, src0.000 171: src0.xyz = temp[83], src0.w = const[14] MAD temp[214].x, src0.x__, src0.111, src0.w__ 172: src0.xyz = temp[214] MAD temp[213].y, src0._x_, src0.111, src0.000 173: TEX temp[215], temp[213].xy__, 2D[0]; 174: src0.xyz = temp[215], src0.w = temp[215], src1.xyz = const[13] MAD temp[216].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[216].w, src0.w, src1.y, -src0.1 175: src0.xyz = temp[216], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[217].xy, src0.xy_, src1.xy_, src2.xy_ 176: src0.xyz = temp[217] MAD temp[218].xy, src0.xy_, src0.111, src0.000 177: src0.w = temp[79] MAD temp[218].w, src0.w, src0.1, src0.0 178: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 179: src0.w = temp[218] RCP temp[221].w, src0.w 180: src0.xyz = temp[79], src0.w = temp[221] MAD_SAT temp[222].w, src0.z, src0.w, src0.0 181: src0.xyz = temp[220], src0.w = temp[222] MAD temp[223].w, -src0.w, src0.1, src0.x 182: src0.w = temp[223] CMP temp[224].x, src0.1__, src0.0__, src0.w__ 183: src0.xyz = temp[203], src1.xyz = temp[211], src2.xyz = temp[224], srcp.xyz = (src1 + src0) MAD temp[225].x, srcp.x__, src0.111, src2.x__ 184: src0.xyz = temp[216] MAD temp[6].x, src0.z__, src0.111, src0.000 185: src0.w = temp[216] MAD temp[6].y, src0._w_, src0.111, src0.000 186: src0.xyz = temp[6], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[226].xy, src0.xy_, src1.xy_, src2.xy_ 187: src0.xyz = temp[226] MAD temp[227].xy, src0.xy_, src0.111, src0.000 188: src0.w = temp[79] MAD temp[227].w, src0.w, src0.1, src0.0 189: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1]; 190: src0.w = temp[227] RCP temp[230].w, src0.w 191: src0.xyz = temp[79], src0.w = temp[230] MAD_SAT temp[231].w, src0.z, src0.w, src0.0 192: src0.xyz = temp[229], src0.w = temp[231] MAD temp[232].w, -src0.w, src0.1, src0.x 193: src0.w = temp[232] CMP temp[233].x, src0.1__, src0.0__, src0.w__ 194: src0.xyz = temp[80] MAD temp[235].x, src0.x__, src0.111, src0.000 195: src0.xyz = temp[83], src1.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[235].y, srcp._x_, src0.111, src0.000 196: TEX temp[237], temp[235].xy__, 2D[0]; 197: src0.xyz = temp[237], src0.w = temp[237], src1.xyz = const[13] MAD temp[238].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[238].w, src0.w, src1.y, -src0.1 198: src0.xyz = temp[238], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[239].xy, src0.xy_, src1.xy_, src2.xy_ 199: src0.xyz = temp[239] MAD temp[240].xy, src0.xy_, src0.111, src0.000 200: src0.w = temp[79] MAD temp[240].w, src0.w, src0.1, src0.0 201: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 202: src0.w = temp[240] RCP temp[243].w, src0.w 203: src0.xyz = temp[79], src0.w = temp[243] MAD_SAT temp[244].w, src0.z, src0.w, src0.0 204: src0.xyz = temp[242], src0.w = temp[244] MAD temp[245].w, -src0.w, src0.1, src0.x 205: src0.w = temp[245] CMP temp[246].x, src0.1__, src0.0__, src0.w__ 206: src0.xyz = temp[225], src1.xyz = temp[233], src2.xyz = temp[246], srcp.xyz = (src1 + src0) MAD temp[247].x, srcp.x__, src0.111, src2.x__ 207: src0.xyz = temp[238] MAD temp[7].x, src0.z__, src0.111, src0.000 208: src0.w = temp[238] MAD temp[7].y, src0._w_, src0.111, src0.000 209: src0.xyz = temp[7], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[248].xy, src0.xy_, src1.xy_, src2.xy_ 210: src0.xyz = temp[248] MAD temp[249].xy, src0.xy_, src0.111, src0.000 211: src0.w = temp[79] MAD temp[249].w, src0.w, src0.1, src0.0 212: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 213: src0.w = temp[249] RCP temp[252].w, src0.w 214: src0.xyz = temp[79], src0.w = temp[252] MAD_SAT temp[253].w, src0.z, src0.w, src0.0 215: src0.xyz = temp[251], src0.w = temp[253] MAD temp[254].w, -src0.w, src0.1, src0.x 216: src0.w = temp[254] CMP temp[255].x, src0.1__, src0.0__, src0.w__ 217: src0.xyz = temp[247], src1.xyz = temp[255], src2.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[257].x, srcp.x__, src2.y__, src0.000 218: src0.xyz = temp[75], src1.xyz = temp[257] MAD temp[258].x, src0.x__, src1.x__, src0.000 219: src0.xyz = temp[53], src1.xyz = const[19] MAD temp[259].xy, src0.xy_, src1.xy_, src0.000 220: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 221: src0.xyz = temp[260], src1.xyz = const[8] MAD temp[262].xyz, src0.xyz, src1.xyz, src0.000 222: src0.xyz = temp[53], src1.xyz = const[20] MAD temp[263].xy, src0.xy_, src1.xy_, src0.000 223: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 224: src0.xyz = temp[264], src1.xyz = const[13] MAD temp[266].xyz, src0.xyz, src1.yyy, -src0.111 225: src0.xyz = temp[65], src1.xyz = temp[266] DP3 temp[267].x, src0.xyz, src1.xyz 226: src0.xyz = temp[267] MAX temp[268].x, src0.x__, src0.0__ 227: src0.xyz = temp[262], src1.xyz = temp[268] MAD temp[269].xyz, src0.xyz, src1.xxx, src0.000 228: src0.xyz = temp[269], src1.xyz = temp[258] MAD temp[79].xyz, src0.xyz, src1.xxx, src0.000 229: src0.xyz = temp[79], src0.w = temp[79] 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[7], src0.w = input[0] MAD temp[55].z, src0.__x, src0.111, src0.000 RCP temp[50].w, src0.w 1: src0.xyz = input[0], src0.w = temp[50], src1.xyz = input[1] MAD temp[51].xy, src0.xy_, src0.ww_, src0.000 RCP temp[54].w, src1.z 2: src0.xyz = input[1], src0.w = temp[54], src1.xyz = temp[54], src2.xyz = const[2] MAD temp[55].xy, src0.xy_, src0.ww_, src0.000 RCP temp[71].w, src2.x 3: src0.xyz = temp[51], src1.xyz = const[16], src2.xyz = const[17] MAD temp[52].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = temp[52], src1.xyz = const[11] MAD temp[53].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[52] MAD temp[53].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[53], src1.xyz = const[20] MAD temp[263].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[53], src1.xyz = const[19] MAD temp[259].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[53], src0.w = const[12] MAD temp[80].xy, src0.xy_, src0.ww_, src0.000 9: src0.xyz = temp[53], src1.xyz = const[18] MAD temp[56].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[80] MAD temp[235].x, src0.x__, src0.111, src0.000 11: src0.xyz = temp[80] MAD temp[213].x, src0.x__, src0.111, src0.000 12: src0.xyz = temp[80] MAD temp[191].x, src0.x__, src0.111, src0.000 13: src0.xyz = temp[80] MAD temp[169].x, src0.x__, src0.111, src0.000 14: src0.xyz = temp[80] MAD temp[147].x, src0.x__, src0.111, src0.000 15: src0.xyz = temp[80] MAD temp[125].x, src0.x__, src0.111, src0.000 16: src0.xyz = temp[80] MAD temp[103].x, src0.x__, src0.111, src0.000 17: src0.xyz = temp[80] MAD temp[81].x, src0.x__, src0.111, src0.000 18: src0.xyz = temp[80] FRC temp[83].x / 8, src0.y__ 19: src0.xyz = temp[83], src0.w = const[13], src1.xyz = const[14], srcp.xyz = (src1 + src0) MAD temp[147].y, srcp._x_, src0.111, src0.000 MAD temp[126].w, src0.x, src0.1, src0.w 20: src0.xyz = temp[83], src1.xyz = const[14] MAD temp[170].x, src0.x__, src0.111, src0.H__ MAD temp[192].w, src0.x, src0.1, src1.z 21: src0.xyz = temp[83], src0.w = const[14], src1.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[235].y, srcp._x_, src0.111, src0.000 MAD temp[214].w, src0.x, src0.1, src0.w 22: src0.xyz = temp[83], src1.xyz = const[13], srcp.xyz = (src1 + src0) MAD temp[103].y, srcp._x_, src0.111, src0.000 23: src0.xyz = temp[126], src0.w = temp[126] MAD temp[125].y, src0._w_, src0.111, src0.000 24: src0.xyz = temp[192], src0.w = temp[192] MAD temp[191].y, src0._w_, src0.111, src0.000 25: BEGIN_TEX; 26: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 27: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 28: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 29: TEX temp[149], temp[147].xy__, 2D[0]; 30: TEX temp[237], temp[235].xy__, 2D[0]; 31: TEX temp[105], temp[103].xy__, 2D[0]; 32: TEX temp[127], temp[125].xy__, 2D[0]; 33: TEX temp[193], temp[191].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 34: src0.xyz = temp[214], src0.w = temp[214] MAD temp[213].y, src0._w_, src0.111, src0.000 35: src0.xyz = temp[83] MAD temp[81].y, src0._x_, src0.111, src0.000 36: src0.xyz = temp[149], src0.w = temp[149], src1.xyz = const[13] SEM_WAIT MAD temp[150].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[150].w, src0.w, src1.y, -src0.1 37: src0.xyz = temp[237], src0.w = temp[237], src1.xyz = const[13] MAD temp[238].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[238].w, src0.w, src1.y, -src0.1 38: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = const[13] MAD temp[106].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[106].w, src0.w, src1.y, -src0.1 39: src0.xyz = temp[127], src0.w = temp[127], src1.xyz = const[13] MAD temp[128].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[128].w, src0.w, src1.y, -src0.1 40: src0.xyz = temp[193], src0.w = temp[193], src1.xyz = const[13] MAD temp[194].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[194].w, src0.w, src1.y, -src0.1 41: src0.xyz = temp[264], src1.xyz = const[13] MAD temp[266].xyz, src0.xyz, src1.yyy, -src0.111 42: src0.xyz = temp[260], src1.xyz = const[8] MAD temp[262].xyz, src0.xyz, src1.xyz, src0.000 43: src0.xyz = temp[57], src1.xyz = const[12] DP3 temp[59].x, src0.xyz, src1.xyz 44: src0.xyz = temp[170] MAD temp[169].y, src0._x_, src0.111, src0.000 45: src0.xyz = temp[150] MAD temp[3].x, src0.z__, src0.111, src0.000 46: src0.w = temp[150] MAD temp[3].y, src0._w_, src0.111, src0.000 47: src0.xyz = temp[238] MAD temp[7].x, src0.z__, src0.111, src0.000 48: src0.w = temp[238] MAD temp[7].y, src0._w_, src0.111, src0.000 49: src0.xyz = temp[55], src1.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src1.xxx, src0.000 50: src0.xyz = temp[106] MAD temp[1].x, src0.z__, src0.111, src0.000 51: src0.w = temp[106] MAD temp[1].y, src0._w_, src0.111, src0.000 52: src0.xyz = temp[128] MAD temp[2].x, src0.z__, src0.111, src0.000 53: src0.xyz = temp[60], src1.xyz = const[10], src2.xyz = const[9], srcp.xyz = (src1 - src0) MAD temp[62].xyz, srcp.xyz, src2.xxx, src0.000 54: src0.xyz = const[3], src0.w = const[3], src1.xyz = temp[60] MAD temp[76].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[76].w, src0.w, src1.x, src0.0 55: src0.w = temp[128] MAD temp[2].y, src0._w_, src0.111, src0.000 56: src0.xyz = temp[194] MAD temp[5].x, src0.z__, src0.111, src0.000 57: src0.w = temp[194] MAD temp[5].y, src0._w_, src0.111, src0.000 58: src0.xyz = const[4], src0.w = const[4], src1.xyz = temp[60], src1.w = temp[76], src2.xyz = temp[76] MAD temp[77].xyz, src0.xyz, src1.yyy, src2.xyz MAD temp[77].w, src0.w, src1.y, src1.w 59: src0.xyz = temp[62] DP3 temp[66].x, src0.xyz, src0.xyz 60: src0.xyz = const[5], src0.w = const[5], src1.xyz = temp[60], src1.w = temp[77], src2.xyz = temp[77] MAD temp[78].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[78].w, src0.w, src1.z, src1.w 61: src0.xyz = temp[62] DP3 temp[63].x, src0.xyz, src0.xyz 62: src0.xyz = temp[78], src0.w = temp[78], src1.xyz = const[6], src1.w = const[6] MAD temp[79].xyz, src0.xyz, src0.111, src1.xyz MAD temp[79].w, src0.w, src0.1, src1.w 63: src0.xyz = temp[106], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[107].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[152].w, src0.w, src0.1, src0.0 64: src0.xyz = temp[107], src1.xyz = temp[63] MAD temp[108].xy, src0.xy_, src0.111, src0.000 RSQ temp[64].w, |src1.x| 65: src0.xyz = temp[62], src0.w = temp[64], src1.xyz = temp[64], src1.w = temp[79] MAD temp[65].xyz, src0.xyz, src0.www, src0.000 MAD temp[139].w, src1.w, src0.1, src0.0 66: src0.xyz = temp[65], src0.w = temp[79], src1.xyz = const[1] DP3 temp[69].x, src0.xyz, src1.xyz MAD temp[117].w, src0.w, src0.1, src0.0 67: src0.xyz = temp[69], src0.w = temp[79] MAD temp[70].x, src0.1__, src0.111, -src0.x__ MAD temp[108].w, src0.w, src0.1, src0.0 68: src0.xyz = temp[70], src0.w = temp[71], src1.xyz = temp[71], src1.w = temp[79] MAD temp[72].x, src0.x__, src0.w__, src0.000 MAD temp[95].w, src1.w, src0.1, src0.0 69: src0.xyz = temp[65], src0.w = temp[79], src1.xyz = temp[266] DP3 temp[267].x, src0.xyz, src1.xyz MAD temp[130].w, src0.w, src0.1, src0.0 70: src0.xyz = temp[267], src0.w = temp[79] MAX temp[268].x, src0.x__, src0.0__ MAD temp[87].w, src0.w, src0.1, src0.0 71: src0.xyz = temp[262], src0.w = temp[152], src1.xyz = temp[268] MAD temp[269].xyz, src0.xyz, src1.xxx, src0.000 RCP temp[155].w, src0.w 72: src0.xyz = temp[1], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[116].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[161].w, src0.w, src0.1, src0.0 73: src0.xyz = temp[116], src0.w = temp[139] MAD temp[117].xy, src0.xy_, src0.111, src0.000 RCP temp[142].w, src0.w 74: src0.xyz = temp[128], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[129].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[174].w, src0.w, src0.1, src0.0 75: src0.xyz = temp[129], src0.w = temp[117] MAD temp[130].xy, src0.xy_, src0.111, src0.000 RCP temp[120].w, src0.w 76: BEGIN_TEX; 77: TEX temp[215], temp[213].xy__, 2D[0]; 78: TEX temp[84], temp[81].xy__, 2D[0]; 79: TEX temp[171], temp[169].xy__, 2D[0]; 80: TEX temp[67].x, temp[66].x___, 1D[3]; 81: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 82: TEX temp[73].x, temp[72].x___, 1D[2]; 83: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 84: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 85: src0.xyz = temp[67], src0.w = temp[108], src1.xyz = temp[73] SEM_WAIT MAD temp[75].x, src0.x__, src1.x__, src0.000 RCP temp[111].w, src0.w 86: src0.xyz = temp[2], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[138].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[183].w, src0.w, src0.1, src0.0 87: src0.xyz = temp[138], src0.w = temp[95] MAD temp[139].xy, src0.xy_, src0.111, src0.000 RCP temp[98].w, src0.w 88: src0.xyz = temp[150], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[151].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[196].w, src0.w, src0.1, src0.0 89: src0.xyz = temp[151], src0.w = temp[130] MAD temp[152].xy, src0.xy_, src0.111, src0.000 RCP temp[133].w, src0.w 90: src0.xyz = temp[3], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[160].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[205].w, src0.w, src0.1, src0.0 91: src0.xyz = temp[160], src0.w = temp[87] MAD temp[161].xy, src0.xy_, src0.111, src0.000 RCP temp[90].w, src0.w 92: src0.xyz = temp[194], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[195].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[218].w, src0.w, src0.1, src0.0 93: src0.xyz = temp[195], src0.w = temp[155], src1.xyz = temp[79] MAD temp[196].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[156].w, src1.z, src0.w, src0.0 94: src0.xyz = temp[5], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[204].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[227].w, src0.w, src0.1, src0.0 95: src0.xyz = temp[204], src0.w = temp[161] MAD temp[205].xy, src0.xy_, src0.111, src0.000 RCP temp[164].w, src0.w 96: src0.xyz = temp[238], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[239].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[240].w, src0.w, src0.1, src0.0 97: src0.xyz = temp[239], src0.w = temp[142], src1.xyz = temp[79] MAD temp[240].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[143].w, src1.z, src0.w, src0.0 98: src0.xyz = temp[7], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[248].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[249].w, src0.w, src0.1, src0.0 99: src0.xyz = temp[248], src0.w = temp[174] MAD temp[249].xy, src0.xy_, src0.111, src0.000 RCP temp[177].w, src0.w 100: src0.xyz = temp[215], src0.w = temp[215], src1.xyz = const[13] MAD temp[216].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[216].w, src0.w, src1.y, -src0.1 101: src0.w = temp[216], src1.w = temp[183] MAD temp[6].y, src0._w_, src0.111, src0.000 RCP temp[186].w, src1.w 102: src0.xyz = temp[216], src0.w = temp[111], src1.xyz = temp[79] MAD temp[6].x, src0.z__, src0.111, src0.000 MAD_SAT temp[112].w, src1.z, src0.w, src0.0 103: src0.xyz = temp[6], src0.w = temp[98], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[226].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[99].w, src2.z, src0.w, src0.0 104: src0.xyz = temp[226], src0.w = temp[196] MAD temp[227].xy, src0.xy_, src0.111, src0.000 RCP temp[199].w, src0.w 105: BEGIN_TEX; 106: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 107: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 108: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 109: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 110: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 111: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 112: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 113: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 114: src0.xyz = temp[216], src0.w = temp[120], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[217].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[121].w, src2.z, src0.w, src0.0 115: src0.xyz = temp[217], src0.w = temp[133], src1.xyz = temp[79] MAD temp[218].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[134].w, src1.z, src0.w, src0.0 116: src0.xyz = temp[84], src0.w = temp[84], src1.xyz = const[13] MAD temp[85].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[85].w, src0.w, src1.y, -src0.1 117: src0.w = temp[85], src1.w = temp[218] MAD temp[0].y, src0._w_, src0.111, src0.000 RCP temp[221].w, src1.w 118: src0.xyz = temp[85], src0.w = temp[90], src1.xyz = temp[79] MAD temp[0].x, src0.z__, src0.111, src0.000 MAD_SAT temp[91].w, src1.z, src0.w, src0.0 119: src0.xyz = temp[0], src0.w = temp[227], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[230].w, src0.w 120: src0.xyz = temp[94], src0.w = temp[164], src1.xyz = temp[79] MAD temp[95].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[165].w, src1.z, src0.w, src0.0 121: src0.xyz = temp[85], src0.w = temp[205], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[86].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[208].w, src0.w 122: src0.xyz = temp[86], src0.w = temp[240] MAD temp[87].xy, src0.xy_, src0.111, src0.000 RCP temp[243].w, src0.w 123: src0.xyz = temp[171], src0.w = temp[171], src1.xyz = const[13] MAD temp[172].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[172].w, src0.w, src1.y, -src0.1 124: src0.xyz = temp[79], src0.w = temp[172], src1.w = temp[186] MAD temp[4].y, src0._w_, src0.111, src0.000 MAD_SAT temp[187].w, src0.z, src1.w, src0.0 125: src0.xyz = temp[172], src0.w = temp[177], src1.xyz = temp[79] MAD temp[4].x, src0.z__, src0.111, src0.000 MAD_SAT temp[178].w, src1.z, src0.w, src0.0 126: src0.xyz = temp[4], src0.w = temp[199], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[182].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[200].w, src2.z, src0.w, src0.0 127: src0.xyz = temp[182], src0.w = temp[112], src1.xyz = temp[110] MAD temp[183].xy, src0.xy_, src0.111, src0.000 MAD temp[113].w, -src0.w, src0.1, src1.x 128: src0.xyz = temp[141], src0.w = temp[113], src1.w = temp[143] SEM_WAIT CMP temp[114].x, src0.1__, src0.0__, src0.w__ MAD temp[144].w, -src1.w, src0.1, src0.x 129: src0.xyz = temp[154], src0.w = temp[144], src1.w = temp[156] CMP temp[145].x, src0.1__, src0.0__, src0.w__ MAD temp[157].w, -src1.w, src0.1, src0.x 130: src0.xyz = temp[119], src0.w = temp[157], src1.w = temp[121] CMP temp[158].x, src0.1__, src0.0__, src0.w__ MAD temp[122].w, -src1.w, src0.1, src0.x 131: src0.xyz = temp[132], src0.w = temp[122], src1.w = temp[134] CMP temp[123].x, src0.1__, src0.0__, src0.w__ MAD temp[135].w, -src1.w, src0.1, src0.x 132: src0.xyz = temp[79], src0.w = temp[135], src1.w = temp[221] CMP temp[136].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[222].w, src0.z, src1.w, src0.0 133: src0.xyz = temp[172], src0.w = temp[249], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[173].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[252].w, src0.w 134: src0.xyz = temp[173], src0.w = temp[230], src1.xyz = temp[79] MAD temp[174].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[231].w, src1.z, src0.w, src0.0 135: src0.xyz = temp[163], src0.w = temp[165] MAD temp[166].w, -src0.w, src0.1, src0.x 136: src0.xyz = temp[79], src0.w = temp[166], src1.w = temp[208] CMP temp[167].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[209].w, src0.z, src1.w, src0.0 137: src0.xyz = temp[79], src0.w = temp[243] MAD_SAT temp[244].w, src0.z, src0.w, src0.0 138: src0.xyz = temp[198], src0.w = temp[200] MAD temp[201].w, -src0.w, src0.1, src0.x 139: src0.xyz = temp[79], src0.w = temp[201], src1.w = temp[252] CMP temp[202].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[253].w, src0.z, src1.w, src0.0 140: src0.xyz = temp[229], src0.w = temp[231] MAD temp[232].w, -src0.w, src0.1, src0.x 141: src0.xyz = temp[207], src0.w = temp[232], src1.w = temp[209] CMP temp[233].x, src0.1__, src0.0__, src0.w__ MAD temp[210].w, -src1.w, src0.1, src0.x 142: src0.xyz = temp[242], src0.w = temp[210], src1.w = temp[244] CMP temp[211].x, src0.1__, src0.0__, src0.w__ MAD temp[245].w, -src1.w, src0.1, src0.x 143: src0.xyz = temp[251], src0.w = temp[245], src1.w = temp[253] CMP temp[246].x, src0.1__, src0.0__, src0.w__ MAD temp[254].w, -src1.w, src0.1, src0.x 144: src0.w = temp[254] CMP temp[255].x, src0.1__, src0.0__, src0.w__ 145: BEGIN_TEX; 146: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 147: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 148: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 149: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 150: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 151: src0.xyz = temp[220], src0.w = temp[222] SEM_WAIT MAD temp[223].w, -src0.w, src0.1, src0.x 152: src0.xyz = temp[97], src0.w = temp[223], src1.w = temp[99] CMP temp[224].x, src0.1__, src0.0__, src0.w__ MAD temp[100].w, -src1.w, src0.1, src0.x 153: src0.xyz = temp[89], src0.w = temp[100], src1.w = temp[91] CMP temp[101].x, src0.1__, src0.0__, src0.w__ MAD temp[92].w, -src1.w, src0.1, src0.x 154: src0.xyz = temp[185], src0.w = temp[92], src1.w = temp[187] CMP temp[93].x, src0.1__, src0.0__, src0.w__ MAD temp[188].w, -src1.w, src0.1, src0.x 155: src0.xyz = temp[176], src0.w = temp[188], src1.w = temp[178] CMP temp[189].x, src0.1__, src0.0__, src0.w__ MAD temp[179].w, -src1.w, src0.1, src0.x 156: src0.xyz = temp[93], src0.w = temp[179], src1.xyz = temp[101], src2.xyz = temp[114], srcp.xyz = (src1 + src0) MAD temp[115].x, srcp.x__, src0.111, src2.x__ CMP temp[180].w, src0.1, src0.0, src0.w 157: src0.xyz = temp[115], src1.xyz = temp[123], src2.xyz = temp[136], srcp.xyz = (src1 + src0) MAD temp[137].x, srcp.x__, src0.111, src2.x__ 158: src0.xyz = temp[137], src1.xyz = temp[145], src2.xyz = temp[158], srcp.xyz = (src1 + src0) MAD temp[159].x, srcp.x__, src0.111, src2.x__ 159: src0.xyz = temp[159], src0.w = temp[180], src1.xyz = temp[167], src2.xyz = temp[180], srcp.xyz = (src1 + src0) MAD temp[181].x, srcp.x__, src0.111, src0.w__ 160: src0.xyz = temp[181], src1.xyz = temp[189], src2.xyz = temp[202], srcp.xyz = (src1 + src0) MAD temp[203].x, srcp.x__, src0.111, src2.x__ 161: src0.xyz = temp[203], src1.xyz = temp[211], src2.xyz = temp[224], srcp.xyz = (src1 + src0) MAD temp[225].x, srcp.x__, src0.111, src2.x__ 162: src0.xyz = temp[225], src1.xyz = temp[233], src2.xyz = temp[246], srcp.xyz = (src1 + src0) MAD temp[247].x, srcp.x__, src0.111, src2.x__ 163: src0.xyz = temp[247], src1.xyz = temp[255], src2.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[257].x, srcp.x__, src2.y__, src0.000 164: src0.xyz = temp[75], src1.xyz = temp[257] MAD temp[258].x, src0.x__, src1.x__, src0.000 165: src0.xyz = temp[269], src1.xyz = temp[258] MAD temp[79].xyz, src0.xyz, src1.xxx, src0.000 166: src0.xyz = temp[79], src0.w = temp[79] 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[7], src0.w = input[0] MAD temp[55].z, src0.__x, src0.111, src0.000 RCP temp[50].w, src0.w 1: src0.xyz = input[0], src0.w = temp[50], src1.xyz = input[1] MAD temp[51].xy, src0.xy_, src0.ww_, src0.000 RCP temp[54].w, src1.z 2: src0.xyz = input[1], src0.w = temp[54], src2.xyz = const[2] MAD temp[55].xy, src0.xy_, src0.ww_, src0.000 RCP temp[71].w, src2.x 3: src0.xyz = temp[51], src1.xyz = const[16], src2.xyz = const[17] MAD temp[52].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = temp[52], src1.xyz = const[11] MAD temp[53].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[52] MAD temp[53].x, src0.x__, src0.111, src0.000 6: src0.xyz = temp[53], src1.xyz = const[20] MAD temp[263].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[53], src1.xyz = const[19] MAD temp[259].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[53], src0.w = const[12] MAD temp[80].xy, src0.xy_, src0.ww_, src0.000 9: src0.xyz = temp[53], src1.xyz = const[18] MAD temp[56].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[80] MAD temp[235].x, src0.x__, src0.111, src0.000 11: src0.xyz = temp[80] MAD temp[213].x, src0.x__, src0.111, src0.000 12: src0.xyz = temp[80] MAD temp[191].x, src0.x__, src0.111, src0.000 13: src0.xyz = temp[80] MAD temp[169].x, src0.x__, src0.111, src0.000 14: src0.xyz = temp[80] MAD temp[147].x, src0.x__, src0.111, src0.000 15: src0.xyz = temp[80] MAD temp[125].x, src0.x__, src0.111, src0.000 16: src0.xyz = temp[80] MAD temp[103].x, src0.x__, src0.111, src0.000 17: src0.xyz = temp[80] MAD temp[81].x, src0.x__, src0.111, src0.000 18: src0.xyz = temp[80] FRC temp[83].x / 8, src0.y__ 19: src0.xyz = temp[83], src0.w = const[13], src1.xyz = const[14], srcp.xyz = (src1 + src0) MAD temp[147].y, srcp._x_, src0.111, src0.000 MAD temp[126].w, src0.x, src0.1, src0.w 20: src0.xyz = temp[83], src1.xyz = const[14] MAD temp[170].x, src0.x__, src0.111, src0.H__ MAD temp[192].w, src0.x, src0.1, src1.z 21: src0.xyz = temp[83], src0.w = const[14], src1.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[235].y, srcp._x_, src0.111, src0.000 MAD temp[214].w, src0.x, src0.1, src0.w 22: src0.xyz = temp[83], src1.xyz = const[13], srcp.xyz = (src1 + src0) MAD temp[103].y, srcp._x_, src0.111, src0.000 23: src0.w = temp[126] MAD temp[125].y, src0._w_, src0.111, src0.000 24: src0.w = temp[192] MAD temp[191].y, src0._w_, src0.111, src0.000 25: BEGIN_TEX; 26: TEX temp[264].xyz, temp[263].xy__, 2D[5]; 27: TEX temp[260].xyz, temp[259].xy__, 2D[6]; 28: TEX temp[57].xyz, temp[56].xy__, 2D[4]; 29: TEX temp[149], temp[147].xy__, 2D[0]; 30: TEX temp[237], temp[235].xy__, 2D[0]; 31: TEX temp[105], temp[103].xy__, 2D[0]; 32: TEX temp[127], temp[125].xy__, 2D[0]; 33: TEX temp[193], temp[191].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 34: src0.w = temp[214] MAD temp[213].y, src0._w_, src0.111, src0.000 35: src0.xyz = temp[83] MAD temp[81].y, src0._x_, src0.111, src0.000 36: src0.xyz = temp[149], src0.w = temp[149], src1.xyz = const[13] SEM_WAIT MAD temp[150].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[150].w, src0.w, src1.y, -src0.1 37: src0.xyz = temp[237], src0.w = temp[237], src1.xyz = const[13] MAD temp[238].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[238].w, src0.w, src1.y, -src0.1 38: src0.xyz = temp[105], src0.w = temp[105], src1.xyz = const[13] MAD temp[106].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[106].w, src0.w, src1.y, -src0.1 39: src0.xyz = temp[127], src0.w = temp[127], src1.xyz = const[13] MAD temp[128].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[128].w, src0.w, src1.y, -src0.1 40: src0.xyz = temp[193], src0.w = temp[193], src1.xyz = const[13] MAD temp[194].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[194].w, src0.w, src1.y, -src0.1 41: src0.xyz = temp[264], src1.xyz = const[13] MAD temp[266].xyz, src0.xyz, src1.yyy, -src0.111 42: src0.xyz = temp[260], src1.xyz = const[8] MAD temp[262].xyz, src0.xyz, src1.xyz, src0.000 43: src0.xyz = temp[57], src1.xyz = const[12] DP3 temp[59].x, src0.xyz, src1.xyz 44: src0.xyz = temp[170] MAD temp[169].y, src0._x_, src0.111, src0.000 45: src0.xyz = temp[150] MAD temp[3].x, src0.z__, src0.111, src0.000 46: src0.w = temp[150] MAD temp[3].y, src0._w_, src0.111, src0.000 47: src0.xyz = temp[238] MAD temp[7].x, src0.z__, src0.111, src0.000 48: src0.w = temp[238] MAD temp[7].y, src0._w_, src0.111, src0.000 49: src0.xyz = temp[55], src1.xyz = temp[59] MAD temp[60].xyz, src0.xyz, src1.xxx, src0.000 50: src0.xyz = temp[106] MAD temp[1].x, src0.z__, src0.111, src0.000 51: src0.w = temp[106] MAD temp[1].y, src0._w_, src0.111, src0.000 52: src0.xyz = temp[128] MAD temp[2].x, src0.z__, src0.111, src0.000 53: src0.xyz = temp[60], src1.xyz = const[10], src2.xyz = const[9], srcp.xyz = (src1 - src0) MAD temp[62].xyz, srcp.xyz, src2.xxx, src0.000 54: src0.xyz = const[3], src0.w = const[3], src1.xyz = temp[60] MAD temp[76].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[76].w, src0.w, src1.x, src0.0 55: src0.w = temp[128] MAD temp[2].y, src0._w_, src0.111, src0.000 56: src0.xyz = temp[194] MAD temp[5].x, src0.z__, src0.111, src0.000 57: src0.w = temp[194] MAD temp[5].y, src0._w_, src0.111, src0.000 58: src0.xyz = const[4], src0.w = const[4], src1.xyz = temp[60], src1.w = temp[76], src2.xyz = temp[76] MAD temp[77].xyz, src0.xyz, src1.yyy, src2.xyz MAD temp[77].w, src0.w, src1.y, src1.w 59: src0.xyz = temp[62] DP3 temp[66].x, src0.xyz, src0.xyz 60: src0.xyz = const[5], src0.w = const[5], src1.xyz = temp[60], src1.w = temp[77], src2.xyz = temp[77] MAD temp[78].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[78].w, src0.w, src1.z, src1.w 61: src0.xyz = temp[62] DP3 temp[63].x, src0.xyz, src0.xyz 62: src0.xyz = temp[78], src0.w = temp[78], src1.xyz = const[6], src1.w = const[6] MAD temp[79].xyz, src0.xyz, src0.111, src1.xyz MAD temp[79].w, src0.w, src0.1, src1.w 63: src0.xyz = temp[106], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[107].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[152].w, src0.w, src0.1, src0.0 64: src0.xyz = temp[107], src1.xyz = temp[63] MAD temp[108].xy, src0.xy_, src0.111, src0.000 RSQ temp[64].w, |src1.x| 65: src0.xyz = temp[62], src0.w = temp[64], src1.w = temp[79] MAD temp[65].xyz, src0.xyz, src0.www, src0.000 MAD temp[139].w, src1.w, src0.1, src0.0 66: src0.xyz = temp[65], src0.w = temp[79], src1.xyz = const[1] DP3 temp[69].x, src0.xyz, src1.xyz MAD temp[117].w, src0.w, src0.1, src0.0 67: src0.xyz = temp[69], src0.w = temp[79] MAD temp[70].x, src0.1__, src0.111, -src0.x__ MAD temp[108].w, src0.w, src0.1, src0.0 68: src0.xyz = temp[70], src0.w = temp[71], src1.w = temp[79] MAD temp[72].x, src0.x__, src0.w__, src0.000 MAD temp[95].w, src1.w, src0.1, src0.0 69: src0.xyz = temp[65], src0.w = temp[79], src1.xyz = temp[266] DP3 temp[267].x, src0.xyz, src1.xyz MAD temp[130].w, src0.w, src0.1, src0.0 70: src0.xyz = temp[267], src0.w = temp[79] MAX temp[268].x, src0.x__, src0.0__ MAD temp[87].w, src0.w, src0.1, src0.0 71: src0.xyz = temp[262], src0.w = temp[152], src1.xyz = temp[268] MAD temp[269].xyz, src0.xyz, src1.xxx, src0.000 RCP temp[155].w, src0.w 72: src0.xyz = temp[1], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[116].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[161].w, src0.w, src0.1, src0.0 73: src0.xyz = temp[116], src0.w = temp[139] MAD temp[117].xy, src0.xy_, src0.111, src0.000 RCP temp[142].w, src0.w 74: src0.xyz = temp[128], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[129].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[174].w, src0.w, src0.1, src0.0 75: src0.xyz = temp[129], src0.w = temp[117] MAD temp[130].xy, src0.xy_, src0.111, src0.000 RCP temp[120].w, src0.w 76: BEGIN_TEX; 77: TEX temp[215], temp[213].xy__, 2D[0]; 78: TEX temp[84], temp[81].xy__, 2D[0]; 79: TEX temp[171], temp[169].xy__, 2D[0]; 80: TEX temp[67].x, temp[66].x___, 1D[3]; 81: TXP temp[110].x, temp[108].xy_w, 2DSHADOW[1]; 82: TEX temp[73].x, temp[72].x___, 1D[2]; 83: TXP temp[119].x, temp[117].xy_w, 2DSHADOW[1]; 84: TXP temp[132].x, temp[130].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 85: src0.xyz = temp[67], src0.w = temp[108], src1.xyz = temp[73] SEM_WAIT MAD temp[75].x, src0.x__, src1.x__, src0.000 RCP temp[111].w, src0.w 86: src0.xyz = temp[2], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[138].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[183].w, src0.w, src0.1, src0.0 87: src0.xyz = temp[138], src0.w = temp[95] MAD temp[139].xy, src0.xy_, src0.111, src0.000 RCP temp[98].w, src0.w 88: src0.xyz = temp[150], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[151].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[196].w, src0.w, src0.1, src0.0 89: src0.xyz = temp[151], src0.w = temp[130] MAD temp[152].xy, src0.xy_, src0.111, src0.000 RCP temp[133].w, src0.w 90: src0.xyz = temp[3], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[160].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[205].w, src0.w, src0.1, src0.0 91: src0.xyz = temp[160], src0.w = temp[87] MAD temp[161].xy, src0.xy_, src0.111, src0.000 RCP temp[90].w, src0.w 92: src0.xyz = temp[194], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[195].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[218].w, src0.w, src0.1, src0.0 93: src0.xyz = temp[195], src0.w = temp[155], src1.xyz = temp[79] MAD temp[196].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[156].w, src1.z, src0.w, src0.0 94: src0.xyz = temp[5], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[204].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[227].w, src0.w, src0.1, src0.0 95: src0.xyz = temp[204], src0.w = temp[161] MAD temp[205].xy, src0.xy_, src0.111, src0.000 RCP temp[164].w, src0.w 96: src0.xyz = temp[238], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[239].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[240].w, src0.w, src0.1, src0.0 97: src0.xyz = temp[239], src0.w = temp[142], src1.xyz = temp[79] MAD temp[240].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[143].w, src1.z, src0.w, src0.0 98: src0.xyz = temp[7], src0.w = temp[79], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[248].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[249].w, src0.w, src0.1, src0.0 99: src0.xyz = temp[248], src0.w = temp[174] MAD temp[249].xy, src0.xy_, src0.111, src0.000 RCP temp[177].w, src0.w 100: src0.xyz = temp[215], src0.w = temp[215], src1.xyz = const[13] MAD temp[216].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[216].w, src0.w, src1.y, -src0.1 101: src0.w = temp[216], src1.w = temp[183] MAD temp[6].y, src0._w_, src0.111, src0.000 RCP temp[186].w, src1.w 102: src0.xyz = temp[216], src0.w = temp[111], src1.xyz = temp[79] MAD temp[6].x, src0.z__, src0.111, src0.000 MAD_SAT temp[112].w, src1.z, src0.w, src0.0 103: src0.xyz = temp[6], src0.w = temp[98], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[226].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[99].w, src2.z, src0.w, src0.0 104: src0.xyz = temp[226], src0.w = temp[196] MAD temp[227].xy, src0.xy_, src0.111, src0.000 RCP temp[199].w, src0.w 105: BEGIN_TEX; 106: TXP temp[141].x, temp[139].xy_w, 2DSHADOW[1]; 107: TXP temp[154].x, temp[152].xy_w, 2DSHADOW[1]; 108: TXP temp[163].x, temp[161].xy_w, 2DSHADOW[1]; 109: TXP temp[198].x, temp[196].xy_w, 2DSHADOW[1]; 110: TXP temp[207].x, temp[205].xy_w, 2DSHADOW[1]; 111: TXP temp[242].x, temp[240].xy_w, 2DSHADOW[1]; 112: TXP temp[251].x, temp[249].xy_w, 2DSHADOW[1]; 113: TXP temp[229].x, temp[227].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 114: src0.xyz = temp[216], src0.w = temp[120], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[217].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[121].w, src2.z, src0.w, src0.0 115: src0.xyz = temp[217], src0.w = temp[133], src1.xyz = temp[79] MAD temp[218].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[134].w, src1.z, src0.w, src0.0 116: src0.xyz = temp[84], src0.w = temp[84], src1.xyz = const[13] MAD temp[85].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[85].w, src0.w, src1.y, -src0.1 117: src0.w = temp[85], src1.w = temp[218] MAD temp[0].y, src0._w_, src0.111, src0.000 RCP temp[221].w, src1.w 118: src0.xyz = temp[85], src0.w = temp[90], src1.xyz = temp[79] MAD temp[0].x, src0.z__, src0.111, src0.000 MAD_SAT temp[91].w, src1.z, src0.w, src0.0 119: src0.xyz = temp[0], src0.w = temp[227], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[94].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[230].w, src0.w 120: src0.xyz = temp[94], src0.w = temp[164], src1.xyz = temp[79] MAD temp[95].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[165].w, src1.z, src0.w, src0.0 121: src0.xyz = temp[85], src0.w = temp[205], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[86].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[208].w, src0.w 122: src0.xyz = temp[86], src0.w = temp[240] MAD temp[87].xy, src0.xy_, src0.111, src0.000 RCP temp[243].w, src0.w 123: src0.xyz = temp[171], src0.w = temp[171], src1.xyz = const[13] MAD temp[172].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[172].w, src0.w, src1.y, -src0.1 124: src0.xyz = temp[79], src0.w = temp[172], src1.w = temp[186] MAD temp[4].y, src0._w_, src0.111, src0.000 MAD_SAT temp[187].w, src0.z, src1.w, src0.0 125: src0.xyz = temp[172], src0.w = temp[177], src1.xyz = temp[79] MAD temp[4].x, src0.z__, src0.111, src0.000 MAD_SAT temp[178].w, src1.z, src0.w, src0.0 126: src0.xyz = temp[4], src0.w = temp[199], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[182].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[200].w, src2.z, src0.w, src0.0 127: src0.xyz = temp[182], src0.w = temp[112], src1.xyz = temp[110] MAD temp[183].xy, src0.xy_, src0.111, src0.000 MAD temp[113].w, -src0.w, src0.1, src1.x 128: src0.xyz = temp[141], src0.w = temp[113], src1.w = temp[143] SEM_WAIT CMP temp[114].x, src0.1__, src0.0__, src0.w__ MAD temp[144].w, -src1.w, src0.1, src0.x 129: src0.xyz = temp[154], src0.w = temp[144], src1.w = temp[156] CMP temp[145].x, src0.1__, src0.0__, src0.w__ MAD temp[157].w, -src1.w, src0.1, src0.x 130: src0.xyz = temp[119], src0.w = temp[157], src1.w = temp[121] CMP temp[158].x, src0.1__, src0.0__, src0.w__ MAD temp[122].w, -src1.w, src0.1, src0.x 131: src0.xyz = temp[132], src0.w = temp[122], src1.w = temp[134] CMP temp[123].x, src0.1__, src0.0__, src0.w__ MAD temp[135].w, -src1.w, src0.1, src0.x 132: src0.xyz = temp[79], src0.w = temp[135], src1.w = temp[221] CMP temp[136].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[222].w, src0.z, src1.w, src0.0 133: src0.xyz = temp[172], src0.w = temp[249], src1.xyz = const[0], src2.xyz = temp[79] MAD temp[173].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[252].w, src0.w 134: src0.xyz = temp[173], src0.w = temp[230], src1.xyz = temp[79] MAD temp[174].xy, src0.xy_, src0.111, src0.000 MAD_SAT temp[231].w, src1.z, src0.w, src0.0 135: src0.xyz = temp[163], src0.w = temp[165] MAD temp[166].w, -src0.w, src0.1, src0.x 136: src0.xyz = temp[79], src0.w = temp[166], src1.w = temp[208] CMP temp[167].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[209].w, src0.z, src1.w, src0.0 137: src0.xyz = temp[79], src0.w = temp[243] MAD_SAT temp[244].w, src0.z, src0.w, src0.0 138: src0.xyz = temp[198], src0.w = temp[200] MAD temp[201].w, -src0.w, src0.1, src0.x 139: src0.xyz = temp[79], src0.w = temp[201], src1.w = temp[252] CMP temp[202].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[253].w, src0.z, src1.w, src0.0 140: src0.xyz = temp[229], src0.w = temp[231] MAD temp[232].w, -src0.w, src0.1, src0.x 141: src0.xyz = temp[207], src0.w = temp[232], src1.w = temp[209] CMP temp[233].x, src0.1__, src0.0__, src0.w__ MAD temp[210].w, -src1.w, src0.1, src0.x 142: src0.xyz = temp[242], src0.w = temp[210], src1.w = temp[244] CMP temp[211].x, src0.1__, src0.0__, src0.w__ MAD temp[245].w, -src1.w, src0.1, src0.x 143: src0.xyz = temp[251], src0.w = temp[245], src1.w = temp[253] CMP temp[246].x, src0.1__, src0.0__, src0.w__ MAD temp[254].w, -src1.w, src0.1, src0.x 144: src0.w = temp[254] CMP temp[255].x, src0.1__, src0.0__, src0.w__ 145: BEGIN_TEX; 146: TXP temp[220].x, temp[218].xy_w, 2DSHADOW[1]; 147: TXP temp[97].x, temp[95].xy_w, 2DSHADOW[1]; 148: TXP temp[89].x, temp[87].xy_w, 2DSHADOW[1]; 149: TXP temp[185].x, temp[183].xy_w, 2DSHADOW[1]; 150: TXP temp[176].x, temp[174].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 151: src0.xyz = temp[220], src0.w = temp[222] SEM_WAIT MAD temp[223].w, -src0.w, src0.1, src0.x 152: src0.xyz = temp[97], src0.w = temp[223], src1.w = temp[99] CMP temp[224].x, src0.1__, src0.0__, src0.w__ MAD temp[100].w, -src1.w, src0.1, src0.x 153: src0.xyz = temp[89], src0.w = temp[100], src1.w = temp[91] CMP temp[101].x, src0.1__, src0.0__, src0.w__ MAD temp[92].w, -src1.w, src0.1, src0.x 154: src0.xyz = temp[185], src0.w = temp[92], src1.w = temp[187] CMP temp[93].x, src0.1__, src0.0__, src0.w__ MAD temp[188].w, -src1.w, src0.1, src0.x 155: src0.xyz = temp[176], src0.w = temp[188], src1.w = temp[178] CMP temp[189].x, src0.1__, src0.0__, src0.w__ MAD temp[179].w, -src1.w, src0.1, src0.x 156: src0.xyz = temp[93], src0.w = temp[179], src1.xyz = temp[101], src2.xyz = temp[114], srcp.xyz = (src1 + src0) MAD temp[115].x, srcp.x__, src0.111, src2.x__ CMP temp[180].w, src0.1, src0.0, src0.w 157: src0.xyz = temp[115], src1.xyz = temp[123], src2.xyz = temp[136], srcp.xyz = (src1 + src0) MAD temp[137].x, srcp.x__, src0.111, src2.x__ 158: src0.xyz = temp[137], src1.xyz = temp[145], src2.xyz = temp[158], srcp.xyz = (src1 + src0) MAD temp[159].x, srcp.x__, src0.111, src2.x__ 159: src0.xyz = temp[159], src0.w = temp[180], src1.xyz = temp[167], srcp.xyz = (src1 + src0) MAD temp[181].x, srcp.x__, src0.111, src0.w__ 160: src0.xyz = temp[181], src1.xyz = temp[189], src2.xyz = temp[202], srcp.xyz = (src1 + src0) MAD temp[203].x, srcp.x__, src0.111, src2.x__ 161: src0.xyz = temp[203], src1.xyz = temp[211], src2.xyz = temp[224], srcp.xyz = (src1 + src0) MAD temp[225].x, srcp.x__, src0.111, src2.x__ 162: src0.xyz = temp[225], src1.xyz = temp[233], src2.xyz = temp[246], srcp.xyz = (src1 + src0) MAD temp[247].x, srcp.x__, src0.111, src2.x__ 163: src0.xyz = temp[247], src1.xyz = temp[255], src2.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[257].x, srcp.x__, src2.y__, src0.000 164: src0.xyz = temp[75], src1.xyz = temp[257] MAD temp[258].x, src0.x__, src1.x__, src0.000 165: src0.xyz = temp[269], src1.xyz = temp[258] MAD temp[79].xyz, src0.xyz, src1.xxx, src0.000 166: src0.xyz = temp[79], src0.w = temp[79] 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[7], src0.w = input[1] MAD temp[2].z, src0.__x, src0.111, src0.000 RCP temp[0].w, src0.w 1: src0.xyz = input[1], src0.w = temp[0], src1.xyz = input[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.z 2: src0.xyz = input[0], src0.w = temp[0], src2.xyz = const[2] MAD temp[2].xy, src0.xy_, src0.ww_, src0.000 RCP temp[0].w, src2.x 3: src0.xyz = temp[1], src1.xyz = const[16], src2.xyz = const[17] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 4: src0.xyz = temp[0], src1.xyz = const[11] MAD temp[1].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[0] MAD temp[1].x, src0.x__, src0.11_, src0.00_ 6: src0.xyz = temp[1], src1.xyz = const[20] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[1], src1.xyz = const[19] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[1], src0.w = const[12] MAD temp[4].xy, src0.xy_, src0.ww_, src0.00_ 9: src0.xyz = temp[1], src1.xyz = const[18] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 10: src0.xyz = temp[4] MAD temp[5].x, src0.x__, src0.11_, src0.00_ 11: src0.xyz = temp[4] MAD temp[6].x, src0.x__, src0.11_, src0.00_ 12: src0.xyz = temp[4] MAD temp[7].x, src0.x__, src0.11_, src0.00_ 13: src0.xyz = temp[4] MAD temp[8].x, src0.x__, src0.11_, src0.00_ 14: src0.xyz = temp[4] MAD temp[9].x, src0.x__, src0.11_, src0.00_ 15: src0.xyz = temp[4] MAD temp[10].x, src0.x__, src0.11_, src0.00_ 16: src0.xyz = temp[4] MAD temp[11].x, src0.x__, src0.11_, src0.00_ 17: src0.xyz = temp[4] MAD temp[12].x, src0.x__, src0.11_, src0.00_ 18: src0.xyz = temp[4] FRC temp[4].x / 8, src0.y__ 19: src0.xyz = temp[4], src0.w = const[13], src1.xyz = const[14], srcp.xyz = (src1 + src0) MAD temp[9].y, srcp._x_, src0.11_, src0.00_ MAD temp[1].w, src0.x, src0.1, src0.w 20: src0.xyz = temp[4], src1.xyz = const[14] MAD temp[0].z, src0.__x, src0.__1, src0.__H MAD temp[2].w, src0.x, src0.1, src1.z 21: src0.xyz = temp[4], src0.w = const[14], src1.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[5].y, srcp._x_, src0.11_, src0.00_ MAD temp[3].w, src0.x, src0.1, src0.w 22: src0.xyz = temp[4], src1.xyz = const[13], srcp.xyz = (src1 + src0) MAD temp[11].y, srcp._x_, src0.11_, src0.00_ 23: src0.w = temp[1] MAD temp[10].y, src0._w_, src0.11_, src0.00_ 24: src0.w = temp[2] MAD temp[7].y, src0._w_, src0.11_, src0.00_ 25: BEGIN_TEX; 26: TEX temp[13].xyz, temp[0].xy__, 2D[5]; 27: TEX temp[14].xyz, temp[3].xy__, 2D[6]; 28: TEX temp[1].xyz, temp[1].xy__, 2D[4]; 29: TEX temp[9], temp[9].xy__, 2D[0]; 30: TEX temp[5], temp[5].xy__, 2D[0]; 31: TEX temp[11], temp[11].xy__, 2D[0]; 32: TEX temp[10], temp[10].xy__, 2D[0]; 33: TEX temp[7], temp[7].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 34: src0.w = temp[3] MAD temp[6].y, src0._w_, src0.11_, src0.00_ 35: src0.xyz = temp[4] MAD temp[12].y, src0._x_, src0.11_, src0.00_ 36: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = const[13] SEM_WAIT MAD temp[3].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[2].w, src0.w, src1.y, -src0.1 37: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = const[13] MAD temp[4].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[3].w, src0.w, src1.y, -src0.1 38: src0.xyz = temp[11], src0.w = temp[11], src1.xyz = const[13] MAD temp[5].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[4].w, src0.w, src1.y, -src0.1 39: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[13] MAD temp[9].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[5].w, src0.w, src1.y, -src0.1 40: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[13] MAD temp[7].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[6].w, src0.w, src1.y, -src0.1 41: src0.xyz = temp[13], src1.xyz = const[13] MAD temp[10].xyz, src0.xyz, src1.yyy, -src0.111 42: src0.xyz = temp[14], src1.xyz = const[8] MAD temp[11].xyz, src0.xyz, src1.xyz, src0.000 43: src0.xyz = temp[1], src1.xyz = const[12] DP3 temp[0].x, src0.xyz, src1.xyz 44: src0.xyz = temp[0] MAD temp[8].y, src0._z_, src0.11_, src0.00_ 45: src0.xyz = temp[3] MAD temp[1].x, src0.z__, src0.11_, src0.00_ 46: src0.w = temp[2] MAD temp[1].y, src0._w_, src0.11_, src0.00_ 47: src0.xyz = temp[4] MAD temp[13].x, src0.z__, src0.11_, src0.00_ 48: src0.w = temp[3] MAD temp[13].y, src0._w_, src0.11_, src0.00_ 49: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 50: src0.xyz = temp[5] MAD temp[2].x, src0.z__, src0.11_, src0.00_ 51: src0.w = temp[4] MAD temp[2].y, src0._w_, src0.11_, src0.00_ 52: src0.xyz = temp[9] MAD temp[14].x, src0.z__, src0.11_, src0.00_ 53: src0.xyz = temp[0], src1.xyz = const[10], src2.xyz = const[9], srcp.xyz = (src1 - src0) MAD temp[15].xyz, srcp.xyz, src2.xxx, src0.000 54: src0.xyz = const[3], src0.w = const[3], src1.xyz = temp[0] MAD temp[16].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[1].w, src0.w, src1.x, src0.0 55: src0.w = temp[5] MAD temp[14].y, src0._w_, src0.11_, src0.00_ 56: src0.xyz = temp[7] MAD temp[17].x, src0.z__, src0.11_, src0.00_ 57: src0.w = temp[6] MAD temp[17].y, src0._w_, src0.11_, src0.00_ 58: src0.xyz = const[4], src0.w = const[4], src1.xyz = temp[0], src1.w = temp[1], src2.xyz = temp[16] MAD temp[16].xyz, src0.xyz, src1.yyy, src2.xyz MAD temp[1].w, src0.w, src1.y, src1.w 59: src0.xyz = temp[15] DP3 temp[1].z, src0.xyz, src0.xyz 60: src0.xyz = const[5], src0.w = const[5], src1.xyz = temp[0], src1.w = temp[1], src2.xyz = temp[16] MAD temp[0].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[1].w, src0.w, src1.z, src1.w 61: src0.xyz = temp[15] DP3 temp[2].z, src0.xyz, src0.xyz 62: src0.xyz = temp[0], src0.w = temp[1], src1.xyz = const[6], src1.w = const[6] MAD temp[0].xyz, src0.xyz, src0.111, src1.xyz MAD temp[1].w, src0.w, src0.1, src1.w 63: src0.xyz = temp[5], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[5].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[16].w, src0.w, src0.1, src0.0 64: src0.xyz = temp[5], src1.xyz = temp[2] MAD temp[5].xy, src0.xy_, src0.11_, src0.00_ RSQ temp[2].w, |src1.z| 65: src0.xyz = temp[15], src0.w = temp[2], src1.w = temp[1] MAD temp[15].xyz, src0.xyz, src0.www, src0.000 MAD temp[18].w, src1.w, src0.1, src0.0 66: src0.xyz = temp[15], src0.w = temp[1], src1.xyz = const[1] DP3 temp[2].z, src0.xyz, src1.xyz MAD temp[19].w, src0.w, src0.1, src0.0 67: src0.xyz = temp[2], src0.w = temp[1] MAD temp[2].z, src0.__1, src0.__1, -src0.__z MAD temp[5].w, src0.w, src0.1, src0.0 68: src0.xyz = temp[2], src0.w = temp[0], src1.w = temp[1] MAD temp[2].z, src0.__z, src0.__w, src0.__0 MAD temp[20].w, src1.w, src0.1, src0.0 69: src0.xyz = temp[15], src0.w = temp[1], src1.xyz = temp[10] DP3 temp[5].z, src0.xyz, src1.xyz MAD temp[10].w, src0.w, src0.1, src0.0 70: src0.xyz = temp[5], src0.w = temp[1] MAX temp[5].z, src0.__z, src0.__0 MAD temp[15].w, src0.w, src0.1, src0.0 71: src0.xyz = temp[11], src0.w = temp[16], src1.xyz = temp[5] MAD temp[11].xyz, src0.xyz, src1.zzz, src0.000 RCP temp[0].w, src0.w 72: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[21].w, src0.w, src0.1, src0.0 73: src0.xyz = temp[2], src0.w = temp[18] MAD temp[19].xy, src0.xy_, src0.11_, src0.00_ RCP temp[2].w, src0.w 74: src0.xyz = temp[9], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[9].w, src0.w, src0.1, src0.0 75: src0.xyz = temp[2], src0.w = temp[19] MAD temp[10].xy, src0.xy_, src0.11_, src0.00_ RCP temp[3].w, src0.w 76: BEGIN_TEX; 77: TEX temp[6], temp[6].xy__, 2D[0]; 78: TEX temp[12], temp[12].xy__, 2D[0]; 79: TEX temp[8], temp[8].xy__, 2D[0]; 80: TEX temp[22].x, temp[1].z___, 1D[3]; 81: TXP temp[23].x, temp[5].xy_w, 2DSHADOW[1]; 82: TEX temp[24].x, temp[2].z___, 1D[2]; 83: TXP temp[19].x, temp[19].xy_w, 2DSHADOW[1]; 84: TXP temp[25].x, temp[10].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 85: src0.xyz = temp[22], src0.w = temp[5], src1.xyz = temp[24] SEM_WAIT MAD temp[1].z, src0.__x, src1.__x, src0.__0 RCP temp[4].w, src0.w 86: src0.xyz = temp[14], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[5].w, src0.w, src0.1, src0.0 87: src0.xyz = temp[2], src0.w = temp[20] MAD temp[18].xy, src0.xy_, src0.11_, src0.00_ RCP temp[7].w, src0.w 88: src0.xyz = temp[3], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[14].w, src0.w, src0.1, src0.0 89: src0.xyz = temp[2], src0.w = temp[10] MAD temp[16].xy, src0.xy_, src0.11_, src0.00_ RCP temp[10].w, src0.w 90: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[22].w, src0.w, src0.1, src0.0 91: src0.xyz = temp[1], src0.w = temp[15] MAD temp[21].xy, src0.xy_, src0.11_, src0.00_ RCP temp[11].w, src0.w 92: src0.xyz = temp[7], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[24].w, src0.w, src0.1, src0.0 93: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[0] MAD temp[14].xy, src0.xy_, src0.11_, src0.00_ MAD_SAT temp[0].w, src1.z, src0.w, src0.0 94: src0.xyz = temp[17], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[17].w, src0.w, src0.1, src0.0 95: src0.xyz = temp[1], src0.w = temp[21] MAD temp[22].xy, src0.xy_, src0.11_, src0.00_ RCP temp[13].w, src0.w 96: src0.xyz = temp[4], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[26].w, src0.w, src0.1, src0.0 97: src0.xyz = temp[1], src0.w = temp[2], src1.xyz = temp[0] MAD temp[26].xy, src0.xy_, src0.11_, src0.00_ MAD_SAT temp[2].w, src1.z, src0.w, src0.0 98: src0.xyz = temp[13], src0.w = temp[1], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD temp[27].w, src0.w, src0.1, src0.0 99: src0.xyz = temp[1], src0.w = temp[9] MAD temp[27].xy, src0.xy_, src0.11_, src0.00_ RCP temp[28].w, src0.w 100: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = const[13] MAD temp[2].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[6].w, src0.w, src1.y, -src0.1 101: src0.w = temp[6], src1.w = temp[5] MAD temp[1].y, src0._w_, src0.11_, src0.00_ RCP temp[6].w, src1.w 102: src0.xyz = temp[2], src0.w = temp[4], src1.xyz = temp[0] MAD temp[1].x, src0.z__, src0.11_, src0.00_ MAD_SAT temp[4].w, src1.z, src0.w, src0.0 103: src0.xyz = temp[1], src0.w = temp[7], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[7].w, src2.z, src0.w, src0.0 104: src0.xyz = temp[1], src0.w = temp[14] MAD temp[17].xy, src0.xy_, src0.11_, src0.00_ RCP temp[29].w, src0.w 105: BEGIN_TEX; 106: TXP temp[18].x, temp[18].xy_w, 2DSHADOW[1]; 107: TXP temp[16].x, temp[16].xy_w, 2DSHADOW[1]; 108: TXP temp[21].x, temp[21].xy_w, 2DSHADOW[1]; 109: TXP temp[14].x, temp[14].xy_w, 2DSHADOW[1]; 110: TXP temp[30].x, temp[22].xy_w, 2DSHADOW[1]; 111: TXP temp[31].x, temp[26].xy_w, 2DSHADOW[1]; 112: TXP temp[32].x, temp[27].xy_w, 2DSHADOW[1]; 113: TXP temp[33].x, temp[17].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 114: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[3].w, src2.z, src0.w, src0.0 115: src0.xyz = temp[1], src0.w = temp[10], src1.xyz = temp[0] MAD temp[24].xy, src0.xy_, src0.11_, src0.00_ MAD_SAT temp[10].w, src1.z, src0.w, src0.0 116: src0.xyz = temp[12], src0.w = temp[12], src1.xyz = const[13] MAD temp[2].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[12].w, src0.w, src1.y, -src0.1 117: src0.w = temp[12], src1.w = temp[24] MAD temp[1].y, src0._w_, src0.11_, src0.00_ RCP temp[12].w, src1.w 118: src0.xyz = temp[2], src0.w = temp[11], src1.xyz = temp[0] MAD temp[1].x, src0.z__, src0.11_, src0.00_ MAD_SAT temp[11].w, src1.z, src0.w, src0.0 119: src0.xyz = temp[1], src0.w = temp[17], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[17].w, src0.w 120: src0.xyz = temp[1], src0.w = temp[13], src1.xyz = temp[0] MAD temp[20].xy, src0.xy_, src0.11_, src0.00_ MAD_SAT temp[13].w, src1.z, src0.w, src0.0 121: src0.xyz = temp[2], src0.w = temp[22], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[22].w, src0.w 122: src0.xyz = temp[1], src0.w = temp[26] MAD temp[15].xy, src0.xy_, src0.11_, src0.00_ RCP temp[26].w, src0.w 123: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = const[13] MAD temp[2].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[8].w, src0.w, src1.y, -src0.1 124: src0.xyz = temp[0], src0.w = temp[8], src1.w = temp[6] MAD temp[1].y, src0._w_, src0.11_, src0.00_ MAD_SAT temp[6].w, src0.z, src1.w, src0.0 125: src0.xyz = temp[2], src0.w = temp[28], src1.xyz = temp[0] MAD temp[1].x, src0.z__, src0.11_, src0.00_ MAD_SAT temp[8].w, src1.z, src0.w, src0.0 126: src0.xyz = temp[1], src0.w = temp[29], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ MAD_SAT temp[28].w, src2.z, src0.w, src0.0 127: src0.xyz = temp[1], src0.w = temp[4], src1.xyz = temp[23] MAD temp[5].xy, src0.xy_, src0.11_, src0.00_ MAD temp[4].w, -src0.w, src0.1, src1.x 128: src0.xyz = temp[18], src0.w = temp[4], src1.w = temp[2] SEM_WAIT CMP temp[1].x, src0.1__, src0.0__, src0.w__ MAD temp[2].w, -src1.w, src0.1, src0.x 129: src0.xyz = temp[16], src0.w = temp[2], src1.w = temp[0] CMP temp[3].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 130: src0.xyz = temp[19], src0.w = temp[0], src1.w = temp[3] CMP temp[1].y, src0._1_, src0._0_, src0._w_ MAD temp[0].w, -src1.w, src0.1, src0.x 131: src0.xyz = temp[25], src0.w = temp[0], src1.w = temp[10] CMP temp[4].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 132: src0.xyz = temp[0], src0.w = temp[0], src1.w = temp[12] CMP temp[3].y, src0._1_, src0._0_, src0._w_ MAD_SAT temp[0].w, src0.z, src1.w, src0.0 133: src0.xyz = temp[2], src0.w = temp[27], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ RCP temp[2].w, src0.w 134: src0.xyz = temp[2], src0.w = temp[17], src1.xyz = temp[0] MAD temp[9].xy, src0.xy_, src0.11_, src0.00_ MAD_SAT temp[3].w, src1.z, src0.w, src0.0 135: src0.xyz = temp[21], src0.w = temp[13] MAD temp[4].w, -src0.w, src0.1, src0.x 136: src0.xyz = temp[0], src0.w = temp[4], src1.w = temp[22] CMP temp[2].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[4].w, src0.z, src1.w, src0.0 137: src0.xyz = temp[0], src0.w = temp[26] MAD_SAT temp[10].w, src0.z, src0.w, src0.0 138: src0.xyz = temp[14], src0.w = temp[28] MAD temp[12].w, -src0.w, src0.1, src0.x 139: src0.xyz = temp[0], src0.w = temp[12], src1.w = temp[2] CMP temp[0].x, src0.1__, src0.0__, src0.w__ MAD_SAT temp[2].w, src0.z, src1.w, src0.0 140: src0.xyz = temp[33], src0.w = temp[3] MAD temp[3].w, -src0.w, src0.1, src0.x 141: src0.xyz = temp[30], src0.w = temp[3], src1.w = temp[4] CMP temp[6].x, src0.1__, src0.0__, src0.w__ MAD temp[3].w, -src1.w, src0.1, src0.x 142: src0.xyz = temp[31], src0.w = temp[3], src1.w = temp[10] CMP temp[7].x, src0.1__, src0.0__, src0.w__ MAD temp[3].w, -src1.w, src0.1, src0.x 143: src0.xyz = temp[32], src0.w = temp[3], src1.w = temp[2] CMP temp[0].y, src0._1_, src0._0_, src0._w_ MAD temp[2].w, -src1.w, src0.1, src0.x 144: src0.w = temp[2] CMP temp[8].x, src0.1__, src0.0__, src0.w__ 145: BEGIN_TEX; 146: TXP temp[10].x, temp[24].xy_w, 2DSHADOW[1]; 147: TXP temp[12].x, temp[20].xy_w, 2DSHADOW[1]; 148: TXP temp[13].x, temp[15].xy_w, 2DSHADOW[1]; 149: TXP temp[5].x, temp[5].xy_w, 2DSHADOW[1]; 150: TXP temp[9].x, temp[9].xy_w, 2DSHADOW[1] SEM_WAIT SEM_ACQUIRE; 151: src0.xyz = temp[10], src0.w = temp[0] SEM_WAIT MAD temp[0].w, -src0.w, src0.1, src0.x 152: src0.xyz = temp[12], src0.w = temp[0], src1.w = temp[7] CMP temp[0].z, src0.__1, src0.__0, src0.__w MAD temp[0].w, -src1.w, src0.1, src0.x 153: src0.xyz = temp[13], src0.w = temp[0], src1.w = temp[11] CMP temp[10].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 154: src0.xyz = temp[5], src0.w = temp[0], src1.w = temp[6] CMP temp[5].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 155: src0.xyz = temp[9], src0.w = temp[0], src1.w = temp[8] CMP temp[9].x, src0.1__, src0.0__, src0.w__ MAD temp[0].w, -src1.w, src0.1, src0.x 156: src0.xyz = temp[5], src0.w = temp[0], src1.xyz = temp[10], src2.xyz = temp[1], srcp.xyz = (src1 + src0) MAD temp[1].x, srcp.x__, src0.1__, src2.x__ CMP temp[0].w, src0.1, src0.0, src0.w 157: src0.xyz = temp[1], src1.xyz = temp[4], src2.xyz = temp[3], srcp.xyz = (src1 + src0) MAD temp[1].x, srcp.x__, src0.1__, src2.y__ 158: src0.xyz = temp[1], src1.xyz = temp[3], src2.xyz = temp[1], srcp.xyz = (src1 + src0) MAD temp[1].x, srcp.x__, src0.1__, src2.y__ 159: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[1].x, srcp.x__, src0.1__, src0.w__ 160: src0.xyz = temp[1], src1.xyz = temp[9], src2.xyz = temp[0], srcp.xyz = (src1 + src0) MAD temp[0].x, srcp.x__, src0.1__, src2.x__ 161: src0.xyz = temp[0], src1.xyz = temp[7], src2.xyz = temp[0], srcp.xyz = (src1 + src0) MAD temp[0].x, srcp.x__, src0.1__, src2.z__ 162: src0.xyz = temp[0], src1.xyz = temp[6], src2.xyz = temp[0], srcp.xyz = (src1 + src0) MAD temp[0].x, srcp.x__, src0.1__, src2.y__ 163: src0.xyz = temp[0], src1.xyz = temp[8], src2.xyz = const[15], srcp.xyz = (src1 + src0) MAD temp[0].x, srcp.x__, src2.y__, src0.0__ 164: src0.xyz = temp[1], src1.xyz = temp[0] MAD temp[0].x, src0.z__, src1.x__, src0.0__ 165: src0.xyz = temp[11], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 166: src0.xyz = temp[0], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 r300compiler error: compiler/r300_fragprog_emit.c::emit_alu(): Too many ALU instructions r300 FP: Compiler Error: compiler/r300_fragprog_emit.c::emit_alu(): Too many ALU instructions Using a dummy shader instead. r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM[0] 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=32************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 1.0 1.0 0.0 op: 00040891 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[5] DCL CONST[0..3] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL IMM[0] FLT32 { 1.0000, 0.0039, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[5].xxxx, CONST[5].yyyy 2: MOV TEMP[1].xyz, CONST[1].xyzx 3: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[0], RECT 4: DP3 TEMP[2].x, TEMP[2].xyzz, IMM[0].xyzz 5: MAD TEMP[2].x, -TEMP[2].xxxx, CONST[3].xxxx, -CONST[2].xxxx 6: MIN TEMP[2].x, TEMP[2].xxxx, CONST[2].yyyy 7: RCP TEMP[3].x, CONST[2].yyyy 8: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 9: MAX TEMP[2].x, TEMP[2].xxxx, IMM[0].wwww 10: POW TEMP[2].x, TEMP[2].xxxx, CONST[0].xxxx 11: MUL TEMP[2].x, TEMP[2].xxxx, CONST[1].wwww 12: MOV TEMP[1].w, TEMP[2].xxxx 13: MOV OUT[0], TEMP[1] 14: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 9: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 10: RCP temp[3].x, const[2].yyyy; 11: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 12: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 13: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 14: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 15: MOV temp[1].w, temp[2].xxxx; 16: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 9: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 10: RCP temp[3].x, const[2].yyyy; 11: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 12: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 13: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 14: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 15: MOV temp[1].w, temp[2].xxxx; 16: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 9: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 10: RCP temp[3].x, const[2].yyyy; 11: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 12: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 13: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 14: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 15: MOV temp[1].w, temp[2].xxxx; 16: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 9: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 10: RCP temp[3].x, const[2].yyyy; 11: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 12: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 13: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 14: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 15: MOV temp[1].w, temp[2].xxxx; 16: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: TEX temp[2].xyz, temp[0].xyyy, RECT[0]; 7: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 8: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 9: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 10: RCP temp[3].x, const[2].yyyy; 11: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 12: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 13: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 14: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 15: MOV temp[1].w, temp[2].xxxx; 16: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: MUL temp[5], temp[0].xyyy, const[9]; 7: TEX temp[6], temp[5], 2D[0]; 8: MOV temp[2].xyz, temp[6]; 9: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 10: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 11: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 12: RCP temp[3].x, const[2].yyyy; 13: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 15: POW temp[2].x, temp[2].xxxx, const[0].xxxx; 16: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 17: MOV temp[1].w, temp[2].xxxx; 18: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[4].w, input[0].wwww; 1: MUL temp[4].xyz, input[0], temp[4].wwww; 2: MAD temp[4].xyz, temp[4].xyz0, const[7].xyz0, const[8].xyz0; 3: MOV temp[0], temp[4]; 4: MAD temp[0].y, temp[4], const[5].xxxx, const[5].yyyy; 5: MOV temp[1].xyz, const[1].xyzx; 6: MUL temp[5], temp[0].xyyy, const[9]; 7: TEX temp[6], temp[5], 2D[0]; 8: MOV temp[2].xyz, temp[6]; 9: DP3 temp[2].x, temp[2].xyzz, const[6].xyzz; 10: MAD temp[2].x, -temp[2].xxxx, const[3].xxxx, -const[2].xxxx; 11: MIN temp[2].x, temp[2].xxxx, const[2].yyyy; 12: RCP temp[3].x, const[2].yyyy; 13: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: MAX temp[2].x, temp[2].xxxx, const[6].wwww; 15: LG2 temp[7].w, temp[2].xxxx; 16: MUL temp[7].w, temp[7].wwww, const[0].xxxx; 17: EX2 temp[2].x, temp[7].wwww; 18: MUL temp[2].x, temp[2].xxxx, const[1].wwww; 19: MOV temp[1].w, temp[2].xxxx; 20: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[4].w, input[0].___w; 1: MUL temp[4].xy, input[0].xy__, temp[4].ww__; 2: MAD temp[4].xy, temp[4].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[0].x, temp[4].x___; 4: MAD temp[0].y, temp[4]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[1].xyz, const[1].xyz_; 6: MUL temp[5].xy, temp[0].xy__, const[9].xy__; 7: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 8: MOV temp[2].xyz, temp[6].xyz_; 9: DP3 temp[2].x, temp[2].xyz_, const[6].xyz_; 10: MAD temp[2].x, -temp[2].x___, const[3].x___, -const[2].x___; 11: MIN temp[2].x, temp[2].x___, const[2].y___; 12: RCP temp[3].x, const[2].y___; 13: MUL temp[2].x, temp[2].x___, temp[3].x___; 14: MAX temp[2].x, temp[2].x___, const[6].w___; 15: LG2 temp[7].w, temp[2].___x; 16: MUL temp[7].w, temp[7].___w, const[0].___x; 17: EX2 temp[2].x, temp[7].w___; 18: MUL temp[2].x, temp[2].x___, const[1].w___; 19: MOV temp[1].w, temp[2].___x; 20: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[4].w, input[0].___w; 1: MUL temp[4].xy, input[0].xy__, temp[4].ww__; 2: MAD temp[4].xy, temp[4].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[0].x, temp[4].x___; 4: MAD temp[0].y, temp[4]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[1].xyz, const[1].xyz_; 6: MUL temp[5].xy, temp[0].xy__, const[9].xy__; 7: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 8: MOV temp[2].xyz, temp[6].xyz_; 9: DP3 temp[2].x, temp[2].xyz_, const[6].xyz_; 10: MAD temp[2].x, -temp[2].x___, const[3].x___, -const[2].x___; 11: MIN temp[2].x, temp[2].x___, const[2].y___; 12: RCP temp[3].x, const[2].y___; 13: MUL temp[2].x, temp[2].x___, temp[3].x___; 14: MAX temp[2].x, temp[2].x___, const[6].w___; 15: LG2 temp[7].w, temp[2].___x; 16: MUL temp[7].w, temp[7].___w, const[0].___x; 17: EX2 temp[2].x, temp[7].w___; 18: MUL temp[2].x, temp[2].x___, const[1].w___; 19: MOV temp[1].w, temp[2].___x; 20: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: MOV temp[15].xyz, temp[14].xyz_; 9: DP3 temp[16].x, temp[15].xyz_, const[6].xyz_; 10: MAD temp[17].x, -temp[16].x___, const[3].x___, -const[2].x___; 11: MIN temp[18].x, temp[17].x___, const[2].y___; 12: RCP temp[19].x, const[2].y___; 13: MUL temp[20].x, temp[18].x___, temp[19].x___; 14: MAX temp[21].x, temp[20].x___, const[6].w___; 15: LG2 temp[22].w, temp[21].___x; 16: MUL temp[23].w, temp[22].___w, const[0].___x; 17: EX2 temp[24].x, temp[23].w___; 18: MUL temp[25].x, temp[24].x___, const[1].w___; 19: MOV temp[12].w, temp[25].___x; 20: MOV output[0], temp[12]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[6].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, -const[2].x___; 10: MIN temp[18].x, temp[17].x___, const[2].y___; 11: RCP temp[19].x, const[2].y___; 12: MUL temp[20].x, temp[18].x___, temp[19].x___; 13: MAX temp[21].x, temp[20].x___, none.0___; 14: LG2 temp[22].w, temp[21].___x; 15: MUL temp[23].w, temp[22].___w, const[0].___x; 16: EX2 temp[24].x, temp[23].w___; 17: MUL temp[25].x, temp[24].x___, const[1].w___; 18: MOV temp[12].w, temp[25].___x; 19: MOV output[0], temp[12]; CONST[6] = { 1.0000 0.0039 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[7].xy__, const[8].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[5]._x__, const[5]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[9].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[6].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, -const[2].x___; 10: MIN temp[18].x, temp[17].x___, const[2].y___; 11: RCP temp[19].x, const[2].y___; 12: MUL temp[20].x, temp[18].x___, temp[19].x___; 13: MAX temp[21].x, temp[20].x___, none.0___; 14: LG2 temp[22].w, temp[21].___x; 15: MUL temp[23].w, temp[22].___w, const[0].___x; 16: EX2 temp[24].x, temp[23].w___; 17: MUL temp[25].x, temp[24].x___, const[1].w___; 18: MOV temp[12].w, temp[25].___x; 19: MOV output[0], temp[12]; CONST[5] = { 1.0000 0.0039 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[8].w, input[0].___w; 1: MUL temp[9].xy, input[0].xy__, temp[8].ww__; 2: MAD temp[10].xy, temp[9].xy__, const[6].xy__, const[7].xy__; 3: MOV temp[11].x, temp[10].x___; 4: MAD temp[11].y, temp[10]._y__, const[4]._x__, const[4]._y__; 5: MOV temp[12].xyz, const[1].xyz_; 6: MUL temp[13].xy, temp[11].xy__, const[8].xy__; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: DP3 temp[16].x, temp[14].xyz_, const[5].xyz_; 9: MAD temp[17].x, -temp[16].x___, const[3].x___, -const[2].x___; 10: MIN temp[18].x, temp[17].x___, const[2].y___; 11: RCP temp[19].x, const[2].y___; 12: MUL temp[20].x, temp[18].x___, temp[19].x___; 13: MAX temp[21].x, temp[20].x___, none.0___; 14: LG2 temp[22].w, temp[21].___x; 15: MUL temp[23].w, temp[22].___w, const[0].___x; 16: EX2 temp[24].x, temp[23].w___; 17: MUL temp[25].x, temp[24].x___, const[1].w___; 18: MOV temp[12].w, temp[25].___x; 19: MOV output[0], temp[12]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = const[1] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 6: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 7: TEX temp[14].xyz, temp[13].xy__, 2D[0]; 8: src0.xyz = temp[14], src1.xyz = const[5] DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = const[2] MAD temp[17].x, -src0.x__, src1.x__, -src2.x__ 10: src0.xyz = temp[17], src1.xyz = const[2] MIN temp[18].x, src0.x__, src1.y__ 11: src0.xyz = const[2] REPL_ALPHA temp[19].x RCP, src0.y 12: src0.xyz = temp[18], src1.xyz = temp[19] MAD temp[20].x, src0.x__, src1.x__, src0.000 13: src0.xyz = temp[20] MAX temp[21].x, src0.x__, src0.0__ 14: src0.xyz = temp[21] LG2 temp[22].w, src0.x 15: src0.xyz = const[0], src0.w = temp[22] MAD temp[23].w, src0.w, src0.x, src0.0 16: src0.w = temp[23] REPL_ALPHA temp[24].x EX2, src0.w 17: src0.xyz = temp[24], src0.w = const[1] MAD temp[25].x, src0.x__, src0.w__, src0.000 18: src0.xyz = temp[25] MAD temp[12].w, src0.x, src0.1, src0.0 19: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[0] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 RCP temp[19].w, src1.y 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[14], src1.xyz = const[5] SEM_WAIT DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = const[2] MAD temp[17].x, -src0.x__, src1.x__, -src2.x__ 10: src0.xyz = temp[17], src1.xyz = const[2] MIN temp[18].x, src0.x__, src1.y__ 11: src0.xyz = temp[18], src0.w = temp[19], src1.xyz = temp[19] MAD temp[20].x, src0.x__, src0.w__, src0.000 12: src0.xyz = temp[20] MAX temp[21].x, src0.x__, src0.0__ 13: src0.xyz = temp[21] LG2 temp[22].w, src0.x 14: src0.xyz = const[0], src0.w = temp[22] MAD temp[23].w, src0.w, src0.x, src0.0 15: src0.w = temp[23] REPL_ALPHA temp[24].x EX2, src0.w 16: src0.xyz = temp[24], src0.w = const[1] MAD temp[25].x, src0.x__, src0.w__, src0.000 17: src0.xyz = temp[25] MAD temp[12].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[0] MAD temp[12].xyz, src0.xyz, src0.111, src0.000 RCP temp[8].w, src0.w 1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src0.ww_, src0.000 RCP temp[19].w, src1.y 2: src0.xyz = temp[9], src1.xyz = const[6], src2.xyz = const[7] MAD temp[10].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[10], src1.xyz = const[4] MAD temp[11].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[10] MAD temp[11].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[11], src1.xyz = const[8] MAD temp[13].xy, src0.xy_, src1.xy_, src0.000 6: BEGIN_TEX; 7: TEX temp[14].xyz, temp[13].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[14], src1.xyz = const[5] SEM_WAIT DP3 temp[16].x, src0.xyz, src1.xyz 9: src0.xyz = temp[16], src1.xyz = const[3], src2.xyz = const[2] MAD temp[17].x, -src0.x__, src1.x__, -src2.x__ 10: src0.xyz = temp[17], src1.xyz = const[2] MIN temp[18].x, src0.x__, src1.y__ 11: src0.xyz = temp[18], src0.w = temp[19] MAD temp[20].x, src0.x__, src0.w__, src0.000 12: src0.xyz = temp[20] MAX temp[21].x, src0.x__, src0.0__ 13: src0.xyz = temp[21] LG2 temp[22].w, src0.x 14: src0.xyz = const[0], src0.w = temp[22] MAD temp[23].w, src0.w, src0.x, src0.0 15: src0.w = temp[23] REPL_ALPHA temp[24].x EX2, src0.w 16: src0.xyz = temp[24], src0.w = const[1] MAD temp[25].x, src0.x__, src0.w__, src0.000 17: src0.xyz = temp[25] MAD temp[12].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[12], src0.w = temp[12] 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[1], src0.w = input[0] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 RCP temp[1].w, src0.w 1: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[2] MAD temp[0].xy, src0.xy_, src0.ww_, src0.00_ RCP temp[0].w, src1.y 2: src0.xyz = temp[0], src1.xyz = const[6], src2.xyz = const[7] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[2].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[0] MAD temp[2].x, src0.x__, src0.11_, src0.00_ 5: src0.xyz = temp[2], src1.xyz = const[8] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 6: BEGIN_TEX; 7: TEX temp[2].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[2], src1.xyz = const[5] SEM_WAIT DP3 temp[0].x, src0.xyz, src1.xyz 9: src0.xyz = temp[0], src1.xyz = const[3], src2.xyz = const[2] MAD temp[0].x, -src0.x__, src1.x__, -src2.x__ 10: src0.xyz = temp[0], src1.xyz = const[2] MIN temp[0].x, src0.x__, src1.y__ 11: src0.xyz = temp[0], src0.w = temp[0] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 12: src0.xyz = temp[0] MAX temp[0].x, src0.x__, src0.0__ 13: src0.xyz = temp[0] LG2 temp[0].w, src0.x 14: src0.xyz = const[0], src0.w = temp[0] MAD temp[0].w, src0.w, src0.x, src0.0 15: src0.w = temp[0] REPL_ALPHA temp[0].x EX2, src0.w 16: src0.xyz = temp[0], src0.w = const[1] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 17: src0.xyz = temp[0] MAD temp[0].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[1], 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=33************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 5, tex_end: 0 (code_addr: 00000140) 0: xyz: c1 t0 t0 bias-> t1.xyz (03840021) w: t0 t0 t0 bias-> t1.w (00840000) xyz: c1.xyz 1.0 0.0 op: 00050a80 w: t0.w c1.x c1.x op: 05000009 1: xyz: t0 c2 t0 bias-> t0.xy (01800880) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t0.xyz t1.www 0.0 op: 00050600 w: c2.y t0.x t0.x op: 05000004 2: xyz: t0 c6 c7 bias-> t0.xy (01827980) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c6.xyz c7.xyz op: 00020200 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 c4 t0 bias-> t2.y (01080900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xxx c4.xyz op: 00010280 w: t0.x t0.x t0.x op: 00000000 4: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.x t0.x t0.x op: 00000000 5: xyz: t2 c8 t0 bias-> t0.xy (01800a02) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c8.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 6, tex_offset: 0, alu_end: 10, tex_end: 0 (code_addr: 00400286) TEX: TEX t2, t0, texture[0] (00008080) 6: xyz: t2 c5 t0 bias-> t0.x (00800942) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c5.xyz t2.xxx op: 00804200 w: t2.x t2.x t2.x op: 00000000 7: xyz: t0 c3 c2 bias-> t0.x (008228c0) w: t0 t0 t0 bias-> (00000000) xyz: -t0.xyz c3.xyz -c2.xyz op: 000a0220 w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 c2 t0 bias-> t0.x (00800880) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c2.yyy t0.xxx op: 02004300 w: t0.x t0.x t0.x op: 00000000 9: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 10: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.0 t0.xxx op: 02804a00 w: t0.x t0.x t0.x op: 00000000 11: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x t0.x t0.x op: 04800000 12: xyz: c0 t0 t0 bias-> (00000020) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c0.xxx c0.xxx c0.xxx op: 00004081 w: t0.w c0.x 0.0 op: 00040009 13: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t0.w t0.x t0.x op: 04000009 14: xyz: t0 t0 t0 bias-> t0.x (00800000) w: c1 t0 t0 bias-> (00000021) xyz: t0.xyz c1.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 15: xyz: t0 t0 t0 bias-> (00000000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.x 1.0 0.0 op: 00040880 16: xyz: t1 t0 t0 bias-> o0.xyz (1c000001) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t1.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[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..4] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[2] 2: ADD TEMP[1].x, -IN[1].zzzz, -CONST[2].xxxx 3: RCP TEMP[2].x, CONST[2].yyyy 4: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 5: POW TEMP[1].x, TEMP[1].xxxx, CONST[0].xxxx 6: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[1].xxxx 7: MAD TEMP[1].x, CONST[1].xxxx, TEMP[1].xxxx, TEMP[2].xxxx 8: MUL TEMP[1].x, TEMP[1].xxxx, CONST[4].xxxx 9: MUL TEMP[1].x, TEMP[0].wwww, TEMP[1].xxxx 10: MOV TEMP[0].w, TEMP[1].xxxx 11: MUL TEMP[0].xyz, TEMP[0].xyzz, CONST[3].xxxx 12: MOV OUT[0], TEMP[0] 13: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 10: MOV temp[0].w, temp[1].xxxx; 11: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 12: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: LG2 temp[3].w, temp[1].xxxx; 6: MUL temp[3].w, temp[3].wwww, const[0].xxxx; 7: EX2 temp[1].x, temp[3].wwww; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 10: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 11: MUL temp[1].x, temp[0].wwww, temp[1].xxxx; 12: MOV temp[0].w, temp[1].xxxx; 13: MUL temp[0].xyz, temp[0].xyzz, const[3].xxxx; 14: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].z___, -const[2].x___; 3: RCP temp[2].x, const[2].y___; 4: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 5: LG2 temp[3].w, temp[1].___x; 6: MUL temp[3].w, temp[3].___w, const[0].___x; 7: EX2 temp[1].x, temp[3].w___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MAD temp[1].x, const[1].x___, temp[1].x___, temp[2].x___; 10: MUL temp[1].x, temp[1].x___, const[4].x___; 11: MUL temp[1].x, temp[0].w___, temp[1].x___; 12: MOV temp[0].w, temp[1].___x; 13: MUL temp[0].xyz, temp[0].xyz_, const[3].xxx_; 14: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].z___, -const[2].x___; 3: RCP temp[2].x, const[2].y___; 4: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 5: LG2 temp[3].w, temp[1].___x; 6: MUL temp[3].w, temp[3].___w, const[0].___x; 7: EX2 temp[1].x, temp[3].w___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MAD temp[1].x, const[1].x___, temp[1].x___, temp[2].x___; 10: MUL temp[1].x, temp[1].x___, const[4].x___; 11: MUL temp[1].x, temp[0].w___, temp[1].x___; 12: MOV temp[0].w, temp[1].___x; 13: MUL temp[0].xyz, temp[0].xyz_, const[3].xxx_; 14: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, temp[0].1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[5].w___, temp[14].x___; 12: MOV temp[16].w, temp[15].___x; 13: MUL temp[16].xyz, temp[5].xyz_, const[3].xxx_; 14: MOV output[0], temp[16]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[5].w___, temp[14].x___; 12: MOV temp[16].w, temp[15].___x; 13: MUL temp[16].xyz, temp[5].xyz_, const[3].xxx_; 14: MOV output[0], temp[16]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[5].w___, temp[14].x___; 12: MOV temp[16].w, temp[15].___x; 13: MUL temp[16].xyz, temp[5].xyz_, const[3].xxx_; 14: MOV output[0], temp[16]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[5].w___, temp[14].x___; 12: MOV temp[16].w, temp[15].___x; 13: MUL temp[16].xyz, temp[5].xyz_, const[3].xxx_; 14: MOV output[0], temp[16]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ 3: src0.xyz = const[2] REPL_ALPHA temp[7].x RCP, src0.y 4: src0.xyz = temp[6], src1.xyz = temp[7] MAD_SAT temp[8].x, src0.x__, src1.x__, src0.000 5: src0.xyz = temp[8] LG2 temp[9].w, src0.x 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src0.w = temp[5] MAD temp[15].x, src0.w__, src0.x__, src0.000 12: src0.xyz = temp[15] MAD temp[16].w, src0.x, src0.1, src0.0 13: src0.xyz = temp[5], src1.xyz = const[3] MAD temp[16].xyz, src0.xyz, src1.xxx, src0.000 14: src0.xyz = temp[16], src0.w = temp[16] 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[4], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ RCP temp[7].w, src1.y 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = const[3], src2.xyz = temp[6] MAD temp[16].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT temp[8].w, src2.x, src0.w, src0.0 5: src0.xyz = temp[8], src0.w = temp[8] LG2 temp[9].w, src0.w 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src0.w = temp[5] MAD temp[15].x, src0.w__, src0.x__, src0.000 12: src0.xyz = temp[15] MAD temp[16].w, src0.x, src0.1, src0.0 13: src0.xyz = temp[16], src0.w = temp[16] 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[4], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ RCP temp[7].w, src1.y 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = const[3], src2.xyz = temp[6] MAD temp[16].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT temp[8].w, src2.x, src0.w, src0.0 5: src0.w = temp[8] LG2 temp[9].w, src0.w 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src0.w = temp[5] MAD temp[15].x, src0.w__, src0.x__, src0.000 12: src0.xyz = temp[15] MAD temp[16].w, src0.x, src0.1, src0.0 13: src0.xyz = temp[16], src0.w = temp[16] 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 = input[1], src1.xyz = const[2] MAD temp[1].x, -src0.z__, src0.1__, -src1.x__ RCP temp[1].w, src1.y 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[0], src0.w = temp[1], src1.xyz = const[3], src2.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT temp[1].w, src2.x, src0.w, src0.0 5: src0.w = temp[1] LG2 temp[1].w, src0.w 6: src0.xyz = const[0], src0.w = temp[1] MAD temp[1].w, src0.w, src0.x, src0.0 7: src0.w = temp[1] REPL_ALPHA temp[1].x EX2, src0.w 8: src0.xyz = temp[1] MAD temp[1].y, src0._1_, src0._1_, -src0._x_ 9: src0.xyz = const[1], src1.xyz = temp[1], src2.xyz = temp[1] MAD temp[1].x, src0.x__, src1.x__, src2.y__ 10: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[1].x, src0.x__, src1.x__, src0.0__ 11: src0.xyz = temp[1], src0.w = temp[0] MAD temp[1].x, src0.w__, src0.x__, src0.0__ 12: src0.xyz = temp[1] MAD temp[0].w, src0.x, src0.1, src0.0 13: 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=34************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 11, tex_end: 0 (code_addr: 004002c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c2 t0 bias-> t1.x (00840881) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t1.zzz 1.0 -c2.xyz op: 00090aa3 w: c2.y t1.x t1.x op: 05000004 1: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t0 t2 t0 bias-> t0.w (00800080) xyz: t0.xyz t2.xyz 0.0 op: 00050200 w: t0.w t2.w 0.0 op: 00040509 2: xyz: t0 c3 t1 bias-> t0.xyz (038018c0) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t0.xyz c3.xxx 0.0 op: 00050280 w: t1.x t1.w 0.0 op: 40040486 3: 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: 04800009 4: xyz: c0 t0 t0 bias-> (00000020) w: t1 t0 t0 bias-> t1.w (00840001) xyz: c0.xxx c0.xxx c0.xxx op: 00004081 w: t1.w c0.x 0.0 op: 00040009 5: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t1.w t0.x t0.x op: 04000009 6: xyz: t1 t0 t0 bias-> t1.y (01040001) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 1.0 -t1.xxx op: 00084a95 w: t1.x t1.x t1.x op: 00000000 7: xyz: c1 t1 t1 bias-> t1.x (00841061) w: t0 t0 t0 bias-> (00000000) xyz: c1.xyz t1.xyz t1.yyy op: 00028200 w: c1.x c1.x c1.x op: 00000000 8: xyz: t1 c4 t0 bias-> t1.x (00840901) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c4.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 9: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t0 t0 t0 bias-> (00000000) xyz: t0.www t1.xyz 0.0 op: 0005000c w: t1.x t1.x t1.x op: 00000000 10: 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.x 1.0 0.0 op: 00040880 11: 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[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..4] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[2] 2: ADD TEMP[1].x, -IN[1].zzzz, -CONST[2].xxxx 3: RCP TEMP[2].x, CONST[2].yyyy 4: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 5: POW TEMP[1].x, TEMP[1].xxxx, CONST[0].xxxx 6: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[1].xxxx 7: MAD TEMP[1].x, CONST[1].xxxx, TEMP[1].xxxx, TEMP[2].xxxx 8: MUL TEMP[1].x, TEMP[1].xxxx, CONST[4].xxxx 9: MUL TEMP[1].x, TEMP[1].xxxx, CONST[3].xxxx 10: MUL TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx 11: MOV OUT[0], TEMP[0] 12: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: POW temp[1].x, temp[1].xxxx, const[0].xxxx; 6: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 7: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 8: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 9: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 10: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 11: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].zzzz, -const[2].xxxx; 3: RCP temp[2].x, const[2].yyyy; 4: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 5: LG2 temp[3].w, temp[1].xxxx; 6: MUL temp[3].w, temp[3].wwww, const[0].xxxx; 7: EX2 temp[1].x, temp[3].wwww; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MAD temp[1].x, const[1].xxxx, temp[1].xxxx, temp[2].xxxx; 10: MUL temp[1].x, temp[1].xxxx, const[4].xxxx; 11: MUL temp[1].x, temp[1].xxxx, const[3].xxxx; 12: MUL temp[0].xyz, temp[0].xyzz, temp[1].xxxx; 13: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].z___, -const[2].x___; 3: RCP temp[2].x, const[2].y___; 4: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 5: LG2 temp[3].w, temp[1].___x; 6: MUL temp[3].w, temp[3].___w, const[0].___x; 7: EX2 temp[1].x, temp[3].w___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MAD temp[1].x, const[1].x___, temp[1].x___, temp[2].x___; 10: MUL temp[1].x, temp[1].x___, const[4].x___; 11: MUL temp[1].x, temp[1].x___, const[3].x___; 12: MUL temp[0].xyz, temp[0].xyz_, temp[1].xxx_; 13: 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], temp[0], input[2]; 2: ADD temp[1].x, -input[1].z___, -const[2].x___; 3: RCP temp[2].x, const[2].y___; 4: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 5: LG2 temp[3].w, temp[1].___x; 6: MUL temp[3].w, temp[3].___w, const[0].___x; 7: EX2 temp[1].x, temp[3].w___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MAD temp[1].x, const[1].x___, temp[1].x___, temp[2].x___; 10: MUL temp[1].x, temp[1].x___, const[4].x___; 11: MUL temp[1].x, temp[1].x___, const[3].x___; 12: MUL temp[0].xyz, temp[0].xyz_, temp[1].xxx_; 13: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, temp[0].1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[14].x___, const[3].x___; 12: MUL temp[5].xyz, temp[5].xyz_, temp[15].xxx_; 13: MOV output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[14].x___, const[3].x___; 12: MUL temp[5].xyz, temp[5].xyz_, temp[15].xxx_; 13: MOV output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[14].x___, const[3].x___; 12: MUL temp[5].xyz, temp[5].xyz_, temp[15].xxx_; 13: MOV output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: MUL temp[5], temp[4], input[2]; 2: ADD temp[6].x, -input[1].z___, -const[2].x___; 3: RCP temp[7].x, const[2].y___; 4: MUL_SAT temp[8].x, temp[6].x___, temp[7].x___; 5: LG2 temp[9].w, temp[8].___x; 6: MUL temp[10].w, temp[9].___w, const[0].___x; 7: EX2 temp[11].x, temp[10].w___; 8: ADD temp[12].x, none.1___, -temp[11].x___; 9: MAD temp[13].x, const[1].x___, temp[11].x___, temp[12].x___; 10: MUL temp[14].x, temp[13].x___, const[4].x___; 11: MUL temp[15].x, temp[14].x___, const[3].x___; 12: MUL temp[5].xyz, temp[5].xyz_, temp[15].xxx_; 13: MOV output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[0]; 1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ 3: src0.xyz = const[2] REPL_ALPHA temp[7].x RCP, src0.y 4: src0.xyz = temp[6], src1.xyz = temp[7] MAD_SAT temp[8].x, src0.x__, src1.x__, src0.000 5: src0.xyz = temp[8] LG2 temp[9].w, src0.x 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src1.xyz = const[3] MAD temp[15].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[5], src1.xyz = temp[15] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 13: src0.xyz = temp[5], src0.w = temp[5] 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[4], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ RCP temp[7].w, src1.y 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[6], src0.w = temp[7], src1.xyz = temp[7] MAD_SAT temp[8].x, src0.x__, src0.w__, src0.000 5: src0.xyz = temp[8] LG2 temp[9].w, src0.x 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src1.xyz = const[3] MAD temp[15].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[5], src1.xyz = temp[15] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 13: src0.xyz = temp[5], src0.w = temp[5] 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[4], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[2] MAD temp[6].x, -src0.z__, src0.111, -src1.x__ RCP temp[7].w, src1.y 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[6], src0.w = temp[7] MAD_SAT temp[8].x, src0.x__, src0.w__, src0.000 5: src0.xyz = temp[8] LG2 temp[9].w, src0.x 6: src0.xyz = const[0], src0.w = temp[9] MAD temp[10].w, src0.w, src0.x, src0.0 7: src0.w = temp[10] REPL_ALPHA temp[11].x EX2, src0.w 8: src0.xyz = temp[11] MAD temp[12].x, src0.1__, src0.111, -src0.x__ 9: src0.xyz = const[1], src1.xyz = temp[11], src2.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src2.x__ 10: src0.xyz = temp[13], src1.xyz = const[4] MAD temp[14].x, src0.x__, src1.x__, src0.000 11: src0.xyz = temp[14], src1.xyz = const[3] MAD temp[15].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[5], src1.xyz = temp[15] MAD temp[5].xyz, src0.xyz, src1.xxx, src0.000 13: src0.xyz = temp[5], src0.w = temp[5] 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 = input[1], src1.xyz = const[2] MAD temp[1].x, -src0.z__, src0.1__, -src1.x__ RCP temp[1].w, src1.y 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[1], src0.w = temp[1] MAD_SAT temp[1].x, src0.x__, src0.w__, src0.0__ 5: src0.xyz = temp[1] LG2 temp[1].w, src0.x 6: src0.xyz = const[0], src0.w = temp[1] MAD temp[1].w, src0.w, src0.x, src0.0 7: src0.w = temp[1] REPL_ALPHA temp[1].x EX2, src0.w 8: src0.xyz = temp[1] MAD temp[1].y, src0._1_, src0._1_, -src0._x_ 9: src0.xyz = const[1], src1.xyz = temp[1], src2.xyz = temp[1] MAD temp[1].x, src0.x__, src1.x__, src2.y__ 10: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[1].x, src0.x__, src1.x__, src0.0__ 11: src0.xyz = temp[1], src1.xyz = const[3] MAD temp[1].x, src0.x__, src1.x__, src0.0__ 12: src0.xyz = temp[0], src1.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 13: 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=35************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 11, tex_end: 0 (code_addr: 004002c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c2 t0 bias-> t1.x (00840881) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t1.zzz 1.0 -c2.xyz op: 00090aa3 w: c2.y t1.x t1.x op: 05000004 1: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t0 t2 t0 bias-> t0.w (00800080) xyz: t0.xyz t2.xyz 0.0 op: 00050200 w: t0.w t2.w 0.0 op: 00040509 2: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t1 t0 t0 bias-> (00000001) xyz: t1.xyz t1.www 0.0 op: 40050600 w: t1.x t1.x t1.x op: 00000000 3: xyz: t1 t0 t0 bias-> (00000001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xxx t1.xxx t1.xxx op: 00004081 w: t1.x t1.x t1.x op: 04800000 4: xyz: c0 t0 t0 bias-> (00000020) w: t1 t0 t0 bias-> t1.w (00840001) xyz: c0.xxx c0.xxx c0.xxx op: 00004081 w: t1.w c0.x 0.0 op: 00040009 5: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t1.w t0.x t0.x op: 04000009 6: xyz: t1 t0 t0 bias-> t1.y (01040001) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 1.0 -t1.xxx op: 00084a95 w: t1.x t1.x t1.x op: 00000000 7: xyz: c1 t1 t1 bias-> t1.x (00841061) w: t0 t0 t0 bias-> (00000000) xyz: c1.xyz t1.xyz t1.yyy op: 00028200 w: c1.x c1.x c1.x op: 00000000 8: xyz: t1 c4 t0 bias-> t1.x (00840901) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c4.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 9: xyz: t1 c3 t0 bias-> t1.x (008408c1) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c3.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 10: 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 11: 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[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, -2.5000, 0.2500} IMM[1] FLT32 { -0.7500, 0.3000, 0.5000, 0.7500} IMM[2] FLT32 { 2.5000, 0.6250, 0.0000, 0.0000} 0: MUL TEMP[0].xy, IMM[0].xyyy, CONST[0].xxxx 1: MAD TEMP[1].xy, IMM[0].zzzz, TEMP[0].xyyy, IN[0].xyyy 2: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 3: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[0].wwww 4: MAD TEMP[2].xy, IMM[1].xxxx, TEMP[0].xyyy, IN[0].xyyy 5: TEX TEMP[2].xyz, TEMP[2].xyyy, SAMP[0], RECT 6: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].yyyy, TEMP[1].xyzz 7: TEX TEMP[2].xyz, IN[0].xyyy, SAMP[0], RECT 8: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].zzzz, TEMP[1].xyzz 9: MAD TEMP[2].xy, IMM[1].wwww, TEMP[0].xyyy, IN[0].xyyy 10: TEX TEMP[2].xyz, TEMP[2].xyyy, SAMP[0], RECT 11: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].yyyy, TEMP[1].xyzz 12: MAD TEMP[0].xy, IMM[2].xxxx, TEMP[0].xyyy, IN[0].xyyy 13: TEX TEMP[0].xyz, TEMP[0].xyyy, SAMP[0], RECT 14: MAD TEMP[1].xyz, TEMP[0].xyzz, IMM[0].wwww, TEMP[1].xyzz 15: MUL TEMP[0].xyz, TEMP[1].xyzz, IMM[2].yyyy 16: MOV TEMP[0].xyz, TEMP[0].xyzx 17: MOV TEMP[0].w, IMM[0].yyyy 18: MOV OUT[0], TEMP[0] 19: END Fragment Program: before compilation # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].yyyy; 18: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].yyyy; 18: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].yyyy; 18: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].yyyy; 18: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].yyyy; 18: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: MUL temp[3], temp[1].xyyy, const[4]; 3: TEX temp[4], temp[3], 2D[0]; 4: MOV temp[1].xyz, temp[4]; 5: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 6: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 7: MUL temp[5], temp[2].xyyy, const[4]; 8: TEX temp[6], temp[5], 2D[0]; 9: MOV temp[2].xyz, temp[6]; 10: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 11: MUL temp[7], input[0].xyyy, const[4]; 12: TEX temp[8], temp[7], 2D[0]; 13: MOV temp[2].xyz, temp[8]; 14: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 15: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 16: MUL temp[9], temp[2].xyyy, const[4]; 17: TEX temp[10], temp[9], 2D[0]; 18: MOV temp[2].xyz, temp[10]; 19: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 20: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 21: MUL temp[11], temp[0].xyyy, const[4]; 22: TEX temp[12], temp[11], 2D[0]; 23: MOV temp[0].xyz, temp[12]; 24: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 25: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 26: MOV temp[0].xyz, temp[0].xyzx; 27: MOV temp[0].w, const[1].yyyy; 28: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: MUL temp[3], temp[1].xyyy, const[4]; 3: TEX temp[4], temp[3], 2D[0]; 4: MOV temp[1].xyz, temp[4]; 5: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 6: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 7: MUL temp[5], temp[2].xyyy, const[4]; 8: TEX temp[6], temp[5], 2D[0]; 9: MOV temp[2].xyz, temp[6]; 10: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 11: MUL temp[7], input[0].xyyy, const[4]; 12: TEX temp[8], temp[7], 2D[0]; 13: MOV temp[2].xyz, temp[8]; 14: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 15: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 16: MUL temp[9], temp[2].xyyy, const[4]; 17: TEX temp[10], temp[9], 2D[0]; 18: MOV temp[2].xyz, temp[10]; 19: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 20: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 21: MUL temp[11], temp[0].xyyy, const[4]; 22: TEX temp[12], temp[11], 2D[0]; 23: MOV temp[0].xyz, temp[12]; 24: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 25: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 26: MOV temp[0].xyz, temp[0].xyzx; 27: MOV temp[0].w, const[1].yyyy; 28: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xy__, const[0].xx__; 1: MAD temp[1].xy, const[1].zz__, temp[0].xy__, input[0].xy__; 2: MUL temp[3].xy, temp[1].xy__, const[4].xy__; 3: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 4: MOV temp[1].xyz, temp[4].xyz_; 5: MUL temp[1].xyz, temp[1].xyz_, const[1].www_; 6: MAD temp[2].xy, const[2].xx__, temp[0].xy__, input[0].xy__; 7: MUL temp[5].xy, temp[2].xy__, const[4].xy__; 8: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 9: MOV temp[2].xyz, temp[6].xyz_; 10: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 11: MUL temp[7].xy, input[0].xy__, const[4].xy__; 12: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 13: MOV temp[2].xyz, temp[8].xyz_; 14: MAD temp[1].xyz, temp[2].xyz_, const[2].zzz_, temp[1].xyz_; 15: MAD temp[2].xy, const[2].ww__, temp[0].xy__, input[0].xy__; 16: MUL temp[9].xy, temp[2].xy__, const[4].xy__; 17: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 18: MOV temp[2].xyz, temp[10].xyz_; 19: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 20: MAD temp[0].xy, const[3].xx__, temp[0].xy__, input[0].xy__; 21: MUL temp[11].xy, temp[0].xy__, const[4].xy__; 22: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 23: MOV temp[0].xyz, temp[12].xyz_; 24: MAD temp[1].xyz, temp[0].xyz_, const[1].www_, temp[1].xyz_; 25: MUL temp[0].xyz, temp[1].xyz_, const[3].yyy_; 26: MOV temp[0].xyz, temp[0].xyz_; 27: MOV temp[0].w, const[1].___y; 28: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xy__, const[0].xx__; 1: MAD temp[1].xy, const[1].zz__, temp[0].xy__, input[0].xy__; 2: MUL temp[3].xy, temp[1].xy__, const[4].xy__; 3: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 4: MOV temp[1].xyz, temp[4].xyz_; 5: MUL temp[1].xyz, temp[1].xyz_, const[1].www_; 6: MAD temp[2].xy, const[2].xx__, temp[0].xy__, input[0].xy__; 7: MUL temp[5].xy, temp[2].xy__, const[4].xy__; 8: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 9: MOV temp[2].xyz, temp[6].xyz_; 10: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 11: MUL temp[7].xy, input[0].xy__, const[4].xy__; 12: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 13: MOV temp[2].xyz, temp[8].xyz_; 14: MAD temp[1].xyz, temp[2].xyz_, const[2].zzz_, temp[1].xyz_; 15: MAD temp[2].xy, const[2].ww__, temp[0].xy__, input[0].xy__; 16: MUL temp[9].xy, temp[2].xy__, const[4].xy__; 17: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 18: MOV temp[2].xyz, temp[10].xyz_; 19: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 20: MAD temp[0].xy, const[3].xx__, temp[0].xy__, input[0].xy__; 21: MUL temp[11].xy, temp[0].xy__, const[4].xy__; 22: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 23: MOV temp[0].xyz, temp[12].xyz_; 24: MAD temp[1].xyz, temp[0].xyz_, const[1].www_, temp[1].xyz_; 25: MUL temp[0].xyz, temp[1].xyz_, const[3].yyy_; 26: MOV temp[0].xyz, temp[0].xyz_; 27: MOV temp[0].w, const[1].___y; 28: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MOV temp[17].xyz, temp[16].xyz_; 5: MUL temp[18].xyz, temp[17].xyz_, const[1].www_; 6: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 7: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 8: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 9: MOV temp[22].xyz, temp[21].xyz_; 10: MAD temp[23].xyz, temp[22].xyz_, const[2].yyy_, temp[18].xyz_; 11: MUL temp[24].xy, input[0].xy__, const[4].xy__; 12: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 13: MOV temp[26].xyz, temp[25].xyz_; 14: MAD temp[27].xyz, temp[26].xyz_, const[2].zzz_, temp[23].xyz_; 15: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 16: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 17: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 18: MOV temp[31].xyz, temp[30].xyz_; 19: MAD temp[32].xyz, temp[31].xyz_, const[2].yyy_, temp[27].xyz_; 20: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 21: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 22: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 23: MOV temp[36].xyz, temp[35].xyz_; 24: MAD temp[37].xyz, temp[36].xyz_, const[1].www_, temp[32].xyz_; 25: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 26: MOV temp[39].xyz, temp[38].xyz_; 27: MOV temp[39].w, const[1].___y; 28: MOV output[0], temp[39]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; CONST[1] = { 0.0000 1.0000 -2.5000 0.2500 } CONST[2] = { -0.7500 0.3000 0.5000 0.7500 } CONST[3] = { 2.5000 0.6250 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; CONST[1] = { 0.0000 1.0000 -2.5000 0.2500 } CONST[2] = { -0.7500 0.3000 0.5000 0.7500 } CONST[3] = { 2.5000 0.6250 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 1: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 2: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: src0.xyz = temp[16], src0.w = const[1] MAD temp[18].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 6: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 9: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 12: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 13: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 16: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 17: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 20: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 21: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 22: MAD temp[39].w, src0.1, src0.1, src0.0 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 MAD temp[39].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 2: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 10: BEGIN_TEX; 11: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 12: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 13: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 14: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 15: TEX temp[16].xyz, temp[15].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[16], src0.w = const[1] SEM_WAIT MAD temp[18].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 MAD temp[39].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 2: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 10: BEGIN_TEX; 11: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 12: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 13: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 14: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 15: TEX temp[16].xyz, temp[15].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[16], src0.w = const[1] SEM_WAIT MAD temp[18].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_ MAD temp[0].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 2: src0.xyz = const[3], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[3].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[1], src0.w = const[2], src1.xyz = input[0] MAD temp[4].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[5].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[0].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[3], src1.xyz = const[4] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[5], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xy_, src0.00_ 9: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 10: BEGIN_TEX; 11: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 12: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 13: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 14: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 15: TEX temp[5].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[5], src0.w = const[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[4], src1.xyz = const[2], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[3], src1.xyz = const[2], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[1], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 23: 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=36************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 9, tex_end: 0 (code_addr: 00000240) 0: xyz: c1 c0 t0 bias-> t1.xy (01840821) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c1.xyz c0.xxx 0.0 op: 00050280 w: 1.0 1.0 0.0 op: 00040891 1: xyz: t0 c4 t0 bias-> t2.xy (01880900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 2: xyz: c3 t1 t0 bias-> t3.xy (018c0063) w: t0 t0 t0 bias-> (00000000) xyz: c3.xxx t1.xyz t0.xyz op: 00020201 w: c3.x c3.x c3.x op: 00000000 3: xyz: t1 t0 t0 bias-> t4.xy (01900001) w: c2 t0 t0 bias-> (00000022) xyz: c2.www t1.xyz t0.xyz op: 0001000c w: t1.x t1.x t1.x op: 00000000 4: xyz: c2 t1 t0 bias-> t5.xy (01940062) w: t0 t0 t0 bias-> (00000000) xyz: c2.xxx t1.xyz t0.xyz op: 00020201 w: c2.x c2.x c2.x op: 00000000 5: xyz: c1 t1 t0 bias-> t0.xy (01800061) w: t0 t0 t0 bias-> (00000000) xyz: c1.zzz t1.xyz t0.xyz op: 00020203 w: c1.x c1.x c1.x op: 00000000 6: xyz: t3 c4 t0 bias-> t1.xy (01840903) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c4.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 7: xyz: t4 c4 t0 bias-> t3.xy (018c0904) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c4.xyz 0.0 op: 00050200 w: t4.x t4.x t4.x op: 00000000 8: xyz: t5 c4 t0 bias-> t4.xy (01900905) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz c4.xyz 0.0 op: 00050200 w: t5.x t5.x t5.x op: 00000000 9: xyz: t0 c4 t0 bias-> t0.xy (01800900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 10, tex_offset: 0, alu_end: 7, tex_end: 4 (code_addr: 004801ca) TEX: TEX t2, t2, texture[0] (00008082) TEX t1, t1, texture[0] (00008041) TEX t3, t3, texture[0] (000080c3) TEX t4, t4, texture[0] (00008104) TEX t5, t0, texture[0] (00008140) 10: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: c1 t0 t0 bias-> (00000021) xyz: t5.xyz c1.www 0.0 op: 00050600 w: t5.x t5.x t5.x op: 00000000 11: xyz: t4 c2 t0 bias-> t0.xyz (03800884) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c2.yyy t0.xyz op: 00020300 w: t4.x t4.x t4.x op: 00000000 12: xyz: t2 t0 t0 bias-> t0.xyz (03800002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 0.5 t0.xyz op: 00010b00 w: t2.x t2.x t2.x op: 00000000 13: xyz: t3 c2 t0 bias-> t0.xyz (03800883) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c2.yyy t0.xyz op: 00020300 w: t3.x t3.x t3.x op: 00000000 14: xyz: t1 t0 t0 bias-> t0.xyz (03800001) w: c1 t0 t0 bias-> (00000021) xyz: t1.xyz c1.www t0.xyz op: 00010600 w: t1.x t1.x t1.x op: 00000000 15: xyz: t0 c3 t0 bias-> t0.xyz (038008c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c3.yyy 0.0 op: 00050300 w: t0.x t0.x t0.x op: 00000000 16: 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 17: 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[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, -2.5000, 0.2500} IMM[1] FLT32 { -0.7500, 0.3000, 0.5000, 0.7500} IMM[2] FLT32 { 2.5000, 0.6250, 0.0000, 0.0000} 0: MUL TEMP[0].xy, IMM[0].xyyy, CONST[0].xxxx 1: MAD TEMP[1].xy, IMM[0].zzzz, TEMP[0].xyyy, IN[0].xyyy 2: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 3: MUL TEMP[1].xyz, TEMP[1].xyzz, IMM[0].wwww 4: MAD TEMP[2].xy, IMM[1].xxxx, TEMP[0].xyyy, IN[0].xyyy 5: TEX TEMP[2].xyz, TEMP[2].xyyy, SAMP[0], RECT 6: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].yyyy, TEMP[1].xyzz 7: TEX TEMP[2].xyz, IN[0].xyyy, SAMP[0], RECT 8: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].zzzz, TEMP[1].xyzz 9: MAD TEMP[2].xy, IMM[1].wwww, TEMP[0].xyyy, IN[0].xyyy 10: TEX TEMP[2].xyz, TEMP[2].xyyy, SAMP[0], RECT 11: MAD TEMP[1].xyz, TEMP[2].xyzz, IMM[1].yyyy, TEMP[1].xyzz 12: MAD TEMP[0].xy, IMM[2].xxxx, TEMP[0].xyyy, IN[0].xyyy 13: TEX TEMP[0].xyz, TEMP[0].xyyy, SAMP[0], RECT 14: MAD TEMP[1].xyz, TEMP[0].xyzz, IMM[0].wwww, TEMP[1].xyzz 15: MUL TEMP[0].xyz, TEMP[1].xyzz, IMM[2].yyyy 16: MOV TEMP[0].xyz, TEMP[0].xyzx 17: MOV TEMP[0].w, IMM[0].xxxx 18: MOV OUT[0], TEMP[0] 19: END Fragment Program: before compilation # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 3: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 4: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 5: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 6: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 7: TEX temp[2].xyz, input[0].xyyy, RECT[0]; 8: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 9: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 10: TEX temp[2].xyz, temp[2].xyyy, RECT[0]; 11: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 12: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 13: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 14: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 15: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 16: MOV temp[0].xyz, temp[0].xyzx; 17: MOV temp[0].w, const[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: MUL temp[3], temp[1].xyyy, const[4]; 3: TEX temp[4], temp[3], 2D[0]; 4: MOV temp[1].xyz, temp[4]; 5: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 6: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 7: MUL temp[5], temp[2].xyyy, const[4]; 8: TEX temp[6], temp[5], 2D[0]; 9: MOV temp[2].xyz, temp[6]; 10: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 11: MUL temp[7], input[0].xyyy, const[4]; 12: TEX temp[8], temp[7], 2D[0]; 13: MOV temp[2].xyz, temp[8]; 14: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 15: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 16: MUL temp[9], temp[2].xyyy, const[4]; 17: TEX temp[10], temp[9], 2D[0]; 18: MOV temp[2].xyz, temp[10]; 19: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 20: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 21: MUL temp[11], temp[0].xyyy, const[4]; 22: TEX temp[12], temp[11], 2D[0]; 23: MOV temp[0].xyz, temp[12]; 24: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 25: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 26: MOV temp[0].xyz, temp[0].xyzx; 27: MOV temp[0].w, const[1].xxxx; 28: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xyyy, const[0].xxxx; 1: MAD temp[1].xy, const[1].zzzz, temp[0].xyyy, input[0].xyyy; 2: MUL temp[3], temp[1].xyyy, const[4]; 3: TEX temp[4], temp[3], 2D[0]; 4: MOV temp[1].xyz, temp[4]; 5: MUL temp[1].xyz, temp[1].xyzz, const[1].wwww; 6: MAD temp[2].xy, const[2].xxxx, temp[0].xyyy, input[0].xyyy; 7: MUL temp[5], temp[2].xyyy, const[4]; 8: TEX temp[6], temp[5], 2D[0]; 9: MOV temp[2].xyz, temp[6]; 10: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 11: MUL temp[7], input[0].xyyy, const[4]; 12: TEX temp[8], temp[7], 2D[0]; 13: MOV temp[2].xyz, temp[8]; 14: MAD temp[1].xyz, temp[2].xyzz, const[2].zzzz, temp[1].xyzz; 15: MAD temp[2].xy, const[2].wwww, temp[0].xyyy, input[0].xyyy; 16: MUL temp[9], temp[2].xyyy, const[4]; 17: TEX temp[10], temp[9], 2D[0]; 18: MOV temp[2].xyz, temp[10]; 19: MAD temp[1].xyz, temp[2].xyzz, const[2].yyyy, temp[1].xyzz; 20: MAD temp[0].xy, const[3].xxxx, temp[0].xyyy, input[0].xyyy; 21: MUL temp[11], temp[0].xyyy, const[4]; 22: TEX temp[12], temp[11], 2D[0]; 23: MOV temp[0].xyz, temp[12]; 24: MAD temp[1].xyz, temp[0].xyzz, const[1].wwww, temp[1].xyzz; 25: MUL temp[0].xyz, temp[1].xyzz, const[3].yyyy; 26: MOV temp[0].xyz, temp[0].xyzx; 27: MOV temp[0].w, const[1].xxxx; 28: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xy__, const[0].xx__; 1: MAD temp[1].xy, const[1].zz__, temp[0].xy__, input[0].xy__; 2: MUL temp[3].xy, temp[1].xy__, const[4].xy__; 3: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 4: MOV temp[1].xyz, temp[4].xyz_; 5: MUL temp[1].xyz, temp[1].xyz_, const[1].www_; 6: MAD temp[2].xy, const[2].xx__, temp[0].xy__, input[0].xy__; 7: MUL temp[5].xy, temp[2].xy__, const[4].xy__; 8: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 9: MOV temp[2].xyz, temp[6].xyz_; 10: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 11: MUL temp[7].xy, input[0].xy__, const[4].xy__; 12: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 13: MOV temp[2].xyz, temp[8].xyz_; 14: MAD temp[1].xyz, temp[2].xyz_, const[2].zzz_, temp[1].xyz_; 15: MAD temp[2].xy, const[2].ww__, temp[0].xy__, input[0].xy__; 16: MUL temp[9].xy, temp[2].xy__, const[4].xy__; 17: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 18: MOV temp[2].xyz, temp[10].xyz_; 19: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 20: MAD temp[0].xy, const[3].xx__, temp[0].xy__, input[0].xy__; 21: MUL temp[11].xy, temp[0].xy__, const[4].xy__; 22: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 23: MOV temp[0].xyz, temp[12].xyz_; 24: MAD temp[1].xyz, temp[0].xyz_, const[1].www_, temp[1].xyz_; 25: MUL temp[0].xyz, temp[1].xyz_, const[3].yyy_; 26: MOV temp[0].xyz, temp[0].xyz_; 27: MOV temp[0].w, const[1].___x; 28: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[0].xy, const[1].xy__, const[0].xx__; 1: MAD temp[1].xy, const[1].zz__, temp[0].xy__, input[0].xy__; 2: MUL temp[3].xy, temp[1].xy__, const[4].xy__; 3: TEX temp[4].xyz, temp[3].xy__, 2D[0]; 4: MOV temp[1].xyz, temp[4].xyz_; 5: MUL temp[1].xyz, temp[1].xyz_, const[1].www_; 6: MAD temp[2].xy, const[2].xx__, temp[0].xy__, input[0].xy__; 7: MUL temp[5].xy, temp[2].xy__, const[4].xy__; 8: TEX temp[6].xyz, temp[5].xy__, 2D[0]; 9: MOV temp[2].xyz, temp[6].xyz_; 10: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 11: MUL temp[7].xy, input[0].xy__, const[4].xy__; 12: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 13: MOV temp[2].xyz, temp[8].xyz_; 14: MAD temp[1].xyz, temp[2].xyz_, const[2].zzz_, temp[1].xyz_; 15: MAD temp[2].xy, const[2].ww__, temp[0].xy__, input[0].xy__; 16: MUL temp[9].xy, temp[2].xy__, const[4].xy__; 17: TEX temp[10].xyz, temp[9].xy__, 2D[0]; 18: MOV temp[2].xyz, temp[10].xyz_; 19: MAD temp[1].xyz, temp[2].xyz_, const[2].yyy_, temp[1].xyz_; 20: MAD temp[0].xy, const[3].xx__, temp[0].xy__, input[0].xy__; 21: MUL temp[11].xy, temp[0].xy__, const[4].xy__; 22: TEX temp[12].xyz, temp[11].xy__, 2D[0]; 23: MOV temp[0].xyz, temp[12].xyz_; 24: MAD temp[1].xyz, temp[0].xyz_, const[1].www_, temp[1].xyz_; 25: MUL temp[0].xyz, temp[1].xyz_, const[3].yyy_; 26: MOV temp[0].xyz, temp[0].xyz_; 27: MOV temp[0].w, const[1].___x; 28: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MOV temp[17].xyz, temp[16].xyz_; 5: MUL temp[18].xyz, temp[17].xyz_, const[1].www_; 6: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 7: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 8: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 9: MOV temp[22].xyz, temp[21].xyz_; 10: MAD temp[23].xyz, temp[22].xyz_, const[2].yyy_, temp[18].xyz_; 11: MUL temp[24].xy, input[0].xy__, const[4].xy__; 12: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 13: MOV temp[26].xyz, temp[25].xyz_; 14: MAD temp[27].xyz, temp[26].xyz_, const[2].zzz_, temp[23].xyz_; 15: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 16: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 17: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 18: MOV temp[31].xyz, temp[30].xyz_; 19: MAD temp[32].xyz, temp[31].xyz_, const[2].yyy_, temp[27].xyz_; 20: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 21: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 22: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 23: MOV temp[36].xyz, temp[35].xyz_; 24: MAD temp[37].xyz, temp[36].xyz_, const[1].www_, temp[32].xyz_; 25: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 26: MOV temp[39].xyz, temp[38].xyz_; 27: MOV temp[39].w, const[1].___x; 28: MOV output[0], temp[39]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; CONST[1] = { 1.0000 0.0000 -2.5000 0.2500 } CONST[2] = { -0.7500 0.3000 0.5000 0.7500 } CONST[3] = { 2.5000 0.6250 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; CONST[1] = { 1.0000 0.0000 -2.5000 0.2500 } CONST[2] = { -0.7500 0.3000 0.5000 0.7500 } CONST[3] = { 2.5000 0.6250 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[13].xy, const[1].xy__, const[0].xx__; 1: MAD temp[14].xy, const[1].zz__, temp[13].xy__, input[0].xy__; 2: MUL temp[15].xy, temp[14].xy__, const[4].xy__; 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: MUL temp[18].xyz, temp[16].xyz_, const[1].www_; 5: MAD temp[19].xy, const[2].xx__, temp[13].xy__, input[0].xy__; 6: MUL temp[20].xy, temp[19].xy__, const[4].xy__; 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: MAD temp[23].xyz, temp[21].xyz_, const[2].yyy_, temp[18].xyz_; 9: MUL temp[24].xy, input[0].xy__, const[4].xy__; 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: MAD temp[27].xyz, temp[25].xyz_, none.HHH_, temp[23].xyz_; 12: MAD temp[28].xy, const[2].ww__, temp[13].xy__, input[0].xy__; 13: MUL temp[29].xy, temp[28].xy__, const[4].xy__; 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: MAD temp[32].xyz, temp[30].xyz_, const[2].yyy_, temp[27].xyz_; 16: MAD temp[33].xy, const[3].xx__, temp[13].xy__, input[0].xy__; 17: MUL temp[34].xy, temp[33].xy__, const[4].xy__; 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: MAD temp[37].xyz, temp[35].xyz_, const[1].www_, temp[32].xyz_; 20: MUL temp[38].xyz, temp[37].xyz_, const[3].yyy_; 21: MOV temp[39].xyz, temp[38].xyz_; 22: MOV temp[39].w, none.___1; 23: MOV output[0], temp[39]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 1: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 2: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 3: TEX temp[16].xyz, temp[15].xy__, 2D[0]; 4: src0.xyz = temp[16], src0.w = const[1] MAD temp[18].xyz, src0.xyz, src0.www, src0.000 5: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 6: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 7: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 8: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 9: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 10: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 11: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 12: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 13: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 14: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 15: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 16: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 17: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 18: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 19: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 20: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 21: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 22: MAD temp[39].w, src0.1, src0.1, src0.0 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 MAD temp[39].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 2: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 10: BEGIN_TEX; 11: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 12: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 13: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 14: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 15: TEX temp[16].xyz, temp[15].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[16], src0.w = const[1] SEM_WAIT MAD temp[18].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[13].xy, src0.xy_, src1.xx_, src0.000 MAD temp[39].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 2: src0.xyz = const[3], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[33].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[13], src0.w = const[2], src1.xyz = input[0] MAD temp[28].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[13], src2.xyz = input[0] MAD temp[14].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[33], src1.xyz = const[4] MAD temp[34].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[28], src1.xyz = const[4] MAD temp[29].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[19], src1.xyz = const[4] MAD temp[20].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[14], src1.xyz = const[4] MAD temp[15].xy, src0.xy_, src1.xy_, src0.000 10: BEGIN_TEX; 11: TEX temp[25].xyz, temp[24].xy__, 2D[0]; 12: TEX temp[35].xyz, temp[34].xy__, 2D[0]; 13: TEX temp[30].xyz, temp[29].xy__, 2D[0]; 14: TEX temp[21].xyz, temp[20].xy__, 2D[0]; 15: TEX temp[16].xyz, temp[15].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[16], src0.w = const[1] SEM_WAIT MAD temp[18].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = temp[18] MAD temp[23].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[25], src1.xyz = temp[23] MAD temp[27].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[30], src1.xyz = const[2], src2.xyz = temp[27] MAD temp[32].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[35], src0.w = const[1], src1.xyz = temp[32] MAD temp[37].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[37], src1.xyz = const[3] MAD temp[38].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[38] MAD temp[39].xyz, src0.xyz, src0.111, src0.000 23: src0.xyz = temp[39], src0.w = temp[39] 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[1], src1.xyz = const[0] MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_ MAD temp[0].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[4] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 2: src0.xyz = const[3], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[3].xy, src0.xx_, src1.xy_, src2.xy_ 3: src0.xyz = temp[1], src0.w = const[2], src1.xyz = input[0] MAD temp[4].xy, src0.ww_, src0.xy_, src1.xy_ 4: src0.xyz = const[2], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[5].xy, src0.xx_, src1.xy_, src2.xy_ 5: src0.xyz = const[1], src1.xyz = temp[1], src2.xyz = input[0] MAD temp[0].xy, src0.zz_, src1.xy_, src2.xy_ 6: src0.xyz = temp[3], src1.xyz = const[4] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[5], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xy_, src0.00_ 9: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 10: BEGIN_TEX; 11: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 12: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 13: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 14: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 15: TEX temp[5].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 16: src0.xyz = temp[5], src0.w = const[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src0.www, src0.000 17: src0.xyz = temp[4], src1.xyz = const[2], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz 18: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src1.xyz 19: src0.xyz = temp[3], src1.xyz = const[2], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz 20: src0.xyz = temp[1], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 21: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000 22: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 23: 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=37************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 9, tex_end: 0 (code_addr: 00000240) 0: xyz: c1 c0 t0 bias-> t1.xy (01840821) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c1.xyz c0.xxx 0.0 op: 00050280 w: 1.0 1.0 0.0 op: 00040891 1: xyz: t0 c4 t0 bias-> t2.xy (01880900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 2: xyz: c3 t1 t0 bias-> t3.xy (018c0063) w: t0 t0 t0 bias-> (00000000) xyz: c3.xxx t1.xyz t0.xyz op: 00020201 w: c3.x c3.x c3.x op: 00000000 3: xyz: t1 t0 t0 bias-> t4.xy (01900001) w: c2 t0 t0 bias-> (00000022) xyz: c2.www t1.xyz t0.xyz op: 0001000c w: t1.x t1.x t1.x op: 00000000 4: xyz: c2 t1 t0 bias-> t5.xy (01940062) w: t0 t0 t0 bias-> (00000000) xyz: c2.xxx t1.xyz t0.xyz op: 00020201 w: c2.x c2.x c2.x op: 00000000 5: xyz: c1 t1 t0 bias-> t0.xy (01800061) w: t0 t0 t0 bias-> (00000000) xyz: c1.zzz t1.xyz t0.xyz op: 00020203 w: c1.x c1.x c1.x op: 00000000 6: xyz: t3 c4 t0 bias-> t1.xy (01840903) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c4.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 7: xyz: t4 c4 t0 bias-> t3.xy (018c0904) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c4.xyz 0.0 op: 00050200 w: t4.x t4.x t4.x op: 00000000 8: xyz: t5 c4 t0 bias-> t4.xy (01900905) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz c4.xyz 0.0 op: 00050200 w: t5.x t5.x t5.x op: 00000000 9: xyz: t0 c4 t0 bias-> t0.xy (01800900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 10, tex_offset: 0, alu_end: 7, tex_end: 4 (code_addr: 004801ca) TEX: TEX t2, t2, texture[0] (00008082) TEX t1, t1, texture[0] (00008041) TEX t3, t3, texture[0] (000080c3) TEX t4, t4, texture[0] (00008104) TEX t5, t0, texture[0] (00008140) 10: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: c1 t0 t0 bias-> (00000021) xyz: t5.xyz c1.www 0.0 op: 00050600 w: t5.x t5.x t5.x op: 00000000 11: xyz: t4 c2 t0 bias-> t0.xyz (03800884) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c2.yyy t0.xyz op: 00020300 w: t4.x t4.x t4.x op: 00000000 12: xyz: t2 t0 t0 bias-> t0.xyz (03800002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 0.5 t0.xyz op: 00010b00 w: t2.x t2.x t2.x op: 00000000 13: xyz: t3 c2 t0 bias-> t0.xyz (03800883) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c2.yyy t0.xyz op: 00020300 w: t3.x t3.x t3.x op: 00000000 14: xyz: t1 t0 t0 bias-> t0.xyz (03800001) w: c1 t0 t0 bias-> (00000021) xyz: t1.xyz c1.www t0.xyz op: 00010600 w: t1.x t1.x t1.x op: 00000000 15: xyz: t0 c3 t0 bias-> t0.xyz (038008c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c3.yyy 0.0 op: 00050300 w: t0.x t0.x t0.x op: 00000000 16: 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 17: 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[0], PERSPECTIVE DCL IN[1], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], RECT 1: DP3 TEMP[1].x, TEMP[0].xyzz, CONST[0].xyzz 2: MUL TEMP[1], TEMP[0], TEMP[1].xxxx 3: TEX TEMP[2], IN[1].xyyy, SAMP[0], RECT 4: MAD TEMP[0], TEMP[0], TEMP[1], TEMP[2] 5: MOV OUT[0], TEMP[0] 6: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, RECT[1]; 1: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 2: MUL temp[1], temp[0], temp[1].xxxx; 3: TEX temp[2], input[1].xyyy, RECT[0]; 4: MAD temp[0], temp[0], temp[1], temp[2]; 5: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, RECT[1]; 1: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 2: MUL temp[1], temp[0], temp[1].xxxx; 3: TEX temp[2], input[1].xyyy, RECT[0]; 4: MAD temp[0], temp[0], temp[1], temp[2]; 5: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, RECT[1]; 1: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 2: MUL temp[1], temp[0], temp[1].xxxx; 3: TEX temp[2], input[1].xyyy, RECT[0]; 4: MAD temp[0], temp[0], temp[1], temp[2]; 5: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, RECT[1]; 1: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 2: MUL temp[1], temp[0], temp[1].xxxx; 3: TEX temp[2], input[1].xyyy, RECT[0]; 4: MAD temp[0], temp[0], temp[1], temp[2]; 5: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, RECT[1]; 1: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 2: MUL temp[1], temp[0], temp[1].xxxx; 3: TEX temp[2], input[1].xyyy, RECT[0]; 4: MAD temp[0], temp[0], temp[1], temp[2]; 5: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[3], input[0].xyyy, const[1]; 1: TEX temp[0], temp[3], 2D[1]; 2: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 3: MUL temp[1], temp[0], temp[1].xxxx; 4: MUL temp[4], input[1].xyyy, const[2]; 5: TEX temp[2], temp[4], 2D[0]; 6: MAD temp[0], temp[0], temp[1], temp[2]; 7: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[3], input[0].xyyy, const[1]; 1: TEX temp[0], temp[3], 2D[1]; 2: DP3 temp[1].x, temp[0].xyzz, const[0].xyzz; 3: MUL temp[1], temp[0], temp[1].xxxx; 4: MUL temp[4], input[1].xyyy, const[2]; 5: TEX temp[2], temp[4], 2D[0]; 6: MAD temp[0], temp[0], temp[1], temp[2]; 7: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[3].xy, input[0].xy__, const[1].xy__; 1: TEX temp[0], temp[3].xy__, 2D[1]; 2: DP3 temp[1].x, temp[0].xyz_, const[0].xyz_; 3: MUL temp[1], temp[0], temp[1].xxxx; 4: MUL temp[4].xy, input[1].xy__, const[2].xy__; 5: TEX temp[2], temp[4].xy__, 2D[0]; 6: MAD temp[0], temp[0], temp[1], temp[2]; 7: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MUL temp[3].xy, input[0].xy__, const[1].xy__; 1: TEX temp[0], temp[3].xy__, 2D[1]; 2: DP3 temp[1].x, temp[0].xyz_, const[0].xyz_; 3: MUL temp[1], temp[0], temp[1].xxxx; 4: MUL temp[4].xy, input[1].xy__, const[2].xy__; 5: TEX temp[2], temp[4].xy__, 2D[0]; 6: MAD temp[0], temp[0], temp[1], temp[2]; 7: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[5].xy, input[0].xy__, const[1].xy__; 1: TEX temp[6], temp[5].xy__, 2D[1]; 2: DP3 temp[7].x, temp[6].xyz_, const[0].xyz_; 3: MUL temp[8], temp[6], temp[7].xxxx; 4: MUL temp[9].xy, input[1].xy__, const[2].xy__; 5: TEX temp[10], temp[9].xy__, 2D[0]; 6: MAD temp[11], temp[6], temp[8], temp[10]; 7: MOV output[0], temp[11]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[5].xy, input[0].xy__, const[1].xy__; 1: TEX temp[6], temp[5].xy__, 2D[1]; 2: DP3 temp[7].x, temp[6].xyz_, const[0].xyz_; 3: MUL temp[8], temp[6], temp[7].xxxx; 4: MUL temp[9].xy, input[1].xy__, const[2].xy__; 5: TEX temp[10], temp[9].xy__, 2D[0]; 6: MAD temp[11], temp[6], temp[8], temp[10]; 7: MOV output[0], temp[11]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[5].xy, input[0].xy__, const[1].xy__; 1: TEX temp[6], temp[5].xy__, 2D[1]; 2: DP3 temp[7].x, temp[6].xyz_, const[0].xyz_; 3: MUL temp[8], temp[6], temp[7].xxxx; 4: MUL temp[9].xy, input[1].xy__, const[2].xy__; 5: TEX temp[10], temp[9].xy__, 2D[0]; 6: MAD temp[11], temp[6], temp[8], temp[10]; 7: MOV output[0], temp[11]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[5].xy, input[0].xy__, const[1].xy__; 1: TEX temp[6], temp[5].xy__, 2D[1]; 2: DP3 temp[7].x, temp[6].xyz_, const[0].xyz_; 3: MUL temp[8], temp[6], temp[7].xxxx; 4: MUL temp[9].xy, input[1].xy__, const[2].xy__; 5: TEX temp[10], temp[9].xy__, 2D[0]; 6: MAD temp[11], temp[6], temp[8], temp[10]; 7: MOV output[0], temp[11]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[1] MAD temp[5].xy, src0.xy_, src1.xy_, src0.000 1: TEX temp[6], temp[5].xy__, 2D[1]; 2: src0.xyz = temp[6], src1.xyz = const[0] DP3 temp[7].x, src0.xyz, src1.xyz 3: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[7] MAD temp[8].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[8].w, src0.w, src1.x, src0.0 4: src0.xyz = input[1], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 5: TEX temp[10], temp[9].xy__, 2D[0]; 6: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8], src2.xyz = temp[10], src2.w = temp[10] MAD temp[11].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[11].w, src0.w, src1.w, src2.w 7: src0.xyz = temp[11], src0.w = temp[11] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[1] MAD temp[5].xy, src0.xy_, src1.xy_, src0.000 1: src0.xyz = input[1], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 2: BEGIN_TEX; 3: TEX temp[6], temp[5].xy__, 2D[1]; 4: TEX temp[10], temp[9].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = temp[6], src1.xyz = const[0] SEM_WAIT DP3 temp[7].x, src0.xyz, src1.xyz 6: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[7] MAD temp[8].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[8].w, src0.w, src1.x, src0.0 7: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8], src2.xyz = temp[10], src2.w = temp[10] MAD temp[11].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[11].w, src0.w, src1.w, src2.w 8: src0.xyz = temp[11], src0.w = temp[11] 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], src1.xyz = const[1] MAD temp[5].xy, src0.xy_, src1.xy_, src0.000 1: src0.xyz = input[1], src1.xyz = const[2] MAD temp[9].xy, src0.xy_, src1.xy_, src0.000 2: BEGIN_TEX; 3: TEX temp[6], temp[5].xy__, 2D[1]; 4: TEX temp[10], temp[9].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = temp[6], src1.xyz = const[0] SEM_WAIT DP3 temp[7].x, src0.xyz, src1.xyz 6: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[7] MAD temp[8].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[8].w, src0.w, src1.x, src0.0 7: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8], src2.xyz = temp[10], src2.w = temp[10] MAD temp[11].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[11].w, src0.w, src1.w, src2.w 8: src0.xyz = temp[11], src0.w = temp[11] 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], src1.xyz = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 1: src0.xyz = input[1], src1.xyz = const[2] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 2: BEGIN_TEX; 3: TEX temp[0], temp[0].xy__, 2D[1]; 4: TEX temp[1], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = temp[0], src1.xyz = const[0] SEM_WAIT DP3 temp[2].x, src0.xyz, src1.xyz 6: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, src0.0 7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[2], src1.w = temp[2], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 8: 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=38************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 00000040) 0: xyz: t0 c1 t0 bias-> t0.xy (01800840) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c1.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 1: xyz: t1 c2 t0 bias-> t1.xy (01840881) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c2.xyz 0.0 op: 00050200 w: t1.x t1.x t1.x op: 00000000 NODE 1: alu_offset: 2, tex_offset: 0, alu_end: 3, tex_end: 1 (code_addr: 004200c2) TEX: TEX t0, t0, texture[1] (00008800) TEX t1, t1, texture[0] (00008041) 2: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c0.xyz t0.xxx op: 00804200 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 t2 t0 bias-> t2.xyz (03880080) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz t2.xxx 0.0 op: 00050280 w: t0.w t2.x 0.0 op: 00040189 4: xyz: t0 t2 t1 bias-> t0.xyz (03801080) w: t0 t2 t1 bias-> t0.w (00801080) xyz: t0.xyz t2.xyz t1.xyz op: 00020200 w: t0.w t2.w t1.w op: 0002c509 5: 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], POSITION, LINEAR DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[6..7] DCL CONST[4..5] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM[0] FLT32 { 1.0000, 0.0039, 0.0000, 2.0000} IMM[1] FLT32 { -1.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[7].xxxx, CONST[7].yyyy 2: TEX TEMP[1].xyz, TEMP[0].xyyy, SAMP[1], RECT 3: DP3 TEMP[1].x, TEMP[1].xyzz, IMM[0].xyzz 4: MUL TEMP[1].xyz, IN[1].xyzz, TEMP[1].xxxx 5: ADD TEMP[1].xyz, CONST[6].xyzz, -TEMP[1].xyzz 6: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[5].xxxx 7: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[3], RECT 8: MUL TEMP[2].xyz, TEMP[2].xyzz, CONST[4].xyzz 9: DP3 TEMP[3].x, TEMP[1].xyzz, TEMP[1].xyzz 10: RSQ TEMP[3].x, TEMP[3].xxxx 11: MUL TEMP[3].xyz, TEMP[1].xyzz, TEMP[3].xxxx 12: TEX TEMP[4].xyz, TEMP[0].xyyy, SAMP[2], RECT 13: MAD TEMP[4].xyz, TEMP[4].xyzz, IMM[0].wwww, IMM[1].xxxx 14: DP3 TEMP[3].x, TEMP[3].xyzz, TEMP[4].xyzz 15: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].yyyy 16: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xxxx 17: DP3 TEMP[1].x, TEMP[1].xyzz, TEMP[1].xyzz 18: TEX TEMP[1].x, TEMP[1].xxxx, SAMP[0], 1D 19: MUL TEMP[1].xyz, TEMP[2].xyzz, TEMP[1].xxxx 20: MOV OUT[0], TEMP[1] 21: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[1]; 6: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 7: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 8: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 9: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 10: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 11: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 12: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 13: RSQ temp[3].x, temp[3].xxxx; 14: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 15: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 16: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 17: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 18: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 19: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 20: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 21: TEX temp[1].x, temp[1].xxxx, 1D[0]; 22: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 23: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[1]; 6: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 7: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 8: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 9: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 10: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 11: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 12: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 13: RSQ temp[3].x, temp[3].xxxx; 14: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 15: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 16: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 17: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 18: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 19: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 20: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 21: TEX temp[1].x, temp[1].xxxx, 1D[0]; 22: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 23: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[1]; 6: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 7: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 8: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 9: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 10: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 11: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 12: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 13: RSQ temp[3].x, temp[3].xxxx; 14: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 15: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 16: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 17: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 18: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 19: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 20: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 21: TEX temp[1].x, temp[1].xxxx, 1D[0]; 22: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 23: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[1]; 6: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 7: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 8: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 9: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 10: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 11: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 12: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 13: RSQ temp[3].x, temp[3].xxxx; 14: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 15: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 16: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 17: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 18: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 19: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 20: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 21: TEX temp[1].x, temp[1].xxxx, 1D[0]; 22: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 23: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: TEX temp[1].xyz, temp[0].xyyy, RECT[1]; 6: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 7: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 8: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 9: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 10: TEX temp[2].xyz, temp[0].xyyy, RECT[3]; 11: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 12: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 13: RSQ temp[3].x, temp[3].xxxx; 14: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 15: TEX temp[4].xyz, temp[0].xyyy, RECT[2]; 16: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 17: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 18: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 19: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 20: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 21: TEX temp[1].x, temp[1].xxxx, 1D[0]; 22: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 23: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: MUL temp[6], temp[0].xyyy, const[12]; 6: TEX temp[7], temp[6], 2D[1]; 7: MOV temp[1].xyz, temp[7]; 8: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 9: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 10: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 11: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 12: MUL temp[8], temp[0].xyyy, const[13]; 13: TEX temp[9], temp[8], 2D[3]; 14: MOV temp[2].xyz, temp[9]; 15: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 19: MUL temp[10], temp[0].xyyy, const[14]; 20: TEX temp[11], temp[10], 2D[2]; 21: MOV temp[4].xyz, temp[11]; 22: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 23: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 24: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 25: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 26: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 27: TEX temp[12], temp[1].xxxx, 1D[0]; 28: MOV temp[1].x, temp[12]; 29: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 30: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[5].w, input[0].wwww; 1: MUL temp[5].xyz, input[0], temp[5].wwww; 2: MAD temp[5].xyz, temp[5].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[5]; 4: MAD temp[0].y, temp[5], const[7].xxxx, const[7].yyyy; 5: MUL temp[6], temp[0].xyyy, const[12]; 6: TEX temp[7], temp[6], 2D[1]; 7: MOV temp[1].xyz, temp[7]; 8: DP3 temp[1].x, temp[1].xyzz, const[8].xyzz; 9: MUL temp[1].xyz, input[1].xyzz, temp[1].xxxx; 10: ADD temp[1].xyz, const[6].xyzz, -temp[1].xyzz; 11: MUL temp[1].xyz, temp[1].xyzz, const[5].xxxx; 12: MUL temp[8], temp[0].xyyy, const[13]; 13: TEX temp[9], temp[8], 2D[3]; 14: MOV temp[2].xyz, temp[9]; 15: MUL temp[2].xyz, temp[2].xyzz, const[4].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, |temp[3].xxxx|; 18: MUL temp[3].xyz, temp[1].xyzz, temp[3].xxxx; 19: MUL temp[10], temp[0].xyyy, const[14]; 20: TEX temp[11], temp[10], 2D[2]; 21: MOV temp[4].xyz, temp[11]; 22: MAD temp[4].xyz, temp[4].xyzz, const[8].wwww, const[9].xxxx; 23: DP3 temp[3].x, temp[3].xyzz, temp[4].xyzz; 24: MAX temp[3].x, temp[3].xxxx, const[9].yyyy; 25: MUL temp[2].xyz, temp[2].xyzz, temp[3].xxxx; 26: DP3 temp[1].x, temp[1].xyzz, temp[1].xyzz; 27: TEX temp[12], temp[1].xxxx, 1D[0]; 28: MOV temp[1].x, temp[12]; 29: MUL temp[1].xyz, temp[2].xyzz, temp[1].xxxx; 30: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[5].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[5].xy, temp[5].xy__, const[10].xy__, const[11].xy__; 3: MOV temp[0].x, temp[5].x___; 4: MAD temp[0].y, temp[5]._y__, const[7]._x__, const[7]._y__; 5: MUL temp[6].xy, temp[0].xy__, const[12].xy__; 6: TEX temp[7].xyz, temp[6].xy__, 2D[1]; 7: MOV temp[1].xyz, temp[7].xyz_; 8: DP3 temp[1].x, temp[1].xyz_, const[8].xyz_; 9: MUL temp[1].xyz, input[1].xyz_, temp[1].xxx_; 10: ADD temp[1].xyz, const[6].xyz_, -temp[1].xyz_; 11: MUL temp[1].xyz, temp[1].xyz_, const[5].xxx_; 12: MUL temp[8].xy, temp[0].xy__, const[13].xy__; 13: TEX temp[9].xyz, temp[8].xy__, 2D[3]; 14: MOV temp[2].xyz, temp[9].xyz_; 15: MUL temp[2].xyz, temp[2].xyz_, const[4].xyz_; 16: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 17: RSQ temp[3].x, |temp[3].x___|; 18: MUL temp[3].xyz, temp[1].xyz_, temp[3].xxx_; 19: MUL temp[10].xy, temp[0].xy__, const[14].xy__; 20: TEX temp[11].xyz, temp[10].xy__, 2D[2]; 21: MOV temp[4].xyz, temp[11].xyz_; 22: MAD temp[4].xyz, temp[4].xyz_, const[8].www_, const[9].xxx_; 23: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 24: MAX temp[3].x, temp[3].x___, const[9].y___; 25: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 26: DP3 temp[1].x, temp[1].xyz_, temp[1].xyz_; 27: TEX temp[12].x, temp[1].x___, 1D[0]; 28: MOV temp[1].x, temp[12].x___; 29: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 30: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[5].w, input[0].___w; 1: MUL temp[5].xy, input[0].xy__, temp[5].ww__; 2: MAD temp[5].xy, temp[5].xy__, const[10].xy__, const[11].xy__; 3: MOV temp[0].x, temp[5].x___; 4: MAD temp[0].y, temp[5]._y__, const[7]._x__, const[7]._y__; 5: MUL temp[6].xy, temp[0].xy__, const[12].xy__; 6: TEX temp[7].xyz, temp[6].xy__, 2D[1]; 7: MOV temp[1].xyz, temp[7].xyz_; 8: DP3 temp[1].x, temp[1].xyz_, const[8].xyz_; 9: MUL temp[1].xyz, input[1].xyz_, temp[1].xxx_; 10: ADD temp[1].xyz, const[6].xyz_, -temp[1].xyz_; 11: MUL temp[1].xyz, temp[1].xyz_, const[5].xxx_; 12: MUL temp[8].xy, temp[0].xy__, const[13].xy__; 13: TEX temp[9].xyz, temp[8].xy__, 2D[3]; 14: MOV temp[2].xyz, temp[9].xyz_; 15: MUL temp[2].xyz, temp[2].xyz_, const[4].xyz_; 16: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 17: RSQ temp[3].x, |temp[3].x___|; 18: MUL temp[3].xyz, temp[1].xyz_, temp[3].xxx_; 19: MUL temp[10].xy, temp[0].xy__, const[14].xy__; 20: TEX temp[11].xyz, temp[10].xy__, 2D[2]; 21: MOV temp[4].xyz, temp[11].xyz_; 22: MAD temp[4].xyz, temp[4].xyz_, const[8].www_, const[9].xxx_; 23: DP3 temp[3].x, temp[3].xyz_, temp[4].xyz_; 24: MAX temp[3].x, temp[3].x___, const[9].y___; 25: MUL temp[2].xyz, temp[2].xyz_, temp[3].xxx_; 26: DP3 temp[1].x, temp[1].xyz_, temp[1].xyz_; 27: TEX temp[12].x, temp[1].x___, 1D[0]; 28: MOV temp[1].x, temp[12].x___; 29: MUL temp[1].xyz, temp[2].xyz_, temp[1].xxx_; 30: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[10].xy__, const[11].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[7]._x__, const[7]._y__; 5: MUL temp[17].xy, temp[16].xy__, const[12].xy__; 6: TEX temp[18].xyz, temp[17].xy__, 2D[1]; 7: MOV temp[19].xyz, temp[18].xyz_; 8: DP3 temp[20].x, temp[19].xyz_, const[8].xyz_; 9: MUL temp[21].xyz, input[1].xyz_, temp[20].xxx_; 10: ADD temp[22].xyz, const[6].xyz_, -temp[21].xyz_; 11: MUL temp[23].xyz, temp[22].xyz_, const[5].xxx_; 12: MUL temp[24].xy, temp[16].xy__, const[13].xy__; 13: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 14: MOV temp[26].xyz, temp[25].xyz_; 15: MUL temp[27].xyz, temp[26].xyz_, const[4].xyz_; 16: DP3 temp[28].x, temp[23].xyz_, temp[23].xyz_; 17: RSQ temp[29].x, |temp[28].x___|; 18: MUL temp[30].xyz, temp[23].xyz_, temp[29].xxx_; 19: MUL temp[31].xy, temp[16].xy__, const[14].xy__; 20: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 21: MOV temp[33].xyz, temp[32].xyz_; 22: MAD temp[34].xyz, temp[33].xyz_, const[8].www_, const[9].xxx_; 23: DP3 temp[35].x, temp[30].xyz_, temp[34].xyz_; 24: MAX temp[36].x, temp[35].x___, const[9].y___; 25: MUL temp[37].xyz, temp[27].xyz_, temp[36].xxx_; 26: DP3 temp[38].x, temp[23].xyz_, temp[23].xyz_; 27: TEX temp[39].x, temp[38].x___, 1D[0]; 28: MOV temp[40].x, temp[39].x___; 29: MUL temp[41].xyz, temp[37].xyz_, temp[40].xxx_; 30: MOV output[0], temp[41]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[10].xy__, const[11].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[7]._x__, const[7]._y__; 5: MUL temp[17].xy, temp[16].xy__, const[12].xy__; 6: TEX temp[18].xyz, temp[17].xy__, 2D[1]; 7: DP3 temp[20].x, temp[18].xyz_, const[8].xyz_; 8: MUL temp[21].xyz, input[1].xyz_, temp[20].xxx_; 9: MUL temp[23].xyz, (const[6] - temp[21]).xyz_, const[5].xxx_; 10: MUL temp[24].xy, temp[16].xy__, const[13].xy__; 11: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 12: MUL temp[27].xyz, temp[25].xyz_, const[4].xyz_; 13: DP3 temp[28].x, temp[23].xyz_, temp[23].xyz_; 14: RSQ temp[29].x, |temp[28].x___|; 15: MUL temp[30].xyz, temp[23].xyz_, temp[29].xxx_; 16: MUL temp[31].xy, temp[16].xy__, const[14].xy__; 17: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 18: MAD temp[34].xyz, temp[32].xyz_, const[8].www_, none.-1-1-1_; 19: DP3 temp[35].x, temp[30].xyz_, temp[34].xyz_; 20: MAX temp[36].x, temp[35].x___, none.0___; 21: MUL temp[37].xyz, temp[27].xyz_, temp[36].xxx_; 22: DP3 temp[38].x, temp[23].xyz_, temp[23].xyz_; 23: TEX temp[39].x, temp[38].x___, 1D[0]; 24: MUL temp[41].xyz, temp[37].xyz_, temp[39].xxx_; 25: MOV output[0], temp[41]; CONST[8] = { 1.0000 0.0039 0.0000 2.0000 } CONST[9] = { -1.0000 0.0000 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[10].xy__, const[11].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[7]._x__, const[7]._y__; 5: MUL temp[17].xy, temp[16].xy__, const[12].xy__; 6: TEX temp[18].xyz, temp[17].xy__, 2D[1]; 7: DP3 temp[20].x, temp[18].xyz_, const[8].xyz_; 8: MUL temp[21].xyz, input[1].xyz_, temp[20].xxx_; 9: MUL temp[23].xyz, (const[6] - temp[21]).xyz_, const[5].xxx_; 10: MUL temp[24].xy, temp[16].xy__, const[13].xy__; 11: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 12: MUL temp[27].xyz, temp[25].xyz_, const[4].xyz_; 13: DP3 temp[28].x, temp[23].xyz_, temp[23].xyz_; 14: RSQ temp[29].x, |temp[28].x___|; 15: MUL temp[30].xyz, temp[23].xyz_, temp[29].xxx_; 16: MUL temp[31].xy, temp[16].xy__, const[14].xy__; 17: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 18: MAD temp[34].xyz, temp[32].xyz_, const[8].www_, none.-1-1-1_; 19: DP3 temp[35].x, temp[30].xyz_, temp[34].xyz_; 20: MAX temp[36].x, temp[35].x___, none.0___; 21: MUL temp[37].xyz, temp[27].xyz_, temp[36].xxx_; 22: DP3 temp[38].x, temp[23].xyz_, temp[23].xyz_; 23: TEX temp[39].x, temp[38].x___, 1D[0]; 24: MUL temp[41].xyz, temp[37].xyz_, temp[39].xxx_; 25: MOV output[0], temp[41]; CONST[4] = { 1.0000 0.0039 0.0000 2.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[5].xy__, const[6].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[3]._x__, const[3]._y__; 5: MUL temp[17].xy, temp[16].xy__, const[7].xy__; 6: TEX temp[18].xyz, temp[17].xy__, 2D[1]; 7: DP3 temp[20].x, temp[18].xyz_, const[4].xyz_; 8: MUL temp[21].xyz, input[1].xyz_, temp[20].xxx_; 9: MUL temp[23].xyz, (const[2] - temp[21]).xyz_, const[1].xxx_; 10: MUL temp[24].xy, temp[16].xy__, const[8].xy__; 11: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 12: MUL temp[27].xyz, temp[25].xyz_, const[0].xyz_; 13: DP3 temp[28].x, temp[23].xyz_, temp[23].xyz_; 14: RSQ temp[29].x, |temp[28].x___|; 15: MUL temp[30].xyz, temp[23].xyz_, temp[29].xxx_; 16: MUL temp[31].xy, temp[16].xy__, const[9].xy__; 17: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 18: MAD temp[34].xyz, temp[32].xyz_, const[4].www_, none.-1-1-1_; 19: DP3 temp[35].x, temp[30].xyz_, temp[34].xyz_; 20: MAX temp[36].x, temp[35].x___, none.0___; 21: MUL temp[37].xyz, temp[27].xyz_, temp[36].xxx_; 22: DP3 temp[38].x, temp[23].xyz_, temp[23].xyz_; 23: TEX temp[39].x, temp[38].x___, 1D[0]; 24: MUL temp[41].xyz, temp[37].xyz_, temp[39].xxx_; 25: MOV output[0], temp[41]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[5], src2.xyz = const[6] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[15], src1.xyz = const[3] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: src0.xyz = temp[16], src1.xyz = const[7] MAD temp[17].xy, src0.xy_, src1.xy_, src0.000 6: TEX temp[18].xyz, temp[17].xy__, 2D[1]; 7: src0.xyz = temp[18], src1.xyz = const[4] DP3 temp[20].x, src0.xyz, src1.xyz 8: src0.xyz = input[1], src1.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 9: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = const[1], srcp.xyz = (src1 - src0) MAD temp[23].xyz, srcp.xyz, src2.xxx, src0.000 10: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 11: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 12: src0.xyz = temp[25], src1.xyz = const[0] MAD temp[27].xyz, src0.xyz, src1.xyz, src0.000 13: src0.xyz = temp[23] DP3 temp[28].x, src0.xyz, src0.xyz 14: src0.xyz = temp[28] REPL_ALPHA temp[29].x RSQ, |src0.x| 15: src0.xyz = temp[23], src1.xyz = temp[29] MAD temp[30].xyz, src0.xyz, src1.xxx, src0.000 16: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 17: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 18: src0.xyz = temp[32], src0.w = const[4] MAD temp[34].xyz, src0.xyz, src0.www, -src0.111 19: src0.xyz = temp[30], src1.xyz = temp[34] DP3 temp[35].x, src0.xyz, src1.xyz 20: src0.xyz = temp[35] MAX temp[36].x, src0.x__, src0.0__ 21: src0.xyz = temp[27], src1.xyz = temp[36] MAD temp[37].xyz, src0.xyz, src1.xxx, src0.000 22: src0.xyz = temp[23] DP3 temp[38].x, src0.xyz, src0.xyz 23: TEX temp[39].x, temp[38].x___, 1D[0]; 24: src0.xyz = temp[37], src1.xyz = temp[39] MAD temp[41].xyz, src0.xyz, src1.xxx, src0.000 25: src0.xyz = temp[41], src0.w = temp[41] 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] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[5], src2.xyz = const[6] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15], src1.xyz = const[3] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 6: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[16], src1.xyz = const[7] MAD temp[17].xy, src0.xy_, src1.xy_, src0.000 8: BEGIN_TEX; 9: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 10: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 11: TEX temp[18].xyz, temp[17].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 12: src0.xyz = temp[32], src0.w = const[4] SEM_WAIT MAD temp[34].xyz, src0.xyz, src0.www, -src0.111 13: src0.xyz = temp[25], src1.xyz = const[0] MAD temp[27].xyz, src0.xyz, src1.xyz, src0.000 14: src0.xyz = temp[18], src1.xyz = const[4] DP3 temp[20].x, src0.xyz, src1.xyz 15: src0.xyz = input[1], src1.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 16: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = const[1], srcp.xyz = (src1 - src0) MAD temp[23].xyz, srcp.xyz, src2.xxx, src0.000 17: src0.xyz = temp[23] DP3 temp[38].x, src0.xyz, src0.xyz 18: src0.xyz = temp[23] DP3 temp[28].x, src0.xyz, src0.xyz 19: src0.xyz = temp[28] REPL_ALPHA temp[29].x RSQ, |src0.x| 20: src0.xyz = temp[23], src1.xyz = temp[29] MAD temp[30].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[30], src1.xyz = temp[34] DP3 temp[35].x, src0.xyz, src1.xyz 22: src0.xyz = temp[35] MAX temp[36].x, src0.x__, src0.0__ 23: src0.xyz = temp[27], src1.xyz = temp[36] MAD temp[37].xyz, src0.xyz, src1.xxx, src0.000 24: BEGIN_TEX; 25: TEX temp[39].x, temp[38].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 26: src0.xyz = temp[37], src1.xyz = temp[39] SEM_WAIT MAD temp[41].xyz, src0.xyz, src1.xxx, src0.000 27: src0.xyz = temp[41], src0.w = temp[41] 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] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[5], src2.xyz = const[6] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15], src1.xyz = const[3] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 5: src0.xyz = temp[16], src1.xyz = const[9] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 6: src0.xyz = temp[16], src1.xyz = const[8] MAD temp[24].xy, src0.xy_, src1.xy_, src0.000 7: src0.xyz = temp[16], src1.xyz = const[7] MAD temp[17].xy, src0.xy_, src1.xy_, src0.000 8: BEGIN_TEX; 9: TEX temp[32].xyz, temp[31].xy__, 2D[2]; 10: TEX temp[25].xyz, temp[24].xy__, 2D[3]; 11: TEX temp[18].xyz, temp[17].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 12: src0.xyz = temp[32], src0.w = const[4] SEM_WAIT MAD temp[34].xyz, src0.xyz, src0.www, -src0.111 13: src0.xyz = temp[25], src1.xyz = const[0] MAD temp[27].xyz, src0.xyz, src1.xyz, src0.000 14: src0.xyz = temp[18], src1.xyz = const[4] DP3 temp[20].x, src0.xyz, src1.xyz 15: src0.xyz = input[1], src1.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src1.xxx, src0.000 16: src0.xyz = temp[21], src1.xyz = const[2], src2.xyz = const[1], srcp.xyz = (src1 - src0) MAD temp[23].xyz, srcp.xyz, src2.xxx, src0.000 17: src0.xyz = temp[23] DP3 temp[38].x, src0.xyz, src0.xyz 18: src0.xyz = temp[23] DP3 temp[28].x, src0.xyz, src0.xyz 19: src0.xyz = temp[28] REPL_ALPHA temp[29].x RSQ, |src0.x| 20: src0.xyz = temp[23], src1.xyz = temp[29] MAD temp[30].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[30], src1.xyz = temp[34] DP3 temp[35].x, src0.xyz, src1.xyz 22: src0.xyz = temp[35] MAX temp[36].x, src0.x__, src0.0__ 23: src0.xyz = temp[27], src1.xyz = temp[36] MAD temp[37].xyz, src0.xyz, src1.xxx, src0.000 24: BEGIN_TEX; 25: TEX temp[39].x, temp[38].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 26: src0.xyz = temp[37], src1.xyz = temp[39] SEM_WAIT MAD temp[41].xyz, src0.xyz, src1.xxx, src0.000 27: src0.xyz = temp[41], src0.w = temp[41] 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[1] RCP temp[0].w, src0.w 1: src0.xyz = input[1], src0.w = temp[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_ 2: src0.xyz = temp[1], src1.xyz = const[5], src2.xyz = const[6] MAD temp[1].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[1], src1.xyz = const[3] MAD temp[2].y, src0._y_, src1._x_, src1._y_ 4: src0.xyz = temp[1] MAD temp[2].x, src0.x__, src0.11_, src0.00_ 5: src0.xyz = temp[2], src1.xyz = const[9] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 6: src0.xyz = temp[2], src1.xyz = const[8] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 7: src0.xyz = temp[2], src1.xyz = const[7] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 8: BEGIN_TEX; 9: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 10: TEX temp[3].xyz, temp[3].xy__, 2D[3]; 11: TEX temp[2].xyz, temp[2].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 12: src0.xyz = temp[1], src0.w = const[4] SEM_WAIT MAD temp[1].xyz, src0.xyz, src0.www, -src0.111 13: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 14: src0.xyz = temp[2], src1.xyz = const[4] DP3 temp[2].x, src0.xyz, src1.xyz 15: src0.xyz = input[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 16: src0.xyz = temp[0], src1.xyz = const[2], src2.xyz = const[1], srcp.xyz = (src1 - src0) MAD temp[0].xyz, srcp.xyz, src2.xxx, src0.000 17: src0.xyz = temp[0] DP3 temp[2].x, src0.xyz, src0.xyz 18: src0.xyz = temp[0] DP3 temp[2].y, src0.xyz, src0.xyz 19: src0.xyz = temp[2] REPL_ALPHA temp[2].y RSQ, |src0.y| 20: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000 21: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[0].x, src0.xyz, src1.xyz 22: src0.xyz = temp[0] MAX temp[0].x, src0.x__, src0.0__ 23: src0.xyz = temp[3], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 24: BEGIN_TEX; 25: TEX temp[1].x, temp[2].x___, 1D[0] SEM_WAIT SEM_ACQUIRE; 26: src0.xyz = temp[0], src1.xyz = temp[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 27: src0.xyz = temp[0], src0.w = temp[41] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=39************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 7, tex_end: 0 (code_addr: 000001c0) 0: xyz: t0 t0 t0 bias-> (00000000) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t1.w t0.x t0.x op: 05000009 1: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.www 0.0 op: 00050600 w: t1.x t1.x t1.x op: 00000000 2: xyz: t1 c5 c6 bias-> t1.xy (01866941) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c5.xyz c6.xyz op: 00020200 w: t1.x t1.x t1.x op: 00000000 3: xyz: t1 c3 t0 bias-> t2.y (010808c1) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c3.xxx c3.xyz op: 00010280 w: t1.x t1.x t1.x op: 00000000 4: xyz: t1 t0 t0 bias-> t2.x (00880001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 5: xyz: t2 c9 t0 bias-> t1.xy (01840a42) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c9.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 6: xyz: t2 c8 t0 bias-> t3.xy (018c0a02) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c8.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 7: xyz: t2 c7 t0 bias-> t2.xy (018809c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c7.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 8, tex_offset: 0, alu_end: 11, tex_end: 2 (code_addr: 000402c8) TEX: TEX t1, t1, texture[2] (00009041) TEX t3, t3, texture[3] (000098c3) TEX t2, t2, texture[1] (00008882) 8: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: c4 t0 t0 bias-> (00000024) xyz: t1.xyz c4.www -1.0 op: 000d4600 w: t1.x t1.x t1.x op: 00000000 9: xyz: t3 c0 t0 bias-> t3.xyz (038c0803) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c0.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 10: xyz: t2 c4 t0 bias-> t2.x (00880902) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c4.xyz t2.xxx op: 00804200 w: t2.x t2.x t2.x op: 00000000 11: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t2.xxx 0.0 op: 80050280 NOP w: t0.x t0.x t0.x op: 00000000 12: xyz: t0 c2 c1 sub-> t0.xyz (03821880) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c1.xxx 0.0 op: 0025048f w: t0.x t0.x t0.x op: 00000000 13: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.xyz t0.xxx op: 00804000 w: t0.x t0.x t0.x op: 00000000 14: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.xyz t0.xxx op: 00804000 w: t0.x t0.x t0.x op: 00000000 15: xyz: t2 t0 t0 bias-> t2.y (01080002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xxx t2.xxx t2.xxx op: 05004081 w: |t2.y| t2.x t2.x op: 05800041 16: xyz: t0 t2 t0 bias-> t0.xyz (03800080) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t2.yyy 0.0 op: 00050300 w: t0.x t0.x t0.x op: 00000000 17: xyz: t0 t1 t0 bias-> t0.x (00800040) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t1.xyz t0.xxx op: 00804200 w: t0.x t0.x t0.x op: 00000000 18: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.0 t0.xxx op: 02804a00 w: t0.x t0.x t0.x op: 00000000 19: xyz: t3 t0 t0 bias-> t0.xyz (03800003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.xxx 0.0 op: 00050280 w: t3.x t3.x t3.x op: 00000000 NODE 2: alu_offset: 20, tex_offset: 3, alu_end: 1, tex_end: 0 (code_addr: 00403054) TEX: TEX t1, t2, texture[0] (00008042) 20: 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 21: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t41 t0 t0 bias-> o0.w (01000009) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t41.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after '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=40************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL IMM[0] FLT32 { -4.3500, 0.0000, 0.1000, -2.5000} IMM[1] FLT32 { 0.2500, -0.7500, 0.0000, 0.3000} IMM[2] FLT32 { 0.5000, 0.7500, 0.0000, 2.5000} IMM[3] FLT32 { 4.3500, 0.0000, 0.5556, 1.0000} 0: ADD TEMP[0].xy, IN[0].xyyy, IMM[0].xyyy 1: TEX TEMP[0].xyz, TEMP[0].xyyy, SAMP[0], RECT 2: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[0].zzzz 3: ADD TEMP[1].xy, IN[0].xyyy, IMM[0].wyyy 4: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 5: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].xxxx, TEMP[0].xyzz 6: ADD TEMP[1].xy, IN[0].xyyy, IMM[1].yzzz 7: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 8: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].wwww, TEMP[0].xyzz 9: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[0], RECT 10: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[2].xxxx, TEMP[0].xyzz 11: ADD TEMP[1].xy, IN[0].xyyy, IMM[2].yzzz 12: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 13: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].wwww, TEMP[0].xyzz 14: ADD TEMP[1].xy, IN[0].xyyy, IMM[2].wzzz 15: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 16: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].xxxx, TEMP[0].xyzz 17: ADD TEMP[1].xy, IN[0].xyyy, IMM[3].xyyy 18: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 19: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[0].zzzz, TEMP[0].xyzz 20: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[3].zzzz 21: MOV TEMP[0].xyz, TEMP[0].xyzx 22: MOV TEMP[0].w, IMM[3].wwww 23: MOV OUT[0], TEMP[0] 24: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: MUL temp[2], temp[0].xyyy, const[4]; 2: TEX temp[3], temp[2], 2D[0]; 3: MOV temp[0].xyz, temp[3]; 4: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 5: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 6: MUL temp[4], temp[1].xyyy, const[4]; 7: TEX temp[5], temp[4], 2D[0]; 8: MOV temp[1].xyz, temp[5]; 9: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 10: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 11: MUL temp[6], temp[1].xyyy, const[4]; 12: TEX temp[7], temp[6], 2D[0]; 13: MOV temp[1].xyz, temp[7]; 14: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 15: MUL temp[8], input[0].xyyy, const[4]; 16: TEX temp[9], temp[8], 2D[0]; 17: MOV temp[1].xyz, temp[9]; 18: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 19: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 20: MUL temp[10], temp[1].xyyy, const[4]; 21: TEX temp[11], temp[10], 2D[0]; 22: MOV temp[1].xyz, temp[11]; 23: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 24: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 25: MUL temp[12], temp[1].xyyy, const[4]; 26: TEX temp[13], temp[12], 2D[0]; 27: MOV temp[1].xyz, temp[13]; 28: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 29: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 30: MUL temp[14], temp[1].xyyy, const[4]; 31: TEX temp[15], temp[14], 2D[0]; 32: MOV temp[1].xyz, temp[15]; 33: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 34: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 35: MOV temp[0].xyz, temp[0].xyzx; 36: MOV temp[0].w, const[3].wwww; 37: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: MUL temp[2], temp[0].xyyy, const[4]; 2: TEX temp[3], temp[2], 2D[0]; 3: MOV temp[0].xyz, temp[3]; 4: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 5: ADD temp[1].xy, input[0].xyyy, const[0].wyyy; 6: MUL temp[4], temp[1].xyyy, const[4]; 7: TEX temp[5], temp[4], 2D[0]; 8: MOV temp[1].xyz, temp[5]; 9: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 10: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 11: MUL temp[6], temp[1].xyyy, const[4]; 12: TEX temp[7], temp[6], 2D[0]; 13: MOV temp[1].xyz, temp[7]; 14: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 15: MUL temp[8], input[0].xyyy, const[4]; 16: TEX temp[9], temp[8], 2D[0]; 17: MOV temp[1].xyz, temp[9]; 18: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 19: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 20: MUL temp[10], temp[1].xyyy, const[4]; 21: TEX temp[11], temp[10], 2D[0]; 22: MOV temp[1].xyz, temp[11]; 23: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 24: ADD temp[1].xy, input[0].xyyy, const[2].wzzz; 25: MUL temp[12], temp[1].xyyy, const[4]; 26: TEX temp[13], temp[12], 2D[0]; 27: MOV temp[1].xyz, temp[13]; 28: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 29: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 30: MUL temp[14], temp[1].xyyy, const[4]; 31: TEX temp[15], temp[14], 2D[0]; 32: MOV temp[1].xyz, temp[15]; 33: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 34: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 35: MOV temp[0].xyz, temp[0].xyzx; 36: MOV temp[0].w, const[3].wwww; 37: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xy__, const[0].xy__; 1: MUL temp[2].xy, temp[0].xy__, const[4].xy__; 2: TEX temp[3].xyz, temp[2].xy__, 2D[0]; 3: MOV temp[0].xyz, temp[3].xyz_; 4: MUL temp[0].xyz, temp[0].xyz_, const[0].zzz_; 5: ADD temp[1].xy, input[0].xy__, const[0].wy__; 6: MUL temp[4].xy, temp[1].xy__, const[4].xy__; 7: TEX temp[5].xyz, temp[4].xy__, 2D[0]; 8: MOV temp[1].xyz, temp[5].xyz_; 9: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 10: ADD temp[1].xy, input[0].xy__, const[1].yz__; 11: MUL temp[6].xy, temp[1].xy__, const[4].xy__; 12: TEX temp[7].xyz, temp[6].xy__, 2D[0]; 13: MOV temp[1].xyz, temp[7].xyz_; 14: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 15: MUL temp[8].xy, input[0].xy__, const[4].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 17: MOV temp[1].xyz, temp[9].xyz_; 18: MAD temp[0].xyz, temp[1].xyz_, const[2].xxx_, temp[0].xyz_; 19: ADD temp[1].xy, input[0].xy__, const[2].yz__; 20: MUL temp[10].xy, temp[1].xy__, const[4].xy__; 21: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 22: MOV temp[1].xyz, temp[11].xyz_; 23: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 24: ADD temp[1].xy, input[0].xy__, const[2].wz__; 25: MUL temp[12].xy, temp[1].xy__, const[4].xy__; 26: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 27: MOV temp[1].xyz, temp[13].xyz_; 28: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 29: ADD temp[1].xy, input[0].xy__, const[3].xy__; 30: MUL temp[14].xy, temp[1].xy__, const[4].xy__; 31: TEX temp[15].xyz, temp[14].xy__, 2D[0]; 32: MOV temp[1].xyz, temp[15].xyz_; 33: MAD temp[0].xyz, temp[1].xyz_, const[0].zzz_, temp[0].xyz_; 34: MUL temp[0].xyz, temp[0].xyz_, const[3].zzz_; 35: MOV temp[0].xyz, temp[0].xyz_; 36: MOV temp[0].w, const[3].___w; 37: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xy__, const[0].xy__; 1: MUL temp[2].xy, temp[0].xy__, const[4].xy__; 2: TEX temp[3].xyz, temp[2].xy__, 2D[0]; 3: MOV temp[0].xyz, temp[3].xyz_; 4: MUL temp[0].xyz, temp[0].xyz_, const[0].zzz_; 5: ADD temp[1].xy, input[0].xy__, const[0].wy__; 6: MUL temp[4].xy, temp[1].xy__, const[4].xy__; 7: TEX temp[5].xyz, temp[4].xy__, 2D[0]; 8: MOV temp[1].xyz, temp[5].xyz_; 9: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 10: ADD temp[1].xy, input[0].xy__, const[1].yz__; 11: MUL temp[6].xy, temp[1].xy__, const[4].xy__; 12: TEX temp[7].xyz, temp[6].xy__, 2D[0]; 13: MOV temp[1].xyz, temp[7].xyz_; 14: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 15: MUL temp[8].xy, input[0].xy__, const[4].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 17: MOV temp[1].xyz, temp[9].xyz_; 18: MAD temp[0].xyz, temp[1].xyz_, const[2].xxx_, temp[0].xyz_; 19: ADD temp[1].xy, input[0].xy__, const[2].yz__; 20: MUL temp[10].xy, temp[1].xy__, const[4].xy__; 21: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 22: MOV temp[1].xyz, temp[11].xyz_; 23: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 24: ADD temp[1].xy, input[0].xy__, const[2].wz__; 25: MUL temp[12].xy, temp[1].xy__, const[4].xy__; 26: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 27: MOV temp[1].xyz, temp[13].xyz_; 28: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 29: ADD temp[1].xy, input[0].xy__, const[3].xy__; 30: MUL temp[14].xy, temp[1].xy__, const[4].xy__; 31: TEX temp[15].xyz, temp[14].xy__, 2D[0]; 32: MOV temp[1].xyz, temp[15].xyz_; 33: MAD temp[0].xyz, temp[1].xyz_, const[0].zzz_, temp[0].xyz_; 34: MUL temp[0].xyz, temp[0].xyz_, const[3].zzz_; 35: MOV temp[0].xyz, temp[0].xyz_; 36: MOV temp[0].w, const[3].___w; 37: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[16].xy, input[0].xy__, const[0].xy__; 1: MUL temp[17].xy, temp[16].xy__, const[4].xy__; 2: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 3: MOV temp[19].xyz, temp[18].xyz_; 4: MUL temp[20].xyz, temp[19].xyz_, const[0].zzz_; 5: ADD temp[21].xy, input[0].xy__, const[0].wy__; 6: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 7: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 8: MOV temp[24].xyz, temp[23].xyz_; 9: MAD temp[25].xyz, temp[24].xyz_, const[1].xxx_, temp[20].xyz_; 10: ADD temp[26].xy, input[0].xy__, const[1].yz__; 11: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 12: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 13: MOV temp[29].xyz, temp[28].xyz_; 14: MAD temp[30].xyz, temp[29].xyz_, const[1].www_, temp[25].xyz_; 15: MUL temp[31].xy, input[0].xy__, const[4].xy__; 16: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 17: MOV temp[33].xyz, temp[32].xyz_; 18: MAD temp[34].xyz, temp[33].xyz_, const[2].xxx_, temp[30].xyz_; 19: ADD temp[35].xy, input[0].xy__, const[2].yz__; 20: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 21: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 22: MOV temp[38].xyz, temp[37].xyz_; 23: MAD temp[39].xyz, temp[38].xyz_, const[1].www_, temp[34].xyz_; 24: ADD temp[40].xy, input[0].xy__, const[2].wz__; 25: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 26: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 27: MOV temp[43].xyz, temp[42].xyz_; 28: MAD temp[44].xyz, temp[43].xyz_, const[1].xxx_, temp[39].xyz_; 29: ADD temp[45].xy, input[0].xy__, const[3].xy__; 30: MUL temp[46].xy, temp[45].xy__, const[4].xy__; 31: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 32: MOV temp[48].xyz, temp[47].xyz_; 33: MAD temp[49].xyz, temp[48].xyz_, const[0].zzz_, temp[44].xyz_; 34: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 35: MOV temp[51].xyz, temp[50].xyz_; 36: MOV temp[51].w, const[3].___w; 37: MOV output[0], temp[51]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[0].w0__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[2].wz__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; CONST[0] = { -4.3500 0.0000 0.1000 -2.5000 } CONST[1] = { 0.2500 -0.7500 0.0000 0.3000 } CONST[2] = { 0.5000 0.7500 0.0000 2.5000 } CONST[3] = { 4.3500 0.0000 0.5556 1.0000 } CONST[5] = { 0.0000 0.0000 0.0000 -2.5000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[5].wz__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[2].wz__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; CONST[0] = { -4.3500 0.0000 0.1000 -2.5000 } CONST[1] = { 0.2500 -0.7500 0.0000 0.3000 } CONST[2] = { 0.5000 0.7500 0.0000 2.5000 } CONST[3] = { 4.3500 0.0000 0.5556 1.0000 } CONST[5] = { 0.0000 0.0000 0.0000 -2.5000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[5].wz__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[2].wz__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: src0.xyz = temp[18], src1.xyz = const[0] MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 3: src0.xyz = input[0], src1.xyz = const[5], src1.w = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.wz_ 4: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 8: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 11: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 14: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 15: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 18: src0.xyz = input[0], src1.xyz = const[2], src1.w = const[2] MAD temp[40].xy, src0.xy_, src0.111, src1.wz_ 19: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 22: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 25: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 26: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 27: MAD temp[51].w, src0.1, src0.1, src0.0 28: src0.xyz = temp[51], src0.w = temp[51] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 MAD temp[51].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 2: src0.xyz = input[0], src1.xyz = const[5], src1.w = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.wz_ 3: src0.xyz = input[0], src1.xyz = const[2], src1.w = const[2] MAD temp[40].xy, src0.xy_, src0.111, src1.wz_ 4: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 5: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 6: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 7: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 11: BEGIN_TEX; 12: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 13: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 14: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 15: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 16: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 17: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 18: TEX temp[37].xyz, temp[36].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[18], src1.xyz = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 28: src0.xyz = temp[51], src0.w = temp[51] 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], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 MAD temp[51].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 2: src0.xyz = input[0], src1.xyz = const[5], src1.w = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.wz_ 3: src0.xyz = input[0], src1.xyz = const[2], src1.w = const[2] MAD temp[40].xy, src0.xy_, src0.111, src1.wz_ 4: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 5: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 6: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 7: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 11: BEGIN_TEX; 12: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 13: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 14: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 15: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 16: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 17: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 18: TEX temp[37].xyz, temp[36].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[18], src1.xyz = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 28: src0.xyz = temp[51], src0.w = temp[51] 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], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[1].xy, srcp.xy_, src2.xy_, src0.00_ MAD temp[0].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[2].xy, srcp.xy_, src2.xy_, src0.00_ 2: src0.xyz = input[0], src1.xyz = const[5], src1.w = const[5] MAD temp[3].xy, src0.xy_, src0.11_, src1.wz_ 3: src0.xyz = input[0], src1.xyz = const[2], src1.w = const[2] MAD temp[4].xy, src0.xy_, src0.11_, src1.wz_ 4: src0.xyz = input[0], src1.xyz = const[1] MAD temp[5].xy, src0.xy_, src0.11_, src1.yz_ 5: src0.xyz = input[0], src1.xyz = const[4] MAD temp[6].xy, src0.xy_, src1.xy_, src0.00_ 6: src0.xyz = input[0], src1.xyz = const[2] MAD temp[0].xy, src0.xy_, src0.11_, src1.yz_ 7: src0.xyz = temp[3], src1.xyz = const[4] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xy_, src0.00_ 9: src0.xyz = temp[5], src1.xyz = const[4] MAD temp[5].xy, src0.xy_, src1.xy_, src0.00_ 10: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 11: BEGIN_TEX; 12: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 13: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 14: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 15: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 16: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 17: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 18: TEX temp[7].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[3], src1.xyz = const[1], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[5], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[7], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[4], src1.xyz = const[1], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[2], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 28: 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=41************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 10, tex_end: 0 (code_addr: 00000280) 0: xyz: t0 c0 c4 add-> t1.xy (01864800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: srcp.xyz c4.xyz 0.0 op: 0045040f w: 1.0 1.0 0.0 op: 00040891 1: xyz: t0 c3 c4 add-> t2.xy (018a48c0) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c4.xyz 0.0 op: 0045040f w: t0.x t0.x t0.x op: 00000000 2: xyz: t0 c5 t0 bias-> t3.xy (018c0940) w: t0 c5 t0 bias-> (00000940) xyz: t0.xyz 1.0 c5.Wzy op: 00078a80 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 c2 t0 bias-> t4.xy (01900880) w: t0 c2 t0 bias-> (00000880) xyz: t0.xyz 1.0 c2.Wzy op: 00078a80 w: t0.x t0.x t0.x op: 00000000 4: xyz: t0 c1 t0 bias-> t5.xy (01940840) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c1.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 5: xyz: t0 c4 t0 bias-> t6.xy (01980900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 6: xyz: t0 c2 t0 bias-> t0.xy (01800880) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c2.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 7: xyz: t3 c4 t0 bias-> t3.xy (018c0903) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c4.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 8: xyz: t4 c4 t0 bias-> t4.xy (01900904) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c4.xyz 0.0 op: 00050200 w: t4.x t4.x t4.x op: 00000000 9: xyz: t5 c4 t0 bias-> t5.xy (01940905) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz c4.xyz 0.0 op: 00050200 w: t5.x t5.x t5.x op: 00000000 10: xyz: t0 c4 t0 bias-> t0.xy (01800900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 11, tex_offset: 0, alu_end: 9, tex_end: 6 (code_addr: 004c024b) TEX: TEX t1, t1, texture[0] (00008041) TEX t2, t2, texture[0] (00008082) TEX t6, t6, texture[0] (00008186) TEX t3, t3, texture[0] (000080c3) TEX t4, t4, texture[0] (00008104) TEX t5, t5, texture[0] (00008145) TEX t7, t0, texture[0] (000081c0) 11: xyz: t1 c0 t0 bias-> t0.xyz (03800801) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c0.zzz 0.0 op: 00050380 w: t1.x t1.x t1.x op: 00000000 12: xyz: t3 c1 t0 bias-> t0.xyz (03800843) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c1.xxx t0.xyz op: 00020280 w: t3.x t3.x t3.x op: 00000000 13: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: c1 t0 t0 bias-> (00000021) xyz: t5.xyz c1.www t0.xyz op: 00010600 w: t5.x t5.x t5.x op: 00000000 14: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz 0.5 t0.xyz op: 00010b00 w: t6.x t6.x t6.x op: 00000000 15: xyz: t7 t0 t0 bias-> t0.xyz (03800007) w: c1 t0 t0 bias-> (00000021) xyz: t7.xyz c1.www t0.xyz op: 00010600 w: t7.x t7.x t7.x op: 00000000 16: xyz: t4 c1 t0 bias-> t0.xyz (03800844) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c1.xxx t0.xyz op: 00020280 w: t4.x t4.x t4.x op: 00000000 17: xyz: t2 c0 t0 bias-> t0.xyz (03800802) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c0.zzz t0.xyz op: 00020380 w: t2.x t2.x t2.x op: 00000000 18: xyz: t0 c3 t0 bias-> t0.xyz (038008c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c3.zzz 0.0 op: 00050380 w: t0.x t0.x t0.x op: 00000000 19: 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 20: 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[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL IMM[0] FLT32 { 0.0000, -4.3500, 0.1000, -2.5000} IMM[1] FLT32 { 0.2500, 0.0000, -0.7500, 0.3000} IMM[2] FLT32 { 0.5000, 0.0000, 0.7500, 2.5000} IMM[3] FLT32 { 0.0000, 4.3500, 0.5556, 1.0000} 0: ADD TEMP[0].xy, IN[0].xyyy, IMM[0].xyyy 1: TEX TEMP[0].xyz, TEMP[0].xyyy, SAMP[0], RECT 2: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[0].zzzz 3: ADD TEMP[1].xy, IN[0].xyyy, IMM[0].xwww 4: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 5: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].xxxx, TEMP[0].xyzz 6: ADD TEMP[1].xy, IN[0].xyyy, IMM[1].yzzz 7: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 8: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].wwww, TEMP[0].xyzz 9: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[0], RECT 10: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[2].xxxx, TEMP[0].xyzz 11: ADD TEMP[1].xy, IN[0].xyyy, IMM[2].yzzz 12: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 13: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].wwww, TEMP[0].xyzz 14: ADD TEMP[1].xy, IN[0].xyyy, IMM[2].ywww 15: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 16: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[1].xxxx, TEMP[0].xyzz 17: ADD TEMP[1].xy, IN[0].xyyy, IMM[3].xyyy 18: TEX TEMP[1].xyz, TEMP[1].xyyy, SAMP[0], RECT 19: MAD TEMP[0].xyz, TEMP[1].xyzz, IMM[0].zzzz, TEMP[0].xyzz 20: MUL TEMP[0].xyz, TEMP[0].xyzz, IMM[3].zzzz 21: MOV TEMP[0].xyz, TEMP[0].xyzx 22: MOV TEMP[0].w, IMM[3].wwww 23: MOV OUT[0], TEMP[0] 24: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: TEX temp[0].xyz, temp[0].xyyy, RECT[0]; 2: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 3: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 4: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 5: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 6: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 7: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 8: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 9: TEX temp[1].xyz, input[0].xyyy, RECT[0]; 10: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 11: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 12: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 13: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 14: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 15: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 16: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 17: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 18: TEX temp[1].xyz, temp[1].xyyy, RECT[0]; 19: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 20: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 21: MOV temp[0].xyz, temp[0].xyzx; 22: MOV temp[0].w, const[3].wwww; 23: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: MUL temp[2], temp[0].xyyy, const[4]; 2: TEX temp[3], temp[2], 2D[0]; 3: MOV temp[0].xyz, temp[3]; 4: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 5: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 6: MUL temp[4], temp[1].xyyy, const[4]; 7: TEX temp[5], temp[4], 2D[0]; 8: MOV temp[1].xyz, temp[5]; 9: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 10: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 11: MUL temp[6], temp[1].xyyy, const[4]; 12: TEX temp[7], temp[6], 2D[0]; 13: MOV temp[1].xyz, temp[7]; 14: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 15: MUL temp[8], input[0].xyyy, const[4]; 16: TEX temp[9], temp[8], 2D[0]; 17: MOV temp[1].xyz, temp[9]; 18: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 19: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 20: MUL temp[10], temp[1].xyyy, const[4]; 21: TEX temp[11], temp[10], 2D[0]; 22: MOV temp[1].xyz, temp[11]; 23: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 24: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 25: MUL temp[12], temp[1].xyyy, const[4]; 26: TEX temp[13], temp[12], 2D[0]; 27: MOV temp[1].xyz, temp[13]; 28: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 29: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 30: MUL temp[14], temp[1].xyyy, const[4]; 31: TEX temp[15], temp[14], 2D[0]; 32: MOV temp[1].xyz, temp[15]; 33: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 34: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 35: MOV temp[0].xyz, temp[0].xyzx; 36: MOV temp[0].w, const[3].wwww; 37: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xyyy, const[0].xyyy; 1: MUL temp[2], temp[0].xyyy, const[4]; 2: TEX temp[3], temp[2], 2D[0]; 3: MOV temp[0].xyz, temp[3]; 4: MUL temp[0].xyz, temp[0].xyzz, const[0].zzzz; 5: ADD temp[1].xy, input[0].xyyy, const[0].xwww; 6: MUL temp[4], temp[1].xyyy, const[4]; 7: TEX temp[5], temp[4], 2D[0]; 8: MOV temp[1].xyz, temp[5]; 9: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 10: ADD temp[1].xy, input[0].xyyy, const[1].yzzz; 11: MUL temp[6], temp[1].xyyy, const[4]; 12: TEX temp[7], temp[6], 2D[0]; 13: MOV temp[1].xyz, temp[7]; 14: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 15: MUL temp[8], input[0].xyyy, const[4]; 16: TEX temp[9], temp[8], 2D[0]; 17: MOV temp[1].xyz, temp[9]; 18: MAD temp[0].xyz, temp[1].xyzz, const[2].xxxx, temp[0].xyzz; 19: ADD temp[1].xy, input[0].xyyy, const[2].yzzz; 20: MUL temp[10], temp[1].xyyy, const[4]; 21: TEX temp[11], temp[10], 2D[0]; 22: MOV temp[1].xyz, temp[11]; 23: MAD temp[0].xyz, temp[1].xyzz, const[1].wwww, temp[0].xyzz; 24: ADD temp[1].xy, input[0].xyyy, const[2].ywww; 25: MUL temp[12], temp[1].xyyy, const[4]; 26: TEX temp[13], temp[12], 2D[0]; 27: MOV temp[1].xyz, temp[13]; 28: MAD temp[0].xyz, temp[1].xyzz, const[1].xxxx, temp[0].xyzz; 29: ADD temp[1].xy, input[0].xyyy, const[3].xyyy; 30: MUL temp[14], temp[1].xyyy, const[4]; 31: TEX temp[15], temp[14], 2D[0]; 32: MOV temp[1].xyz, temp[15]; 33: MAD temp[0].xyz, temp[1].xyzz, const[0].zzzz, temp[0].xyzz; 34: MUL temp[0].xyz, temp[0].xyzz, const[3].zzzz; 35: MOV temp[0].xyz, temp[0].xyzx; 36: MOV temp[0].w, const[3].wwww; 37: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xy__, const[0].xy__; 1: MUL temp[2].xy, temp[0].xy__, const[4].xy__; 2: TEX temp[3].xyz, temp[2].xy__, 2D[0]; 3: MOV temp[0].xyz, temp[3].xyz_; 4: MUL temp[0].xyz, temp[0].xyz_, const[0].zzz_; 5: ADD temp[1].xy, input[0].xy__, const[0].xw__; 6: MUL temp[4].xy, temp[1].xy__, const[4].xy__; 7: TEX temp[5].xyz, temp[4].xy__, 2D[0]; 8: MOV temp[1].xyz, temp[5].xyz_; 9: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 10: ADD temp[1].xy, input[0].xy__, const[1].yz__; 11: MUL temp[6].xy, temp[1].xy__, const[4].xy__; 12: TEX temp[7].xyz, temp[6].xy__, 2D[0]; 13: MOV temp[1].xyz, temp[7].xyz_; 14: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 15: MUL temp[8].xy, input[0].xy__, const[4].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 17: MOV temp[1].xyz, temp[9].xyz_; 18: MAD temp[0].xyz, temp[1].xyz_, const[2].xxx_, temp[0].xyz_; 19: ADD temp[1].xy, input[0].xy__, const[2].yz__; 20: MUL temp[10].xy, temp[1].xy__, const[4].xy__; 21: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 22: MOV temp[1].xyz, temp[11].xyz_; 23: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 24: ADD temp[1].xy, input[0].xy__, const[2].yw__; 25: MUL temp[12].xy, temp[1].xy__, const[4].xy__; 26: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 27: MOV temp[1].xyz, temp[13].xyz_; 28: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 29: ADD temp[1].xy, input[0].xy__, const[3].xy__; 30: MUL temp[14].xy, temp[1].xy__, const[4].xy__; 31: TEX temp[15].xyz, temp[14].xy__, 2D[0]; 32: MOV temp[1].xyz, temp[15].xyz_; 33: MAD temp[0].xyz, temp[1].xyz_, const[0].zzz_, temp[0].xyz_; 34: MUL temp[0].xyz, temp[0].xyz_, const[3].zzz_; 35: MOV temp[0].xyz, temp[0].xyz_; 36: MOV temp[0].w, const[3].___w; 37: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].xy, input[0].xy__, const[0].xy__; 1: MUL temp[2].xy, temp[0].xy__, const[4].xy__; 2: TEX temp[3].xyz, temp[2].xy__, 2D[0]; 3: MOV temp[0].xyz, temp[3].xyz_; 4: MUL temp[0].xyz, temp[0].xyz_, const[0].zzz_; 5: ADD temp[1].xy, input[0].xy__, const[0].xw__; 6: MUL temp[4].xy, temp[1].xy__, const[4].xy__; 7: TEX temp[5].xyz, temp[4].xy__, 2D[0]; 8: MOV temp[1].xyz, temp[5].xyz_; 9: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 10: ADD temp[1].xy, input[0].xy__, const[1].yz__; 11: MUL temp[6].xy, temp[1].xy__, const[4].xy__; 12: TEX temp[7].xyz, temp[6].xy__, 2D[0]; 13: MOV temp[1].xyz, temp[7].xyz_; 14: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 15: MUL temp[8].xy, input[0].xy__, const[4].xy__; 16: TEX temp[9].xyz, temp[8].xy__, 2D[0]; 17: MOV temp[1].xyz, temp[9].xyz_; 18: MAD temp[0].xyz, temp[1].xyz_, const[2].xxx_, temp[0].xyz_; 19: ADD temp[1].xy, input[0].xy__, const[2].yz__; 20: MUL temp[10].xy, temp[1].xy__, const[4].xy__; 21: TEX temp[11].xyz, temp[10].xy__, 2D[0]; 22: MOV temp[1].xyz, temp[11].xyz_; 23: MAD temp[0].xyz, temp[1].xyz_, const[1].www_, temp[0].xyz_; 24: ADD temp[1].xy, input[0].xy__, const[2].yw__; 25: MUL temp[12].xy, temp[1].xy__, const[4].xy__; 26: TEX temp[13].xyz, temp[12].xy__, 2D[0]; 27: MOV temp[1].xyz, temp[13].xyz_; 28: MAD temp[0].xyz, temp[1].xyz_, const[1].xxx_, temp[0].xyz_; 29: ADD temp[1].xy, input[0].xy__, const[3].xy__; 30: MUL temp[14].xy, temp[1].xy__, const[4].xy__; 31: TEX temp[15].xyz, temp[14].xy__, 2D[0]; 32: MOV temp[1].xyz, temp[15].xyz_; 33: MAD temp[0].xyz, temp[1].xyz_, const[0].zzz_, temp[0].xyz_; 34: MUL temp[0].xyz, temp[0].xyz_, const[3].zzz_; 35: MOV temp[0].xyz, temp[0].xyz_; 36: MOV temp[0].w, const[3].___w; 37: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[16].xy, input[0].xy__, const[0].xy__; 1: MUL temp[17].xy, temp[16].xy__, const[4].xy__; 2: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 3: MOV temp[19].xyz, temp[18].xyz_; 4: MUL temp[20].xyz, temp[19].xyz_, const[0].zzz_; 5: ADD temp[21].xy, input[0].xy__, const[0].xw__; 6: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 7: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 8: MOV temp[24].xyz, temp[23].xyz_; 9: MAD temp[25].xyz, temp[24].xyz_, const[1].xxx_, temp[20].xyz_; 10: ADD temp[26].xy, input[0].xy__, const[1].yz__; 11: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 12: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 13: MOV temp[29].xyz, temp[28].xyz_; 14: MAD temp[30].xyz, temp[29].xyz_, const[1].www_, temp[25].xyz_; 15: MUL temp[31].xy, input[0].xy__, const[4].xy__; 16: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 17: MOV temp[33].xyz, temp[32].xyz_; 18: MAD temp[34].xyz, temp[33].xyz_, const[2].xxx_, temp[30].xyz_; 19: ADD temp[35].xy, input[0].xy__, const[2].yz__; 20: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 21: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 22: MOV temp[38].xyz, temp[37].xyz_; 23: MAD temp[39].xyz, temp[38].xyz_, const[1].www_, temp[34].xyz_; 24: ADD temp[40].xy, input[0].xy__, const[2].yw__; 25: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 26: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 27: MOV temp[43].xyz, temp[42].xyz_; 28: MAD temp[44].xyz, temp[43].xyz_, const[1].xxx_, temp[39].xyz_; 29: ADD temp[45].xy, input[0].xy__, const[3].xy__; 30: MUL temp[46].xy, temp[45].xy__, const[4].xy__; 31: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 32: MOV temp[48].xyz, temp[47].xyz_; 33: MAD temp[49].xyz, temp[48].xyz_, const[0].zzz_, temp[44].xyz_; 34: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 35: MOV temp[51].xyz, temp[50].xyz_; 36: MOV temp[51].w, const[3].___w; 37: MOV output[0], temp[51]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[0].0w__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[2].0w__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; CONST[0] = { 0.0000 -4.3500 0.1000 -2.5000 } CONST[1] = { 0.2500 0.0000 -0.7500 0.3000 } CONST[2] = { 0.5000 0.0000 0.7500 2.5000 } CONST[3] = { 0.0000 4.3500 0.5556 1.0000 } CONST[5] = { 0.0000 0.0000 -2.5000 0.0000 } CONST[6] = { 0.0000 0.0000 2.5000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[5].yz__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[6].yz__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; CONST[0] = { 0.0000 -4.3500 0.1000 -2.5000 } CONST[1] = { 0.2500 0.0000 -0.7500 0.3000 } CONST[2] = { 0.5000 0.0000 0.7500 2.5000 } CONST[3] = { 0.0000 4.3500 0.5556 1.0000 } CONST[5] = { 0.0000 0.0000 -2.5000 0.0000 } CONST[6] = { 0.0000 0.0000 2.5000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[17].xy, (const[0] + input[0]).xy__, const[4].xy__; 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: MUL temp[20].xyz, temp[18].xyz_, const[0].zzz_; 3: ADD temp[21].xy, input[0].xy__, const[5].yz__; 4: MUL temp[22].xy, temp[21].xy__, const[4].xy__; 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: MAD temp[25].xyz, temp[23].xyz_, const[1].xxx_, temp[20].xyz_; 7: ADD temp[26].xy, input[0].xy__, const[1].yz__; 8: MUL temp[27].xy, temp[26].xy__, const[4].xy__; 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: MAD temp[30].xyz, temp[28].xyz_, const[1].www_, temp[25].xyz_; 11: MUL temp[31].xy, input[0].xy__, const[4].xy__; 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: MAD temp[34].xyz, temp[32].xyz_, none.HHH_, temp[30].xyz_; 14: ADD temp[35].xy, input[0].xy__, const[2].yz__; 15: MUL temp[36].xy, temp[35].xy__, const[4].xy__; 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: MAD temp[39].xyz, temp[37].xyz_, const[1].www_, temp[34].xyz_; 18: ADD temp[40].xy, input[0].xy__, const[6].yz__; 19: MUL temp[41].xy, temp[40].xy__, const[4].xy__; 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: MAD temp[44].xyz, temp[42].xyz_, const[1].xxx_, temp[39].xyz_; 22: MUL temp[46].xy, (const[3] + input[0]).xy__, const[4].xy__; 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: MAD temp[49].xyz, temp[47].xyz_, const[0].zzz_, temp[44].xyz_; 25: MUL temp[50].xyz, temp[49].xyz_, const[3].zzz_; 26: MOV temp[51].xyz, temp[50].xyz_; 27: MOV temp[51].w, none.___1; 28: MOV output[0], temp[51]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 1: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 2: src0.xyz = temp[18], src1.xyz = const[0] MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 3: src0.xyz = input[0], src1.xyz = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.yz_ 4: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 5: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 6: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 8: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 9: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 10: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 11: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 12: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 13: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 14: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 15: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 16: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 17: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 18: src0.xyz = input[0], src1.xyz = const[6] MAD temp[40].xy, src0.xy_, src0.111, src1.yz_ 19: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 20: TEX temp[42].xyz, temp[41].xy__, 2D[0]; 21: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 22: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 23: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 24: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 25: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 26: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 27: MAD temp[51].w, src0.1, src0.1, src0.0 28: src0.xyz = temp[51], src0.w = temp[51] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 MAD temp[51].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 2: src0.xyz = input[0], src1.xyz = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.yz_ 3: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 4: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 5: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 6: src0.xyz = input[0], src1.xyz = const[6] MAD temp[40].xy, src0.xy_, src0.111, src1.yz_ 7: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 11: BEGIN_TEX; 12: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 13: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 14: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 15: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 16: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 17: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 18: TEX temp[42].xyz, temp[41].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[18], src1.xyz = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 28: src0.xyz = temp[51], src0.w = temp[51] 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], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[17].xy, srcp.xy_, src2.xy_, src0.000 MAD temp[51].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[46].xy, srcp.xy_, src2.xy_, src0.000 2: src0.xyz = input[0], src1.xyz = const[5] MAD temp[21].xy, src0.xy_, src0.111, src1.yz_ 3: src0.xyz = input[0], src1.xyz = const[1] MAD temp[26].xy, src0.xy_, src0.111, src1.yz_ 4: src0.xyz = input[0], src1.xyz = const[4] MAD temp[31].xy, src0.xy_, src1.xy_, src0.000 5: src0.xyz = input[0], src1.xyz = const[2] MAD temp[35].xy, src0.xy_, src0.111, src1.yz_ 6: src0.xyz = input[0], src1.xyz = const[6] MAD temp[40].xy, src0.xy_, src0.111, src1.yz_ 7: src0.xyz = temp[21], src1.xyz = const[4] MAD temp[22].xy, src0.xy_, src1.xy_, src0.000 8: src0.xyz = temp[26], src1.xyz = const[4] MAD temp[27].xy, src0.xy_, src1.xy_, src0.000 9: src0.xyz = temp[35], src1.xyz = const[4] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 10: src0.xyz = temp[40], src1.xyz = const[4] MAD temp[41].xy, src0.xy_, src1.xy_, src0.000 11: BEGIN_TEX; 12: TEX temp[18].xyz, temp[17].xy__, 2D[0]; 13: TEX temp[47].xyz, temp[46].xy__, 2D[0]; 14: TEX temp[32].xyz, temp[31].xy__, 2D[0]; 15: TEX temp[23].xyz, temp[22].xy__, 2D[0]; 16: TEX temp[28].xyz, temp[27].xy__, 2D[0]; 17: TEX temp[37].xyz, temp[36].xy__, 2D[0]; 18: TEX temp[42].xyz, temp[41].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[18], src1.xyz = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[23], src1.xyz = const[1], src2.xyz = temp[20] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[28], src0.w = const[1], src1.xyz = temp[25] MAD temp[30].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[32], src1.xyz = temp[30] MAD temp[34].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[37], src0.w = const[1], src1.xyz = temp[34] MAD temp[39].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[42], src1.xyz = const[1], src2.xyz = temp[39] MAD temp[44].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[47], src1.xyz = const[0], src2.xyz = temp[44] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[49], src1.xyz = const[3] MAD temp[50].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[50] MAD temp[51].xyz, src0.xyz, src0.111, src0.000 28: src0.xyz = temp[51], src0.w = temp[51] 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], src1.xyz = const[0], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[1].xy, srcp.xy_, src2.xy_, src0.00_ MAD temp[0].w, src0.1, src0.1, src0.0 1: src0.xyz = input[0], src1.xyz = const[3], src2.xyz = const[4], srcp.xyz = (src1 + src0) MAD temp[2].xy, srcp.xy_, src2.xy_, src0.00_ 2: src0.xyz = input[0], src1.xyz = const[5] MAD temp[3].xy, src0.xy_, src0.11_, src1.yz_ 3: src0.xyz = input[0], src1.xyz = const[1] MAD temp[4].xy, src0.xy_, src0.11_, src1.yz_ 4: src0.xyz = input[0], src1.xyz = const[4] MAD temp[5].xy, src0.xy_, src1.xy_, src0.00_ 5: src0.xyz = input[0], src1.xyz = const[2] MAD temp[6].xy, src0.xy_, src0.11_, src1.yz_ 6: src0.xyz = input[0], src1.xyz = const[6] MAD temp[0].xy, src0.xy_, src0.11_, src1.yz_ 7: src0.xyz = temp[3], src1.xyz = const[4] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 8: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xy_, src0.00_ 9: src0.xyz = temp[6], src1.xyz = const[4] MAD temp[6].xy, src0.xy_, src1.xy_, src0.00_ 10: src0.xyz = temp[0], src1.xyz = const[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ 11: BEGIN_TEX; 12: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 13: TEX temp[2].xyz, temp[2].xy__, 2D[0]; 14: TEX temp[5].xyz, temp[5].xy__, 2D[0]; 15: TEX temp[3].xyz, temp[3].xy__, 2D[0]; 16: TEX temp[4].xyz, temp[4].xy__, 2D[0]; 17: TEX temp[6].xyz, temp[6].xy__, 2D[0]; 18: TEX temp[7].xyz, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 20: src0.xyz = temp[3], src1.xyz = const[1], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 21: src0.xyz = temp[4], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src1.xyz 23: src0.xyz = temp[6], src0.w = const[1], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 24: src0.xyz = temp[7], src1.xyz = const[1], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[2], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.zzz, src2.xyz 26: src0.xyz = temp[0], src1.xyz = const[3] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 27: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 28: 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=42************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 10, tex_end: 0 (code_addr: 00000280) 0: xyz: t0 c0 c4 add-> t1.xy (01864800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: srcp.xyz c4.xyz 0.0 op: 0045040f w: 1.0 1.0 0.0 op: 00040891 1: xyz: t0 c3 c4 add-> t2.xy (018a48c0) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz c4.xyz 0.0 op: 0045040f w: t0.x t0.x t0.x op: 00000000 2: xyz: t0 c5 t0 bias-> t3.xy (018c0940) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c5.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 c1 t0 bias-> t4.xy (01900840) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c1.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 4: xyz: t0 c4 t0 bias-> t5.xy (01940900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 5: xyz: t0 c2 t0 bias-> t6.xy (01980880) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c2.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 6: xyz: t0 c6 t0 bias-> t0.xy (01800980) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 c6.yzx op: 00060a80 w: t0.x t0.x t0.x op: 00000000 7: xyz: t3 c4 t0 bias-> t3.xy (018c0903) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c4.xyz 0.0 op: 00050200 w: t3.x t3.x t3.x op: 00000000 8: xyz: t4 c4 t0 bias-> t4.xy (01900904) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c4.xyz 0.0 op: 00050200 w: t4.x t4.x t4.x op: 00000000 9: xyz: t6 c4 t0 bias-> t6.xy (01980906) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz c4.xyz 0.0 op: 00050200 w: t6.x t6.x t6.x op: 00000000 10: xyz: t0 c4 t0 bias-> t0.xy (01800900) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c4.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 11, tex_offset: 0, alu_end: 9, tex_end: 6 (code_addr: 004c024b) TEX: TEX t1, t1, texture[0] (00008041) TEX t2, t2, texture[0] (00008082) TEX t5, t5, texture[0] (00008145) TEX t3, t3, texture[0] (000080c3) TEX t4, t4, texture[0] (00008104) TEX t6, t6, texture[0] (00008186) TEX t7, t0, texture[0] (000081c0) 11: xyz: t1 c0 t0 bias-> t0.xyz (03800801) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz c0.zzz 0.0 op: 00050380 w: t1.x t1.x t1.x op: 00000000 12: xyz: t3 c1 t0 bias-> t0.xyz (03800843) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c1.xxx t0.xyz op: 00020280 w: t3.x t3.x t3.x op: 00000000 13: xyz: t4 t0 t0 bias-> t0.xyz (03800004) w: c1 t0 t0 bias-> (00000021) xyz: t4.xyz c1.www t0.xyz op: 00010600 w: t4.x t4.x t4.x op: 00000000 14: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz 0.5 t0.xyz op: 00010b00 w: t5.x t5.x t5.x op: 00000000 15: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: c1 t0 t0 bias-> (00000021) xyz: t6.xyz c1.www t0.xyz op: 00010600 w: t6.x t6.x t6.x op: 00000000 16: xyz: t7 c1 t0 bias-> t0.xyz (03800847) w: t0 t0 t0 bias-> (00000000) xyz: t7.xyz c1.xxx t0.xyz op: 00020280 w: t7.x t7.x t7.x op: 00000000 17: xyz: t2 c0 t0 bias-> t0.xyz (03800802) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c0.zzz t0.xyz op: 00020380 w: t2.x t2.x t2.x op: 00000000 18: xyz: t0 c3 t0 bias-> t0.xyz (038008c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c3.zzz 0.0 op: 00050380 w: t0.x t0.x t0.x op: 00000000 19: 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 20: 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[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 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 = temp[1], src0.w = temp[1] 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[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1] 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=43************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 0, tex_end: 0 (code_addr: 00400000) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL IN[5], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL DCL TEMP[6], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: DP3 TEMP[0].x, IN[1].xyzz, IN[1].xyzz 1: RSQ TEMP[0].x, TEMP[0].xxxx 2: MUL TEMP[0].xyz, IN[1].xyzz, TEMP[0].xxxx 3: TEX TEMP[1].w, IN[0].xyyy, SAMP[0], 2D 4: MUL TEMP[1].x, TEMP[1].wwww, CONST[0].xxxx 5: MAD TEMP[0].xy, TEMP[0].xyzz, TEMP[1].xxxx, IN[0].xyzz 6: TEX TEMP[1], TEMP[0].xyyy, SAMP[3], 2D 7: TEX TEMP[2].xyz, TEMP[0].xyyy, SAMP[2], 2D 8: ADD TEMP[3].xyz, TEMP[2].xyzz, IMM[0].xxxx 9: MUL TEMP[4].xyz, TEMP[3].xxxx, IN[4].xyzz 10: MAD TEMP[4].xyz, TEMP[3].yyyy, IN[3].xyzz, TEMP[4].xyzz 11: MAD TEMP[4].xyz, TEMP[3].zzzz, IN[5].xyzz, TEMP[4].xyzz 12: DP3 TEMP[5].x, TEMP[4].xyzz, TEMP[4].xyzz 13: RSQ TEMP[5].x, TEMP[5].xxxx 14: MUL TEMP[4].xyz, TEMP[4].xyzz, TEMP[5].xxxx 15: MAD TEMP[2].xyz, TEMP[4].xyzz, IMM[0].yyyy, IMM[0].yyyy 16: MUL TEMP[4].x, IN[2].xxxx, IMM[0].zzzz 17: FLR TEMP[5].x, TEMP[4].xxxx 18: MOV TEMP[6].x, TEMP[5].xxxx 19: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 20: MUL TEMP[4].x, TEMP[4].xxxx, IMM[0].zzzz 21: FLR TEMP[5].x, TEMP[4].xxxx 22: MOV TEMP[6].y, TEMP[5].xxxx 23: ADD TEMP[4].x, TEMP[4].xxxx, -TEMP[5].xxxx 24: MOV TEMP[6].z, TEMP[4].xxxx 25: MUL TEMP[6].xy, TEMP[6].xyyy, IMM[0].wwww 26: MOV TEMP[3].xyz, TEMP[6].xyzx 27: TEX TEMP[0].xy, TEMP[0].xyyy, SAMP[1], 2D 28: MOV TEMP[2].w, TEMP[0].xxxx 29: MOV TEMP[3].w, TEMP[0].yyyy 30: MOV OUT[0], TEMP[1] 31: MOV OUT[1], TEMP[2] 32: MOV OUT[2], TEMP[3] 33: END Fragment Program: before compilation # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[1].w, input[0].xyyy, 2D[0]; 4: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 5: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 6: TEX temp[1], temp[0].xyyy, 2D[3]; 7: TEX temp[2].xyz, temp[0].xyyy, 2D[2]; 8: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 9: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 10: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 11: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 12: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 13: RSQ temp[5].x, temp[5].xxxx; 14: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 15: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 16: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 17: FLR temp[5].x, temp[4].xxxx; 18: MOV temp[6].x, temp[5].xxxx; 19: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 20: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 21: FLR temp[5].x, temp[4].xxxx; 22: MOV temp[6].y, temp[5].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 24: MOV temp[6].z, temp[4].xxxx; 25: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 26: MOV temp[3].xyz, temp[6].xyzx; 27: TEX temp[0].xy, temp[0].xyyy, 2D[1]; 28: MOV temp[2].w, temp[0].xxxx; 29: MOV temp[3].w, temp[0].yyyy; 30: MOV output[0], temp[1]; 31: MOV output[1], temp[2]; 32: MOV output[2], temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, temp[0].xxxx; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, temp[5].xxxx; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FLR temp[5].x, temp[4].xxxx; 20: MOV temp[6].x, temp[5].xxxx; 21: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 22: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 23: FLR temp[5].x, temp[4].xxxx; 24: MOV temp[6].y, temp[5].xxxx; 25: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 26: MOV temp[6].z, temp[4].xxxx; 27: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 28: MOV temp[3].xyz, temp[6].xyzx; 29: TEX temp[9], temp[0].xyyy, 2D[1]; 30: MOV temp[0].xy, temp[9]; 31: MOV temp[2].w, temp[0].xxxx; 32: MOV temp[3].w, temp[0].yyyy; 33: MOV output[0], temp[1]; 34: MOV output[1], temp[2]; 35: MOV output[2], temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyzz, input[1].xyzz; 1: RSQ temp[0].x, |temp[0].xxxx|; 2: MUL temp[0].xyz, input[1].xyzz, temp[0].xxxx; 3: TEX temp[7], input[0].xyyy, 2D[0]; 4: MOV temp[1].w, temp[7]; 5: MUL temp[1].x, temp[1].wwww, const[0].xxxx; 6: MAD temp[0].xy, temp[0].xyzz, temp[1].xxxx, input[0].xyzz; 7: TEX temp[1], temp[0].xyyy, 2D[3]; 8: TEX temp[8], temp[0].xyyy, 2D[2]; 9: MOV temp[2].xyz, temp[8]; 10: ADD temp[3].xyz, temp[2].xyzz, const[1].xxxx; 11: MUL temp[4].xyz, temp[3].xxxx, input[4].xyzz; 12: MAD temp[4].xyz, temp[3].yyyy, input[3].xyzz, temp[4].xyzz; 13: MAD temp[4].xyz, temp[3].zzzz, input[5].xyzz, temp[4].xyzz; 14: DP3 temp[5].x, temp[4].xyzz, temp[4].xyzz; 15: RSQ temp[5].x, |temp[5].xxxx|; 16: MUL temp[4].xyz, temp[4].xyzz, temp[5].xxxx; 17: MAD temp[2].xyz, temp[4].xyzz, const[1].yyyy, const[1].yyyy; 18: MUL temp[4].x, input[2].xxxx, const[1].zzzz; 19: FRC temp[5].x, temp[4].xxxx; 20: ADD temp[5].x, temp[4].xxxx, -temp[5]; 21: MOV temp[6].x, temp[5].xxxx; 22: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 23: MUL temp[4].x, temp[4].xxxx, const[1].zzzz; 24: FRC temp[5].x, temp[4].xxxx; 25: ADD temp[5].x, temp[4].xxxx, -temp[5]; 26: MOV temp[6].y, temp[5].xxxx; 27: ADD temp[4].x, temp[4].xxxx, -temp[5].xxxx; 28: MOV temp[6].z, temp[4].xxxx; 29: MUL temp[6].xy, temp[6].xyyy, const[1].wwww; 30: MOV temp[3].xyz, temp[6].xyzx; 31: TEX temp[9], temp[0].xyyy, 2D[1]; 32: MOV temp[0].xy, temp[9]; 33: MOV temp[2].w, temp[0].xxxx; 34: MOV temp[3].w, temp[0].yyyy; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: DP3 temp[0].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[0].x, |temp[0].x___|; 2: MUL temp[0].xy, input[1].xy__, temp[0].xx__; 3: TEX temp[7].w, input[0].xy__, 2D[0]; 4: MOV temp[1].w, temp[7].___w; 5: MUL temp[1].x, temp[1].w___, const[0].x___; 6: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, input[0].xy__; 7: TEX temp[1], temp[0].xy__, 2D[3]; 8: TEX temp[8].xyz, temp[0].xy__, 2D[2]; 9: MOV temp[2].xyz, temp[8].xyz_; 10: ADD temp[3].xyz, temp[2].xyz_, const[1].xxx_; 11: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 12: MAD temp[4].xyz, temp[3].yyy_, input[3].xyz_, temp[4].xyz_; 13: MAD temp[4].xyz, temp[3].zzz_, input[5].xyz_, temp[4].xyz_; 14: DP3 temp[5].x, temp[4].xyz_, temp[4].xyz_; 15: RSQ temp[5].x, |temp[5].x___|; 16: MUL temp[4].xyz, temp[4].xyz_, temp[5].xxx_; 17: MAD temp[2].xyz, temp[4].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[4].x, input[2].x___, const[1].z___; 19: FRC temp[5].x, temp[4].x___; 20: ADD temp[5].x, temp[4].x___, -temp[5].x___; 21: MOV temp[6].x, temp[5].x___; 22: ADD temp[4].x, temp[4].x___, -temp[5].x___; 23: MUL temp[4].x, temp[4].x___, const[1].z___; 24: FRC temp[5].x, temp[4].x___; 25: ADD temp[5].x, temp[4].x___, -temp[5].x___; 26: MOV temp[6].y, temp[5]._x__; 27: ADD temp[4].x, temp[4].x___, -temp[5].x___; 28: MOV temp[6].z, temp[4].__x_; 29: MUL temp[6].xy, temp[6].xy__, const[1].ww__; 30: MOV temp[3].xyz, temp[6].xyz_; 31: TEX temp[9].xy, temp[0].xy__, 2D[1]; 32: MOV temp[0].xy, temp[9].xy__; 33: MOV temp[2].w, temp[0].___x; 34: MOV temp[3].w, temp[0].___y; 35: MOV output[0], temp[1]; 36: MOV output[1], temp[2]; 37: MOV output[2], temp[3]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MOV temp[14].w, temp[13].___w; 5: MUL temp[15].x, temp[14].w___, const[0].x___; 6: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 7: TEX temp[17], temp[16].xy__, 2D[3]; 8: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 9: MOV temp[19].xyz, temp[18].xyz_; 10: ADD temp[20].xyz, temp[19].xyz_, const[1].xxx_; 11: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 12: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 13: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 14: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 15: RSQ temp[25].x, |temp[24].x___|; 16: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 17: MAD temp[27].xyz, temp[26].xyz_, const[1].yyy_, const[1].yyy_; 18: MUL temp[28].x, input[2].x___, const[1].z___; 19: FRC temp[29].x, temp[28].x___; 20: ADD temp[30].x, temp[28].x___, -temp[29].x___; 21: MOV temp[31].x, temp[30].x___; 22: ADD temp[32].x, temp[28].x___, -temp[30].x___; 23: MUL temp[33].x, temp[32].x___, const[1].z___; 24: FRC temp[34].x, temp[33].x___; 25: ADD temp[35].x, temp[33].x___, -temp[34].x___; 26: MOV temp[31].y, temp[35]._x__; 27: ADD temp[36].x, temp[33].x___, -temp[35].x___; 28: MOV temp[37].z, temp[36].__x_; 29: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 30: MOV temp[38].xyz, temp[37].xyz_; 31: TEX temp[39].xy, temp[16].xy__, 2D[1]; 32: MOV temp[40].xy, temp[39].xy__; 33: MOV temp[27].w, temp[40].___x; 34: MOV temp[38].w, temp[40].___y; 35: MOV output[0], temp[17]; 36: MOV output[1], temp[27]; 37: MOV output[2], temp[38]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; CONST[1] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: DP3 temp[10].x, input[1].xyz_, input[1].xyz_; 1: RSQ temp[11].x, |temp[10].x___|; 2: MUL temp[12].xy, input[1].xy__, temp[11].xx__; 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: MUL temp[15].x, temp[13].w___, const[0].x___; 5: MAD temp[16].xy, temp[12].xy__, temp[15].xx__, input[0].xy__; 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: ADD temp[20].xyz, temp[18].xyz_, none.-H-H-H_; 9: MUL temp[21].xyz, temp[20].xxx_, input[4].xyz_; 10: MAD temp[22].xyz, temp[20].yyy_, input[3].xyz_, temp[21].xyz_; 11: MAD temp[23].xyz, temp[20].zzz_, input[5].xyz_, temp[22].xyz_; 12: DP3 temp[24].x, temp[23].xyz_, temp[23].xyz_; 13: RSQ temp[25].x, |temp[24].x___|; 14: MUL temp[26].xyz, temp[23].xyz_, temp[25].xxx_; 15: MAD temp[27].xyz, temp[26].xyz_, none.HHH_, none.HHH_; 16: MUL temp[28].x, input[2].x___, const[1].z___; 17: FRC temp[29].x, temp[28].x___; 18: MOV temp[31].x, (temp[28] - temp[29]).x___; 19: ADD temp[32].x, temp[28].x___, -(temp[28] - temp[29]).x___; 20: MUL temp[33].x, temp[32].x___, const[1].z___; 21: FRC temp[34].x, temp[33].x___; 22: MOV temp[31].y, (temp[33] - temp[34])._x__; 23: ADD temp[36].x, temp[33].x___, -(temp[33] - temp[34]).x___; 24: MOV temp[37].z, temp[36].__x_; 25: MUL temp[37].xy, temp[31].xy__, const[1].ww__; 26: MOV temp[38].xyz, temp[37].xyz_; 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: MOV temp[27].w, temp[39].___x; 29: MOV temp[38].w, temp[39].___y; 30: MOV output[0], temp[17]; 31: MOV output[1], temp[27]; 32: MOV output[2], temp[38]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 1: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 2: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 3: TEX temp[13].w, input[0].xy__, 2D[0]; 4: src0.xyz = const[0], src0.w = temp[13] MAD temp[15].x, src0.w__, src0.x__, src0.000 5: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 6: TEX temp[17], temp[16].xy__, 2D[3]; 7: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 8: src0.xyz = temp[18] MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH 9: src0.xyz = temp[20], src1.xyz = input[4] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 10: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 12: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 13: src0.xyz = temp[24] REPL_ALPHA temp[25].x RSQ, |src0.x| 14: src0.xyz = temp[23], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src1.xxx, src0.000 15: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 16: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 17: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 18: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 19: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].x, src1.x__, src0.111, -srcp.x__ 20: src0.xyz = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.x__, src1.z__, src0.000 21: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 22: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 23: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[36].x, src1.x__, src0.111, -srcp.x__ 24: src0.xyz = temp[36] MAD temp[37].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[31], src0.w = const[1] MAD temp[37].xy, src0.xy_, src0.ww_, src0.000 26: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 27: TEX temp[39].xy, temp[16].xy__, 2D[1]; 28: src0.xyz = temp[39] MAD temp[27].w, src0.x, src0.1, src0.0 29: src0.xyz = temp[39] MAD temp[38].w, src0.y, src0.1, src0.0 30: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 32: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.xyz = temp[32], src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.xyz = temp[36], src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[28].x, src0.x__, src1.z__, src0.000 1: src0.xyz = input[1] DP3 temp[10].x, src0.xyz, src0.xyz 2: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 3: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.000 4: src0.xyz = temp[29], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[10] REPL_ALPHA temp[11].x RSQ, |src0.x| 6: src0.w = temp[32], src1.xyz = const[1] MAD temp[33].x, src0.w__, src1.z__, src0.000 7: src0.xyz = input[1], src1.xyz = temp[11] MAD temp[12].xy, src0.xy_, src1.xx_, src0.000 8: src0.xyz = temp[33] FRC temp[34].x, src0.x__ 9: src0.xyz = temp[34], src1.xyz = temp[33], srcp.xyz = (src1 - src0) MAD temp[31].y, srcp._x_, src0.111, src0.000 10: src0.xyz = temp[34], src0.w = const[1], src1.xyz = temp[33], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[37].xy, src2.xy_, src0.ww_, src0.000 MAD temp[36].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[36] MAD temp[37].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[13].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[13] SEM_WAIT MAD temp[15].x, src0.w__, src0.x__, src0.000 16: src0.xyz = temp[12], src1.xyz = temp[15], src2.xyz = input[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[39].xy, temp[16].xy__, 2D[1]; 19: TEX temp[18].xyz, temp[16].xy__, 2D[2]; 20: TEX temp[17], temp[16].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[18], src1.xyz = temp[39] SEM_WAIT MAD temp[20].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[27].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[20], src1.xyz = input[4], src2.xyz = temp[39] MAD temp[21].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[38].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[20], src1.xyz = input[3], src2.xyz = temp[21] MAD temp[22].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[20], src1.xyz = input[5], src2.xyz = temp[22] MAD temp[23].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[23] DP3 temp[24].x, src0.xyz, src0.xyz 26: src0.xyz = temp[24] RSQ temp[25].w, |src0.x| 27: src0.xyz = temp[23], src0.w = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[26] MAD temp[27].xyz, src0.xyz, src0.HHH, src0.HHH 29: src0.xyz = temp[17], src0.w = temp[17] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 30: src0.xyz = temp[38], src0.w = temp[38] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[27], src0.w = temp[27] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[1] MAD temp[2].x, src0.x__, src1.z__, src0.0__ 1: src0.xyz = input[1] DP3 temp[0].z, src0.xyz, src0.xyz 2: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 3: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 4: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[0].w, src1.x, src0.1, -srcp.x 5: src0.xyz = temp[0] REPL_ALPHA temp[0].z RSQ, |src0.z| 6: src0.w = temp[0], src1.xyz = const[1] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 7: src0.xyz = input[1], src1.xyz = temp[0] MAD temp[1].xy, src0.xy_, src1.zz_, src0.00_ 8: src0.xyz = temp[2] FRC temp[6].x, src0.x__ 9: src0.xyz = temp[6], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ 10: src0.xyz = temp[6], src0.w = const[1], src1.xyz = temp[2], src2.xyz = temp[7], srcp.xyz = (src1 - src0) MAD temp[2].xy, src2.xy_, src0.ww_, src0.000 MAD temp[0].w, src1.x, src0.1, -srcp.x 11: src0.w = temp[0] MAD temp[2].z, src0.__w, src0.111, src0.000 12: src0.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 13: BEGIN_TEX; 14: TEX temp[6].w, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 15: src0.xyz = const[0], src0.w = temp[6] SEM_WAIT MAD temp[0].z, src0.__w, src0.__x, src0.__0 16: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = input[0] MAD temp[0].xy, src0.xy_, src1.zz_, src2.xy_ 17: BEGIN_TEX; 18: TEX temp[1].xy, temp[0].xy__, 2D[1]; 19: TEX temp[6].xyz, temp[0].xy__, 2D[2]; 20: TEX temp[0], temp[0].xy__, 2D[3] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[6], src1.xyz = temp[1] SEM_WAIT MAD temp[6].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[2].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[6], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 MAD temp[1].w, src2.y, src0.1, src0.0 23: src0.xyz = temp[6], src1.xyz = input[3], src2.xyz = temp[1] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.xyz = temp[6], src1.xyz = input[5], src2.xyz = temp[1] MAD temp[1].xyz, src0.zzz, src1.xyz, src2.xyz 25: src0.xyz = temp[1] DP3 temp[3].x, src0.xyz, src0.xyz 26: src0.xyz = temp[3] RSQ temp[3].w, |src0.x| 27: src0.xyz = temp[1], src0.w = temp[3] MAD temp[1].xyz, src0.xyz, src0.www, src0.000 28: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.HHH, src0.HHH 29: 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 30: src0.xyz = temp[2], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 31: src0.xyz = temp[1], src0.w = temp[2] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 pc=44************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 12, tex_end: 0 (code_addr: 00000300) 0: xyz: t2 c1 t0 bias-> t2.x (00880842) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c1.zzz 0.0 op: 00050380 w: t2.x t2.x t2.x op: 00000000 1: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 2: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 3: xyz: t6 t2 t0 sub-> t7.x (009c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 4: xyz: t6 t2 t0 sub-> (00000086) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t2.x 1.0 -srcp.x op: 000b0883 5: xyz: t0 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: |t0.z| t0.x t0.x op: 05800042 6: xyz: t32 c1 t0 bias-> t2.x (00880840) w: t0 t0 t0 bias-> (00000000) xyz: t0.www c1.zzz 0.0 op: 0005038c w: t32.x t32.x t32.x op: 00000000 7: xyz: t1 t0 t0 bias-> t1.xy (01840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz 0.0 op: 00050380 w: t1.x t1.x t1.x op: 00000000 8: xyz: t2 t0 t0 bias-> t6.x (00980002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 9: xyz: t6 t2 t0 sub-> t7.y (011c0086) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t6.x t6.x t6.x op: 00000000 10: xyz: t6 t2 t7 sub-> t2.xy (01887086) w: c1 t0 t0 bias-> t0.w (00800021) xyz: t7.xyz c1.www 0.0 op: 00250608 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t32 t0 t0 bias-> t2.z (02080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 1.0 0.0 op: 00050a8c w: t32.x t32.x t32.x op: 00000000 12: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 13, tex_offset: 0, alu_end: 1, tex_end: 0 (code_addr: 0000004d) TEX: TEX t6, t0, texture[0] (00008180) 13: xyz: c0 t0 t0 bias-> t0.z (02000020) w: t6 t0 t0 bias-> (00000006) xyz: t6.www c0.xxx 0.0 op: 0005008c w: c0.x c0.x c0.x op: 00000000 14: xyz: t1 t0 t0 bias-> t0.xy (01800001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t0.zzz t0.xyz op: 00020380 w: t1.x t1.x t1.x op: 00000000 NODE 2: alu_offset: 15, tex_offset: 1, alu_end: 10, tex_end: 2 (code_addr: 0044128f) TEX: TEX t1, t0, texture[1] (00008840) TEX t6, t0, texture[2] (00009180) TEX t0, t0, texture[3] (00009800) 15: xyz: t6 t1 t0 bias-> t6.xyz (03980046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t1.x 1.0 0.0 op: 00040883 16: xyz: t6 t4 t1 bias-> t1.xyz (03841106) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t6.xxx t4.xyz 0.0 op: 00050201 w: t1.y 1.0 0.0 op: 00040887 17: xyz: t6 t3 t1 bias-> t1.xyz (038410c6) w: t0 t0 t0 bias-> (00000000) xyz: t6.yyy t3.xyz t1.xyz op: 00020202 w: t6.x t6.x t6.x op: 00000000 18: xyz: t6 t5 t1 bias-> t1.xyz (03841146) w: t0 t0 t0 bias-> (00000000) xyz: t6.zzz t5.xyz t1.xyz op: 00020203 w: t6.x t6.x t6.x op: 00000000 19: xyz: t1 t0 t0 bias-> t3.x (008c0001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.x t1.x t1.x op: 00000000 20: xyz: t3 t0 t0 bias-> (00000003) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xxx t3.xxx t3.xxx op: 00004081 w: |t3.x| t3.x t3.x op: 05800040 21: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t3 t0 t0 bias-> (00000003) xyz: t1.xyz t3.www 0.0 op: 00050600 w: t1.x t1.x t1.x op: 00000000 22: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 0.5 0.5 op: 00058b00 w: t1.x t1.x t1.x op: 00000000 23: 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 24: xyz: t2 t0 t0 bias-> o2.xyz (5c000002) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 25: xyz: t1 t0 t0 bias-> o1.xyz (3c000001) w: t2 t0 t0 bias-> o1.w (03000002) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 0.5000, 255.0000, 0.0039, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: DP3 TEMP[1].x, IN[2].xyzz, IN[2].xyzz 2: RSQ TEMP[2].x, TEMP[1].xxxx 3: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[2].xxxx 4: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].xxxx, IMM[0].xxxx 5: MUL TEMP[3].x, IN[1].xxxx, IMM[0].yyyy 6: FLR TEMP[4].x, TEMP[3].xxxx 7: MOV TEMP[5].x, TEMP[4].xxxx 8: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 9: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 10: FLR TEMP[4].x, TEMP[3].xxxx 11: MOV TEMP[5].y, TEMP[4].xxxx 12: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 13: MOV TEMP[5].z, TEMP[3].xxxx 14: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].zzzz 15: MOV TEMP[2].xyz, TEMP[5].xyzx 16: MOV TEMP[1].w, IMM[0].wwww 17: MOV TEMP[2].w, IMM[0].wwww 18: MOV OUT[0], TEMP[0] 19: MOV OUT[1], TEMP[1] 20: MOV OUT[2], TEMP[2] 21: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: MOV temp[1].w, const[0].wwww; 17: MOV temp[2].w, const[0].wwww; 18: MOV output[0], temp[0]; 19: MOV output[1], temp[1]; 20: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, |temp[1].xxxx|; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FRC temp[4].x, temp[3].xxxx; 7: ADD temp[4].x, temp[3].xxxx, -temp[4]; 8: MOV temp[5].x, temp[4].xxxx; 9: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 10: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 11: FRC temp[4].x, temp[3].xxxx; 12: ADD temp[4].x, temp[3].xxxx, -temp[4]; 13: MOV temp[5].y, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MOV temp[5].z, temp[3].xxxx; 16: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 17: MOV temp[2].xyz, temp[5].xyzx; 18: MOV temp[1].w, const[0].wwww; 19: MOV temp[2].w, const[0].wwww; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: MOV temp[1].w, const[0].___w; 19: MOV temp[2].w, const[0].___w; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: MOV temp[1].w, const[0].___w; 19: MOV temp[2].w, const[0].___w; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: ADD temp[13].x, temp[11].x___, -temp[12].x___; 8: MOV temp[14].x, temp[13].x___; 9: ADD temp[15].x, temp[11].x___, -temp[13].x___; 10: MUL temp[16].x, temp[15].x___, const[0].y___; 11: FRC temp[17].x, temp[16].x___; 12: ADD temp[18].x, temp[16].x___, -temp[17].x___; 13: MOV temp[14].y, temp[18]._x__; 14: ADD temp[19].x, temp[16].x___, -temp[18].x___; 15: MOV temp[20].z, temp[19].__x_; 16: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 17: MOV temp[21].xyz, temp[20].xyz_; 18: MOV temp[10].w, const[0].___w; 19: MOV temp[21].w, const[0].___w; 20: MOV output[0], temp[6]; 21: MOV output[1], temp[10]; 22: MOV output[2], temp[21]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: DP3 temp[7].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[8].x, |temp[7].x___|; 3: MUL temp[9].xyz, input[2].xyz_, temp[8].xxx_; 4: MAD temp[10].xyz, temp[9].xyz_, none.HHH_, none.HHH_; 5: MUL temp[11].x, input[1].x___, const[0].y___; 6: FRC temp[12].x, temp[11].x___; 7: MOV temp[14].x, (temp[11] - temp[12]).x___; 8: ADD temp[15].x, temp[11].x___, -(temp[11] - temp[12]).x___; 9: MUL temp[16].x, temp[15].x___, const[0].y___; 10: FRC temp[17].x, temp[16].x___; 11: MOV temp[14].y, (temp[16] - temp[17])._x__; 12: ADD temp[19].x, temp[16].x___, -(temp[16] - temp[17]).x___; 13: MOV temp[20].z, temp[19].__x_; 14: MUL temp[20].xy, temp[14].xy__, const[0].zz__; 15: MOV temp[21].xyz, temp[20].xyz_; 16: MOV temp[10].w, none.___0; 17: MOV temp[21].w, none.___0; 18: MOV output[0], temp[6]; 19: MOV output[1], temp[10]; 20: MOV output[2], temp[21]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[6], input[0].xy__, 2D[0]; 1: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz 2: src0.xyz = temp[7] REPL_ALPHA temp[8].x RSQ, |src0.x| 3: src0.xyz = input[2], src1.xyz = temp[8] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 4: src0.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src0.HHH, src0.HHH 5: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 6: src0.xyz = temp[11] FRC temp[12].x, src0.x__ 7: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 8: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[15].x, src1.x__, src0.111, -srcp.x__ 9: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.x__, src1.y__, src0.000 10: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].x, src1.x__, src0.111, -srcp.x__ 13: src0.xyz = temp[19] MAD temp[20].z, src0.__x, src0.111, src0.000 14: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 15: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 16: MAD temp[10].w, src0.0, src0.1, src0.0 17: MAD temp[21].w, src0.0, src0.1, src0.0 18: src0.xyz = temp[6], src0.w = temp[6] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 19: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 20: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 MAD temp[21].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz MAD temp[10].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[11], src1.xyz = temp[7] FRC temp[12].x, src0.x__ RSQ temp[8].w, |src1.x| 5: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 6: src0.xyz = input[2], src0.w = temp[8], src1.xyz = temp[8] MAD temp[9].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[12], src1.xyz = temp[11], src2.xyz = temp[9], srcp.xyz = (src1 - src0) MAD temp[10].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[15].w, src1.x, src0.1, -srcp.x 8: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.w__, src1.y__, src0.000 9: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 10: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 13: src0.xyz = temp[19], src0.w = temp[19] MAD temp[20].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 15: src0.xyz = temp[6], src0.w = temp[6] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src1.xyz = const[0] MAD temp[11].x, src0.x__, src1.y__, src0.000 MAD temp[21].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[7].x, src0.xyz, src0.xyz MAD temp[10].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[11], src1.xyz = temp[7] FRC temp[12].x, src0.x__ RSQ temp[8].w, |src1.x| 5: src0.xyz = temp[12], src1.xyz = temp[11], srcp.xyz = (src1 - src0) MAD temp[14].x, srcp.x__, src0.111, src0.000 6: src0.xyz = input[2], src0.w = temp[8] MAD temp[9].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[12], src1.xyz = temp[11], src2.xyz = temp[9], srcp.xyz = (src1 - src0) MAD temp[10].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[15].w, src1.x, src0.1, -srcp.x 8: src0.w = temp[15], src1.xyz = const[0] MAD temp[16].x, src0.w__, src1.y__, src0.000 9: src0.xyz = temp[16] FRC temp[17].x, src0.x__ 10: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[14].y, srcp._x_, src0.111, src0.000 11: src0.xyz = temp[17], src1.xyz = temp[16], srcp.xyz = (src1 - src0) MAD temp[19].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[14], src1.xyz = const[0] MAD temp[20].xy, src0.xy_, src1.zz_, src0.000 13: src0.w = temp[19] MAD temp[20].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[20] MAD temp[21].xyz, src0.xyz, src0.111, src0.000 15: src0.xyz = temp[6], src0.w = temp[6] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[10], src0.w = temp[10] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[21], src0.w = temp[21] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].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 = input[1], src1.xyz = const[0] MAD temp[1].x, src0.x__, src1.y__, src0.0__ MAD temp[1].w, src0.0, src0.1, src0.0 3: src0.xyz = input[2] DP3 temp[1].y, src0.xyz, src0.xyz MAD temp[2].w, src0.0, src0.1, src0.0 4: src0.xyz = temp[1], src1.xyz = temp[1] FRC temp[3].x, src0.x__ RSQ temp[3].w, |src1.y| 5: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].x, srcp.x__, src0.11_, src0.00_ 6: src0.xyz = input[2], src0.w = temp[3] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 7: src0.xyz = temp[3], src1.xyz = temp[1], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[1].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[3].w, src1.x, src0.1, -srcp.x 8: src0.w = temp[3], src1.xyz = const[0] MAD temp[2].x, src0.w__, src1.y__, src0.0__ 9: src0.xyz = temp[2] FRC temp[3].x, src0.x__ 10: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[4].y, srcp._x_, src0.11_, src0.00_ 11: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[3].w, src1.x, src0.1, -srcp.x 12: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src1.zz_, src0.000 13: src0.w = temp[3] MAD temp[2].z, src0.__w, src0.111, src0.000 14: src0.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 15: 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 16: src0.xyz = temp[1], src0.w = temp[2] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[2], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=45************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 15, tex_end: 0 (code_addr: 004003c0) TEX: TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.yyy 0.0 op: 00050300 w: 0.0 1.0 0.0 op: 00040890 1: xyz: t2 t0 t0 bias-> t1.y (01040002) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xyz t2.xyz t2.xxx op: 00804000 w: 0.0 1.0 0.0 op: 00040890 2: xyz: t1 t1 t0 bias-> t3.x (008c0041) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: |t1.y| t1.x t1.x op: 05800044 3: xyz: t3 t1 t0 sub-> t4.x (00900043) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t3.x t3.x t3.x op: 00000000 4: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t3 t0 t0 bias-> (00000003) xyz: t2.xyz t3.www 0.0 op: 00050600 w: t2.x t2.x t2.x op: 00000000 5: xyz: t3 t1 t2 sub-> t1.xyz (03842043) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t2.xyz 0.5 0.5 op: 00258b08 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t3 t0 t0 bias-> (00000003) xyz: t3.www c0.yyy 0.0 op: 0005030c w: t0.x t0.x t0.x op: 00000000 7: xyz: t2 t0 t0 bias-> t3.x (008c0002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 8: xyz: t3 t2 t0 sub-> t4.y (01100083) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t3.x t3.x t3.x op: 00000000 9: xyz: t3 t2 t0 sub-> (00000083) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xxx t3.xxx t3.xxx op: 00204081 w: t2.x 1.0 -srcp.x op: 000b0883 10: xyz: t4 c0 t0 bias-> t2.xy (01880804) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c0.zzz 0.0 op: 00050380 w: t4.x t4.x t4.x op: 00000000 11: xyz: t0 t0 t0 bias-> t2.z (02080000) w: t3 t0 t0 bias-> (00000003) xyz: t3.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 12: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.x t2.x t2.x op: 00000000 13: 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 14: xyz: t1 t0 t0 bias-> o1.xyz (3c000001) w: t2 t0 t0 bias-> o1.w (03000002) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 15: xyz: t2 t0 t0 bias-> o2.xyz (5c000002) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 0.5000, 255.0000, 0.0039, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D 1: DP3 TEMP[1].x, IN[2].xyzz, IN[2].xyzz 2: RSQ TEMP[2].x, TEMP[1].xxxx 3: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[2].xxxx 4: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].xxxx, IMM[0].xxxx 5: MUL TEMP[3].x, IN[1].xxxx, IMM[0].yyyy 6: FLR TEMP[4].x, TEMP[3].xxxx 7: MOV TEMP[5].x, TEMP[4].xxxx 8: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 9: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].yyyy 10: FLR TEMP[4].x, TEMP[3].xxxx 11: MOV TEMP[5].y, TEMP[4].xxxx 12: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 13: MOV TEMP[5].z, TEMP[3].xxxx 14: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].zzzz 15: MOV TEMP[2].xyz, TEMP[5].xyzx 16: TEX TEMP[3].xy, IN[0].xyyy, SAMP[0], 2D 17: MOV TEMP[1].w, TEMP[3].xxxx 18: MOV TEMP[2].w, TEMP[3].yyyy 19: MOV OUT[0], TEMP[0] 20: MOV OUT[1], TEMP[1] 21: MOV OUT[2], TEMP[2] 22: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[3].xy, input[0].xyyy, 2D[0]; 17: MOV temp[1].w, temp[3].xxxx; 18: MOV temp[2].w, temp[3].yyyy; 19: MOV output[0], temp[0]; 20: MOV output[1], temp[1]; 21: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, temp[1].xxxx; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FLR temp[4].x, temp[3].xxxx; 7: MOV temp[5].x, temp[4].xxxx; 8: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 10: FLR temp[4].x, temp[3].xxxx; 11: MOV temp[5].y, temp[4].xxxx; 12: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 13: MOV temp[5].z, temp[3].xxxx; 14: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 15: MOV temp[2].xyz, temp[5].xyzx; 16: TEX temp[6], input[0].xyyy, 2D[0]; 17: MOV temp[3].xy, temp[6]; 18: MOV temp[1].w, temp[3].xxxx; 19: MOV temp[2].w, temp[3].yyyy; 20: MOV output[0], temp[0]; 21: MOV output[1], temp[1]; 22: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: DP3 temp[1].x, input[2].xyzz, input[2].xyzz; 2: RSQ temp[2].x, |temp[1].xxxx|; 3: MUL temp[3].xyz, input[2].xyzz, temp[2].xxxx; 4: MAD temp[1].xyz, temp[3].xyzz, const[0].xxxx, const[0].xxxx; 5: MUL temp[3].x, input[1].xxxx, const[0].yyyy; 6: FRC temp[4].x, temp[3].xxxx; 7: ADD temp[4].x, temp[3].xxxx, -temp[4]; 8: MOV temp[5].x, temp[4].xxxx; 9: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 10: MUL temp[3].x, temp[3].xxxx, const[0].yyyy; 11: FRC temp[4].x, temp[3].xxxx; 12: ADD temp[4].x, temp[3].xxxx, -temp[4]; 13: MOV temp[5].y, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MOV temp[5].z, temp[3].xxxx; 16: MUL temp[5].xy, temp[5].xyyy, const[0].zzzz; 17: MOV temp[2].xyz, temp[5].xyzx; 18: TEX temp[6], input[0].xyyy, 2D[0]; 19: MOV temp[3].xy, temp[6]; 20: MOV temp[1].w, temp[3].xxxx; 21: MOV temp[2].w, temp[3].yyyy; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: TEX temp[6].xy, input[0].xy__, 2D[0]; 19: MOV temp[3].xy, temp[6].xy__; 20: MOV temp[1].w, temp[3].___x; 21: MOV temp[2].w, temp[3].___y; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: DP3 temp[1].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[2].x, |temp[1].x___|; 3: MUL temp[3].xyz, input[2].xyz_, temp[2].xxx_; 4: MAD temp[1].xyz, temp[3].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[3].x, input[1].x___, const[0].y___; 6: FRC temp[4].x, temp[3].x___; 7: ADD temp[4].x, temp[3].x___, -temp[4].x___; 8: MOV temp[5].x, temp[4].x___; 9: ADD temp[3].x, temp[3].x___, -temp[4].x___; 10: MUL temp[3].x, temp[3].x___, const[0].y___; 11: FRC temp[4].x, temp[3].x___; 12: ADD temp[4].x, temp[3].x___, -temp[4].x___; 13: MOV temp[5].y, temp[4]._x__; 14: ADD temp[3].x, temp[3].x___, -temp[4].x___; 15: MOV temp[5].z, temp[3].__x_; 16: MUL temp[5].xy, temp[5].xy__, const[0].zz__; 17: MOV temp[2].xyz, temp[5].xyz_; 18: TEX temp[6].xy, input[0].xy__, 2D[0]; 19: MOV temp[3].xy, temp[6].xy__; 20: MOV temp[1].w, temp[3].___x; 21: MOV temp[2].w, temp[3].___y; 22: MOV output[0], temp[0]; 23: MOV output[1], temp[1]; 24: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, const[0].xxx_, const[0].xxx_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: ADD temp[14].x, temp[12].x___, -temp[13].x___; 8: MOV temp[15].x, temp[14].x___; 9: ADD temp[16].x, temp[12].x___, -temp[14].x___; 10: MUL temp[17].x, temp[16].x___, const[0].y___; 11: FRC temp[18].x, temp[17].x___; 12: ADD temp[19].x, temp[17].x___, -temp[18].x___; 13: MOV temp[15].y, temp[19]._x__; 14: ADD temp[20].x, temp[17].x___, -temp[19].x___; 15: MOV temp[21].z, temp[20].__x_; 16: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 17: MOV temp[22].xyz, temp[21].xyz_; 18: TEX temp[23].xy, input[0].xy__, 2D[0]; 19: MOV temp[24].xy, temp[23].xy__; 20: MOV temp[11].w, temp[24].___x; 21: MOV temp[22].w, temp[24].___y; 22: MOV output[0], temp[7]; 23: MOV output[1], temp[11]; 24: MOV output[2], temp[22]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; CONST[0] = { 0.5000 255.0000 0.0039 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: DP3 temp[8].x, input[2].xyz_, input[2].xyz_; 2: RSQ temp[9].x, |temp[8].x___|; 3: MUL temp[10].xyz, input[2].xyz_, temp[9].xxx_; 4: MAD temp[11].xyz, temp[10].xyz_, none.HHH_, none.HHH_; 5: MUL temp[12].x, input[1].x___, const[0].y___; 6: FRC temp[13].x, temp[12].x___; 7: MOV temp[15].x, (temp[12] - temp[13]).x___; 8: ADD temp[16].x, temp[12].x___, -(temp[12] - temp[13]).x___; 9: MUL temp[17].x, temp[16].x___, const[0].y___; 10: FRC temp[18].x, temp[17].x___; 11: MOV temp[15].y, (temp[17] - temp[18])._x__; 12: ADD temp[20].x, temp[17].x___, -(temp[17] - temp[18]).x___; 13: MOV temp[21].z, temp[20].__x_; 14: MUL temp[21].xy, temp[15].xy__, const[0].zz__; 15: MOV temp[22].xyz, temp[21].xyz_; 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: MOV temp[11].w, temp[23].___x; 18: MOV temp[22].w, temp[23].___y; 19: MOV output[0], temp[7]; 20: MOV output[1], temp[11]; 21: MOV output[2], temp[22]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[7], input[0].xy__, 2D[1]; 1: src0.xyz = input[2] DP3 temp[8].x, src0.xyz, src0.xyz 2: src0.xyz = temp[8] REPL_ALPHA temp[9].x RSQ, |src0.x| 3: src0.xyz = input[2], src1.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src1.xxx, src0.000 4: src0.xyz = temp[10] MAD temp[11].xyz, src0.xyz, src0.HHH, src0.HHH 5: src0.xyz = input[1], src1.xyz = const[0] MAD temp[12].x, src0.x__, src1.y__, src0.000 6: src0.xyz = temp[12] FRC temp[13].x, src0.x__ 7: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[16].x, src1.x__, src0.111, -srcp.x__ 9: src0.xyz = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.x__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].x, src1.x__, src0.111, -srcp.x__ 13: src0.xyz = temp[20] MAD temp[21].z, src0.__x, src0.111, src0.000 14: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: TEX temp[23].xy, input[0].xy__, 2D[0]; 17: src0.xyz = temp[23] MAD temp[11].w, src0.x, src0.1, src0.0 18: src0.xyz = temp[23] MAD temp[22].w, src0.y, src0.1, src0.0 19: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 20: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 21: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[23].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[23] SEM_WAIT MAD temp[12].x, src0.x__, src1.y__, src0.000 MAD temp[22].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[23] DP3 temp[8].x, src0.xyz, src0.xyz MAD temp[11].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[12], src1.xyz = temp[8] FRC temp[13].x, src0.x__ RSQ temp[9].w, |src1.x| 6: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 7: src0.xyz = input[2], src0.w = temp[9], src1.xyz = temp[9] MAD temp[10].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], src2.xyz = temp[10], srcp.xyz = (src1 - src0) MAD temp[11].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[16].w, src1.x, src0.1, -srcp.x 9: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.w__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 14: src0.xyz = temp[20], src0.w = temp[20] MAD temp[21].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[23].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[23] SEM_WAIT MAD temp[12].x, src0.x__, src1.y__, src0.000 MAD temp[22].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[23] DP3 temp[8].x, src0.xyz, src0.xyz MAD temp[11].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[12], src1.xyz = temp[8] FRC temp[13].x, src0.x__ RSQ temp[9].w, |src1.x| 6: src0.xyz = temp[13], src1.xyz = temp[12], srcp.xyz = (src1 - src0) MAD temp[15].x, srcp.x__, src0.111, src0.000 7: src0.xyz = input[2], src0.w = temp[9] MAD temp[10].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[13], src1.xyz = temp[12], src2.xyz = temp[10], srcp.xyz = (src1 - src0) MAD temp[11].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[16].w, src1.x, src0.1, -srcp.x 9: src0.w = temp[16], src1.xyz = const[0] MAD temp[17].x, src0.w__, src1.y__, src0.000 10: src0.xyz = temp[17] FRC temp[18].x, src0.x__ 11: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[15].y, srcp._x_, src0.111, src0.000 12: src0.xyz = temp[18], src1.xyz = temp[17], srcp.xyz = (src1 - src0) MAD temp[20].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[21].xy, src0.xy_, src1.zz_, src0.000 14: src0.w = temp[20] MAD temp[21].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[21] MAD temp[22].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[7], src0.w = temp[7] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[11], src0.w = temp[11] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[22], src0.w = temp[22] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[0].xy__, 2D[1]; 2: TEX temp[0].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[0] SEM_WAIT MAD temp[1].x, src0.x__, src1.y__, src0.0__ MAD temp[1].w, src2.y, src0.1, src0.0 4: src0.xyz = input[2], src1.xyz = temp[0] DP3 temp[0].x, src0.xyz, src0.xyz MAD temp[0].w, src1.x, src0.1, src0.0 5: src0.xyz = temp[1], src1.xyz = temp[0] FRC temp[0].x, src0.x__ RSQ temp[2].w, |src1.x| 6: src0.xyz = temp[0], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].x, srcp.x__, src0.11_, src0.00_ 7: src0.xyz = input[2], src0.w = temp[2] MAD temp[2].xyz, src0.xyz, src0.www, src0.000 8: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[0].xyz, src2.xyz, src0.HHH, src0.HHH MAD temp[2].w, src1.x, src0.1, -srcp.x 9: src0.w = temp[2], src1.xyz = const[0] MAD temp[1].x, src0.w__, src1.y__, src0.0__ 10: src0.xyz = temp[1] FRC temp[2].x, src0.x__ 11: src0.xyz = temp[2], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[4].y, srcp._x_, src0.11_, src0.00_ 12: src0.xyz = temp[2], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[2].w, src1.x, src0.1, -srcp.x 13: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[1].xy, src0.xy_, src1.zz_, src0.000 14: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.111, src0.000 15: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 16: src0.xyz = temp[3], src0.w = temp[3] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 17: src0.xyz = temp[0], src0.w = temp[0] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 18: src0.xyz = temp[1], src0.w = temp[1] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=46************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 15, tex_end: 1 (code_addr: 004203c0) TEX: TEX t3, t0, texture[1] (000088c0) TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.yyy 0.0 op: 00050300 w: t0.y 1.0 0.0 op: 00040887 1: xyz: t2 t0 t0 bias-> t0.x (00800002) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t2.xyz t2.xyz t2.xxx op: 00804000 w: t0.x 1.0 0.0 op: 00040883 2: xyz: t1 t0 t0 bias-> t0.x (00800001) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: |t0.x| t1.x t1.x op: 05800043 3: xyz: t0 t1 t0 sub-> t4.x (00900040) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t0.x t0.x t0.x op: 00000000 4: xyz: t2 t0 t0 bias-> t2.xyz (03880002) w: t2 t0 t0 bias-> (00000002) xyz: t2.xyz t2.www 0.0 op: 00050600 w: t2.x t2.x t2.x op: 00000000 5: xyz: t0 t1 t2 sub-> t0.xyz (03802040) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xyz 0.5 0.5 op: 00258b08 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 c0 t0 bias-> t1.x (00840800) w: t2 t0 t0 bias-> (00000002) xyz: t2.www c0.yyy 0.0 op: 0005030c w: t0.x t0.x t0.x op: 00000000 7: xyz: t1 t0 t0 bias-> t2.x (00880001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xxx t1.xxx op: 84804080 NOP w: t1.x t1.x t1.x op: 00000000 8: xyz: t2 t1 t0 sub-> t4.y (01100042) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: t2.x t2.x t2.x op: 00000000 9: xyz: t2 t1 t0 sub-> (00000042) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t2.xxx t2.xxx t2.xxx op: 00204081 w: t1.x 1.0 -srcp.x op: 000b0883 10: xyz: t4 c0 t0 bias-> t1.xy (01840804) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz c0.zzz 0.0 op: 00050380 w: t4.x t4.x t4.x op: 00000000 11: xyz: t0 t0 t0 bias-> t1.z (02040000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 12: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 13: xyz: t3 t0 t0 bias-> o0.xyz (1c000003) w: t3 t0 t0 bias-> o0.w (01000003) xyz: t3.xyz 1.0 0.0 op: 00050a80 w: t3.w 1.0 0.0 op: 00040889 14: xyz: t0 t0 t0 bias-> o1.xyz (3c000000) w: t0 t0 t0 bias-> o1.w (03000000) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 15: xyz: t1 t0 t0 bias-> o2.xyz (5c000001) w: t1 t0 t0 bias-> o2.w (05000001) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL IN[3], GENERIC[14], PERSPECTIVE DCL IN[4], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL OUT[1], COLOR[1] DCL OUT[2], COLOR[2] DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { -0.5000, 0.5000, 255.0000, 0.0039} 0: TEX TEMP[0], IN[0].xyyy, SAMP[2], 2D 1: TEX TEMP[1].xyz, IN[0].xyyy, SAMP[1], 2D 2: ADD TEMP[2].xyz, TEMP[1].xyzz, IMM[0].xxxx 3: MUL TEMP[3].xyz, TEMP[2].xxxx, IN[3].xyzz 4: MAD TEMP[3].xyz, TEMP[2].yyyy, IN[2].xyzz, TEMP[3].xyzz 5: MAD TEMP[3].xyz, TEMP[2].zzzz, IN[4].xyzz, TEMP[3].xyzz 6: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 7: RSQ TEMP[4].x, TEMP[4].xxxx 8: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[4].xxxx 9: MAD TEMP[1].xyz, TEMP[3].xyzz, IMM[0].yyyy, IMM[0].yyyy 10: MUL TEMP[3].x, IN[1].xxxx, IMM[0].zzzz 11: FLR TEMP[4].x, TEMP[3].xxxx 12: MOV TEMP[5].x, TEMP[4].xxxx 13: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 14: MUL TEMP[3].x, TEMP[3].xxxx, IMM[0].zzzz 15: FLR TEMP[4].x, TEMP[3].xxxx 16: MOV TEMP[5].y, TEMP[4].xxxx 17: ADD TEMP[3].x, TEMP[3].xxxx, -TEMP[4].xxxx 18: MOV TEMP[5].z, TEMP[3].xxxx 19: MUL TEMP[5].xy, TEMP[5].xyyy, IMM[0].wwww 20: MOV TEMP[2].xyz, TEMP[5].xyzx 21: TEX TEMP[3].xy, IN[0].xyyy, SAMP[0], 2D 22: MOV TEMP[1].w, TEMP[3].xxxx 23: MOV TEMP[2].w, TEMP[3].yyyy 24: MOV OUT[0], TEMP[0] 25: MOV OUT[1], TEMP[1] 26: MOV OUT[2], TEMP[2] 27: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[1].xyz, input[0].xyyy, 2D[1]; 2: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 3: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 4: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 5: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 6: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 7: RSQ temp[4].x, temp[4].xxxx; 8: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 9: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 10: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 11: FLR temp[4].x, temp[3].xxxx; 12: MOV temp[5].x, temp[4].xxxx; 13: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 14: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 15: FLR temp[4].x, temp[3].xxxx; 16: MOV temp[5].y, temp[4].xxxx; 17: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 18: MOV temp[5].z, temp[3].xxxx; 19: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 20: MOV temp[2].xyz, temp[5].xyzx; 21: TEX temp[3].xy, input[0].xyyy, 2D[0]; 22: MOV temp[1].w, temp[3].xxxx; 23: MOV temp[2].w, temp[3].yyyy; 24: MOV output[0], temp[0]; 25: MOV output[1], temp[1]; 26: MOV output[2], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, temp[4].xxxx; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FLR temp[4].x, temp[3].xxxx; 13: MOV temp[5].x, temp[4].xxxx; 14: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 15: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 16: FLR temp[4].x, temp[3].xxxx; 17: MOV temp[5].y, temp[4].xxxx; 18: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 19: MOV temp[5].z, temp[3].xxxx; 20: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 21: MOV temp[2].xyz, temp[5].xyzx; 22: TEX temp[7], input[0].xyyy, 2D[0]; 23: MOV temp[3].xy, temp[7]; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[2].w, temp[3].yyyy; 26: MOV output[0], temp[0]; 27: MOV output[1], temp[1]; 28: MOV output[2], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[2]; 1: TEX temp[6], input[0].xyyy, 2D[1]; 2: MOV temp[1].xyz, temp[6]; 3: ADD temp[2].xyz, temp[1].xyzz, const[0].xxxx; 4: MUL temp[3].xyz, temp[2].xxxx, input[3].xyzz; 5: MAD temp[3].xyz, temp[2].yyyy, input[2].xyzz, temp[3].xyzz; 6: MAD temp[3].xyz, temp[2].zzzz, input[4].xyzz, temp[3].xyzz; 7: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 8: RSQ temp[4].x, |temp[4].xxxx|; 9: MUL temp[3].xyz, temp[3].xyzz, temp[4].xxxx; 10: MAD temp[1].xyz, temp[3].xyzz, const[0].yyyy, const[0].yyyy; 11: MUL temp[3].x, input[1].xxxx, const[0].zzzz; 12: FRC temp[4].x, temp[3].xxxx; 13: ADD temp[4].x, temp[3].xxxx, -temp[4]; 14: MOV temp[5].x, temp[4].xxxx; 15: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 16: MUL temp[3].x, temp[3].xxxx, const[0].zzzz; 17: FRC temp[4].x, temp[3].xxxx; 18: ADD temp[4].x, temp[3].xxxx, -temp[4]; 19: MOV temp[5].y, temp[4].xxxx; 20: ADD temp[3].x, temp[3].xxxx, -temp[4].xxxx; 21: MOV temp[5].z, temp[3].xxxx; 22: MUL temp[5].xy, temp[5].xyyy, const[0].wwww; 23: MOV temp[2].xyz, temp[5].xyzx; 24: TEX temp[7], input[0].xyyy, 2D[0]; 25: MOV temp[3].xy, temp[7]; 26: MOV temp[1].w, temp[3].xxxx; 27: MOV temp[2].w, temp[3].yyyy; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[2]; 1: TEX temp[6].xyz, input[0].xy__, 2D[1]; 2: MOV temp[1].xyz, temp[6].xyz_; 3: ADD temp[2].xyz, temp[1].xyz_, const[0].xxx_; 4: MUL temp[3].xyz, temp[2].xxx_, input[3].xyz_; 5: MAD temp[3].xyz, temp[2].yyy_, input[2].xyz_, temp[3].xyz_; 6: MAD temp[3].xyz, temp[2].zzz_, input[4].xyz_, temp[3].xyz_; 7: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 8: RSQ temp[4].x, |temp[4].x___|; 9: MUL temp[3].xyz, temp[3].xyz_, temp[4].xxx_; 10: MAD temp[1].xyz, temp[3].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[3].x, input[1].x___, const[0].z___; 12: FRC temp[4].x, temp[3].x___; 13: ADD temp[4].x, temp[3].x___, -temp[4].x___; 14: MOV temp[5].x, temp[4].x___; 15: ADD temp[3].x, temp[3].x___, -temp[4].x___; 16: MUL temp[3].x, temp[3].x___, const[0].z___; 17: FRC temp[4].x, temp[3].x___; 18: ADD temp[4].x, temp[3].x___, -temp[4].x___; 19: MOV temp[5].y, temp[4]._x__; 20: ADD temp[3].x, temp[3].x___, -temp[4].x___; 21: MOV temp[5].z, temp[3].__x_; 22: MUL temp[5].xy, temp[5].xy__, const[0].ww__; 23: MOV temp[2].xyz, temp[5].xyz_; 24: TEX temp[7].xy, input[0].xy__, 2D[0]; 25: MOV temp[3].xy, temp[7].xy__; 26: MOV temp[1].w, temp[3].___x; 27: MOV temp[2].w, temp[3].___y; 28: MOV output[0], temp[0]; 29: MOV output[1], temp[1]; 30: MOV output[2], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: MOV temp[10].xyz, temp[9].xyz_; 3: ADD temp[11].xyz, temp[10].xyz_, const[0].xxx_; 4: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 5: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 6: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 7: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 8: RSQ temp[16].x, |temp[15].x___|; 9: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 10: MAD temp[18].xyz, temp[17].xyz_, const[0].yyy_, const[0].yyy_; 11: MUL temp[19].x, input[1].x___, const[0].z___; 12: FRC temp[20].x, temp[19].x___; 13: ADD temp[21].x, temp[19].x___, -temp[20].x___; 14: MOV temp[22].x, temp[21].x___; 15: ADD temp[23].x, temp[19].x___, -temp[21].x___; 16: MUL temp[24].x, temp[23].x___, const[0].z___; 17: FRC temp[25].x, temp[24].x___; 18: ADD temp[26].x, temp[24].x___, -temp[25].x___; 19: MOV temp[22].y, temp[26]._x__; 20: ADD temp[27].x, temp[24].x___, -temp[26].x___; 21: MOV temp[28].z, temp[27].__x_; 22: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 23: MOV temp[29].xyz, temp[28].xyz_; 24: TEX temp[30].xy, input[0].xy__, 2D[0]; 25: MOV temp[31].xy, temp[30].xy__; 26: MOV temp[18].w, temp[31].___x; 27: MOV temp[29].w, temp[31].___y; 28: MOV output[0], temp[8]; 29: MOV output[1], temp[18]; 30: MOV output[2], temp[29]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; CONST[0] = { -0.5000 0.5000 255.0000 0.0039 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: ADD temp[11].xyz, temp[9].xyz_, none.-H-H-H_; 3: MUL temp[12].xyz, temp[11].xxx_, input[3].xyz_; 4: MAD temp[13].xyz, temp[11].yyy_, input[2].xyz_, temp[12].xyz_; 5: MAD temp[14].xyz, temp[11].zzz_, input[4].xyz_, temp[13].xyz_; 6: DP3 temp[15].x, temp[14].xyz_, temp[14].xyz_; 7: RSQ temp[16].x, |temp[15].x___|; 8: MUL temp[17].xyz, temp[14].xyz_, temp[16].xxx_; 9: MAD temp[18].xyz, temp[17].xyz_, none.HHH_, none.HHH_; 10: MUL temp[19].x, input[1].x___, const[0].z___; 11: FRC temp[20].x, temp[19].x___; 12: MOV temp[22].x, (temp[19] - temp[20]).x___; 13: ADD temp[23].x, temp[19].x___, -(temp[19] - temp[20]).x___; 14: MUL temp[24].x, temp[23].x___, const[0].z___; 15: FRC temp[25].x, temp[24].x___; 16: MOV temp[22].y, (temp[24] - temp[25])._x__; 17: ADD temp[27].x, temp[24].x___, -(temp[24] - temp[25]).x___; 18: MOV temp[28].z, temp[27].__x_; 19: MUL temp[28].xy, temp[22].xy__, const[0].ww__; 20: MOV temp[29].xyz, temp[28].xyz_; 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: MOV temp[18].w, temp[30].___x; 23: MOV temp[29].w, temp[30].___y; 24: MOV output[0], temp[8]; 25: MOV output[1], temp[18]; 26: MOV output[2], temp[29]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[8], input[0].xy__, 2D[2]; 1: TEX temp[9].xyz, input[0].xy__, 2D[1]; 2: src0.xyz = temp[9] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH 3: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 4: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 5: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 6: src0.xyz = temp[14] DP3 temp[15].x, src0.xyz, src0.xyz 7: src0.xyz = temp[15] REPL_ALPHA temp[16].x RSQ, |src0.x| 8: src0.xyz = temp[14], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src1.xxx, src0.000 9: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 10: src0.xyz = input[1], src1.xyz = const[0] MAD temp[19].x, src0.x__, src1.z__, src0.000 11: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 12: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 13: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].x, src1.x__, src0.111, -srcp.x__ 14: src0.xyz = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.x__, src1.z__, src0.000 15: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 16: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 17: src0.xyz = temp[25], src1.xyz = temp[24], srcp.xyz = (src1 - src0) MAD temp[27].x, src1.x__, src0.111, -srcp.x__ 18: src0.xyz = temp[27] MAD temp[28].z, src0.__x, src0.111, src0.000 19: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: TEX temp[30].xy, input[0].xy__, 2D[0]; 22: src0.xyz = temp[30] MAD temp[18].w, src0.x, src0.1, src0.0 23: src0.xyz = temp[30] MAD temp[29].w, src0.y, src0.1, src0.0 24: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 25: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 26: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[23], src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.xyz = temp[27], src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16], src1.xyz = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8], input[0].xy__, 2D[2]; 2: TEX temp[9].xyz, input[0].xy__, 2D[1]; 3: TEX temp[30].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[30] SEM_WAIT MAD temp[19].x, src0.x__, src1.z__, src0.000 MAD temp[18].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = temp[30] MAD temp[11].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[29].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[19] FRC temp[20].x, src0.x__ 7: src0.xyz = temp[11], src1.xyz = input[3] MAD temp[12].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[22].x, srcp.x__, src0.111, src0.000 9: src0.xyz = temp[20], src1.xyz = temp[19], srcp.xyz = (src1 - src0) MAD temp[23].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[11], src1.xyz = input[2], src2.xyz = temp[12] MAD temp[13].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[23], src1.xyz = const[0] MAD temp[24].x, src0.w__, src1.z__, src0.000 12: src0.xyz = temp[11], src1.xyz = input[4], src2.xyz = temp[13] MAD temp[14].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 14: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[14], srcp.xyz = (src1 - src0) DP3 temp[15].x, src2.xyz, src2.xyz MAD temp[27].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[25], src1.xyz = temp[24], src2.xyz = temp[15], srcp.xyz = (src1 - src0) MAD temp[22].y, srcp._x_, src0.111, src0.000 RSQ temp[16].w, |src2.x| 16: src0.w = temp[27] MAD temp[28].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[14], src0.w = temp[16] MAD temp[17].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[22], src0.w = const[0] MAD temp[28].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[17] MAD temp[18].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[8], src0.w = temp[8] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[29], src0.w = temp[29] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[0].xy__, 2D[2]; 2: TEX temp[6].xyz, input[0].xy__, 2D[1]; 3: TEX temp[0].xy, input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[1], src1.xyz = const[0], src2.xyz = temp[0] SEM_WAIT MAD temp[1].x, src0.x__, src1.z__, src0.0__ MAD temp[1].w, src2.x, src0.1, src0.0 5: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, -src0.HHH MAD temp[0].w, src1.y, src0.1, src0.0 6: src0.xyz = temp[1] FRC temp[6].x, src0.x__ 7: src0.xyz = temp[0], src1.xyz = input[3] MAD temp[3].xyz, src0.xxx, src1.xyz, src0.000 8: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 9: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[2].w, src1.x, src0.1, -srcp.x 10: src0.xyz = temp[0], src1.xyz = input[2], src2.xyz = temp[3] MAD temp[1].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.w = temp[2], src1.xyz = const[0] MAD temp[2].x, src0.w__, src1.z__, src0.0__ 12: src0.xyz = temp[0], src1.xyz = input[4], src2.xyz = temp[1] MAD temp[0].xyz, src0.zzz, src1.xyz, src2.xyz 13: src0.xyz = temp[2] FRC temp[1].x, src0.x__ 14: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[0], srcp.xyz = (src1 - src0) DP3 temp[1].y, src2.xyz, src2.xyz MAD temp[2].w, src1.x, src0.1, -srcp.x 15: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[1], srcp.xyz = (src1 - src0) MAD temp[7].y, srcp._x_, src0.11_, src0.00_ RSQ temp[3].w, |src2.y| 16: src0.w = temp[2] MAD temp[1].z, src0.__w, src0.111, src0.000 17: src0.xyz = temp[0], src0.w = temp[3] MAD temp[0].xyz, src0.xyz, src0.www, src0.000 18: src0.xyz = temp[7], src0.w = const[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.000 19: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.HHH, src0.HHH 20: src0.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src0.111, src0.000 21: src0.xyz = temp[5], src0.w = temp[5] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 22: src0.xyz = temp[0], src0.w = temp[1] MAD color[1].xyz, src0.xyz, src0.111, src0.000 MAD color[1].w, src0.w, src0.1, src0.0 23: src0.xyz = temp[1], src0.w = temp[0] MAD color[2].xyz, src0.xyz, src0.111, src0.000 MAD color[2].w, src0.w, src0.1, src0.0 pc=47************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 19, tex_end: 2 (code_addr: 004404c0) TEX: TEX t5, t0, texture[2] (00009140) TEX t6, t0, texture[1] (00008980) TEX t0, t0, texture[0] (00008000) 0: xyz: t1 c0 t0 bias-> t1.x (00840801) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c0.zzz 0.0 op: 00050380 w: t0.x 1.0 0.0 op: 00040886 1: xyz: t6 t0 t0 bias-> t0.xyz (03800006) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t6.xyz 1.0 -0.5 op: 000d8a80 w: t0.y 1.0 0.0 op: 00040884 2: xyz: t1 t0 t0 bias-> t6.x (00980001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz t1.xxx t1.xxx op: 04804080 w: t1.x t1.x t1.x op: 00000000 3: xyz: t0 t3 t0 bias-> t3.xyz (038c00c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t3.xyz 0.0 op: 00050201 w: t0.x t0.x t0.x op: 00000000 4: xyz: t6 t1 t0 sub-> t7.x (009c0046) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t6.x t6.x t6.x op: 00000000 5: xyz: t6 t1 t0 sub-> (00000046) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t6.xxx t6.xxx t6.xxx op: 00204081 w: t1.x 1.0 -srcp.x op: 000b0883 6: xyz: t0 t2 t3 bias-> t1.xyz (03843080) w: t0 t0 t0 bias-> (00000000) xyz: t0.yyy t2.xyz t3.xyz op: 00020202 w: t0.x t0.x t0.x op: 00000000 7: xyz: t0 c0 t0 bias-> t2.x (00880800) w: t2 t0 t0 bias-> (00000002) xyz: t2.www c0.zzz 0.0 op: 0005038c w: t0.x t0.x t0.x op: 00000000 8: xyz: t0 t4 t1 bias-> t0.xyz (03801100) w: t0 t0 t0 bias-> (00000000) xyz: t0.zzz t4.xyz t1.xyz op: 00020203 w: t0.x t0.x t0.x op: 00000000 9: xyz: t2 t0 t0 bias-> t1.x (00840002) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t2.xxx t2.xxx op: 84804080 NOP w: t2.x t2.x t2.x op: 00000000 10: xyz: t1 t2 t0 sub-> t1.y (01040081) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz t0.xyz t1.xxx op: 00a04408 w: t2.x 1.0 -srcp.x op: 000b0883 11: xyz: t1 t2 t1 sub-> t7.y (011c1081) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: srcp.xxx 1.0 0.0 op: 00250a90 w: |t1.y| t1.x t1.x op: 05800047 12: xyz: t0 t0 t0 bias-> t1.z (02040000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 13: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t3 t0 t0 bias-> (00000003) xyz: t0.xyz t3.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 14: xyz: t7 t0 t0 bias-> t1.xy (01840007) w: c0 t0 t0 bias-> (00000020) xyz: t7.xyz c0.www 0.0 op: 00050600 w: t7.x t7.x t7.x op: 00000000 15: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 0.5 0.5 op: 00058b00 w: t0.x t0.x t0.x op: 00000000 16: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 0.0 op: 00050a80 w: t1.x t1.x t1.x op: 00000000 17: xyz: t5 t0 t0 bias-> o0.xyz (1c000005) w: t5 t0 t0 bias-> o0.w (01000005) xyz: t5.xyz 1.0 0.0 op: 00050a80 w: t5.w 1.0 0.0 op: 00040889 18: xyz: t0 t0 t0 bias-> o1.xyz (3c000000) w: t1 t0 t0 bias-> o1.w (03000001) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889 19: xyz: t1 t0 t0 bias-> o2.xyz (5c000001) w: t0 t0 t0 bias-> o2.w (05000000) xyz: t1.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[0], PERSPECTIVE DCL IN[1], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[1] 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[0], input[1]; 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], temp[1], input[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], temp[1], input[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], temp[1], input[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], temp[1], input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[1], src0.w = temp[1], src1.xyz = input[1], src1.w = input[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 = temp[0], src0.w = temp[0], src1.xyz = input[1], src1.w = input[1] 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=48************************************* Hardware program ---------------- 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: t0 t1 t0 bias-> t0.xyz (03800040) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.w t1.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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], CONST[0].xxxx 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[0], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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], temp[1], const[0].xxxx; 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[1], src0.w = temp[1], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, 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 = temp[0], src0.w = temp[0], src1.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, 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=49************************************* Hardware program ---------------- 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: t0 c0 t0 bias-> t0.xyz (03800800) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xyz c0.xxx 0.0 op: 00050280 w: t0.w c0.x 0.0 op: 00040189 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], POSITION, LINEAR DCL IN[1], GENERIC[0], PERSPECTIVE 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 IN[6], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[13] DCL CONST[0..8] DCL TEMP[0] DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 1.0000, 2.0000, -1.0000, 10.0000} IMM[1] FLT32 { 0.0000, -1.0000, 0.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: MAD TEMP[0].y, IN[0], CONST[13].xxxx, CONST[13].yyyy 2: TEX TEMP[1], IN[1].xyyy, SAMP[3], 2D 3: MUL TEMP[1], TEMP[1], IN[3] 4: MOV TEMP[2].w, TEMP[1].wwww 5: ADD TEMP[3].xyz, IMM[0].xxxx, -TEMP[1].xyzz 6: ADD TEMP[4].x, IMM[0].xxxx, -CONST[8].xxxx 7: MAD TEMP[2].xyz, TEMP[3].xyzz, TEMP[4].xxxx, TEMP[1].xyzz 8: TEX TEMP[1].xyz, IN[1].xyyy, SAMP[2], 2D 9: MAD TEMP[1].xyz, TEMP[1].xyzz, IMM[0].yyyy, IMM[0].zzzz 10: MUL TEMP[3].xyz, TEMP[1].xxxx, IN[5].xyzz 11: MAD TEMP[3].xyz, TEMP[1].yyyy, IN[4].xyzz, TEMP[3].xyzz 12: MAD TEMP[1].xyz, TEMP[1].zzzz, IN[6].xyzz, TEMP[3].xyzz 13: DP3 TEMP[3].x, TEMP[1].xyzz, TEMP[1].xyzz 14: RSQ TEMP[3].x, TEMP[3].xxxx 15: MUL TEMP[1].xyz, TEMP[1].xyzz, TEMP[3].xxxx 16: RCP TEMP[3].x, IN[2].zzzz 17: MIN TEMP[3].x, TEMP[3].xxxx, IMM[0].wwww 18: MUL TEMP[3].x, CONST[6].xxxx, TEMP[3].xxxx 19: MAD TEMP[3].xy, TEMP[1].xyyy, TEMP[3].xxxx, TEMP[0].xyyy 20: TEX TEMP[3].xyz, TEMP[3].xyyy, SAMP[1], RECT 21: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[3].xyzz 22: DP3 TEMP[3].x, IN[2].xyzz, IN[2].xyzz 23: RSQ TEMP[3].x, TEMP[3].xxxx 24: MUL TEMP[3].xyz, IN[2].xyzz, TEMP[3].xxxx 25: DP3 TEMP[5].x, TEMP[1].xyzz, TEMP[3].xyzz 26: MUL TEMP[5].xyz, TEMP[5].xxxx, TEMP[1].xyzz 27: MUL TEMP[5].xyz, IMM[0].yyyy, TEMP[5].xyzz 28: ADD TEMP[4].xyz, TEMP[3].xyzz, -TEMP[5].xyzz 29: MUL TEMP[5], CONST[2], TEMP[4].xxxx 30: MAD TEMP[5], CONST[3], TEMP[4].yyyy, TEMP[5] 31: MAD TEMP[4], CONST[4], TEMP[4].zzzz, TEMP[5] 32: ADD TEMP[4].xyz, TEMP[4], CONST[5] 33: TEX TEMP[4].xyz, TEMP[4].xyzz, SAMP[0], CUBE 34: ADD TEMP[5].x, IMM[0].xxxx, -CONST[1].xxxx 35: DP3 TEMP[3].x, -TEMP[3].xyzz, TEMP[1].xyzz 36: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 37: ADD TEMP[3].x, IMM[0].xxxx, -TEMP[3].xxxx 38: POW TEMP[3].x, TEMP[3].xxxx, CONST[1].yyyy 39: MAD TEMP[3].x, TEMP[5].xxxx, TEMP[3].xxxx, CONST[1].xxxx 40: MAX TEMP[3].x, TEMP[3].xxxx, IMM[1].xxxx 41: MUL TEMP[3].xyz, TEMP[4].xyzz, TEMP[3].xxxx 42: MUL TEMP[3].xyz, TEMP[3].xyzz, CONST[8].xxxx 43: MAD TEMP[2].xyz, TEMP[3].xyzz, CONST[7].xxxx, TEMP[2].xyzz 44: DP3 TEMP[1].x, TEMP[1].xyzz, IMM[1].xxyy 45: ABS TEMP[1].x, TEMP[1].xxxx 46: ADD TEMP[1].x, IMM[0].xxxx, -TEMP[1].xxxx 47: POW TEMP[1].x, TEMP[1].xxxx, CONST[0].yyyy 48: MUL TEMP[1].x, TEMP[1].xxxx, CONST[0].xxxx 49: MUL TEMP[1].xyz, TEMP[4].xyzz, TEMP[1].xxxx 50: MUL TEMP[1].xyz, TEMP[1].xyzz, CONST[8].xxxx 51: MAD TEMP[2].xyz, TEMP[1].xyzz, CONST[7].xxxx, TEMP[2].xyzz 52: MOV OUT[0], TEMP[2] 53: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[1].xyz, input[1].xyyy, 2D[2]; 12: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 13: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 14: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 15: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 16: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 17: RSQ temp[3].x, temp[3].xxxx; 18: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 19: RCP temp[3].x, input[2].zzzz; 20: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 21: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 22: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 23: TEX temp[3].xyz, temp[3].xyyy, RECT[1]; 24: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 25: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 26: RSQ temp[3].x, temp[3].xxxx; 27: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 28: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 29: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 30: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 31: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 32: MUL temp[5], const[2], temp[4].xxxx; 33: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 34: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 35: ADD temp[4].xyz, temp[4], const[5]; 36: TEX temp[4].xyz, temp[4].xyzz, CUBE[0]; 37: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 38: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 39: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 40: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 41: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 42: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 45: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 46: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 47: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 48: ABS temp[1].x, temp[1].xxxx; 49: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 50: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 51: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 52: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 53: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 54: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 55: MOV output[0], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[7], input[1].xyyy, 2D[2]; 12: MOV temp[1].xyz, temp[7]; 13: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 14: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 15: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 16: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 17: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 18: RSQ temp[3].x, temp[3].xxxx; 19: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 20: RCP temp[3].x, input[2].zzzz; 21: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 22: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 23: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 24: MUL temp[8], temp[3].xyyy, const[18]; 25: TEX temp[9], temp[8], 2D[1]; 26: MOV temp[3].xyz, temp[9]; 27: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 28: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 29: RSQ temp[3].x, temp[3].xxxx; 30: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 31: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 32: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 33: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 34: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 35: MUL temp[5], const[2], temp[4].xxxx; 36: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 37: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 38: ADD temp[4].xyz, temp[4], const[5]; 39: TEX temp[10], temp[4].xyzz, CUBE[0]; 40: MOV temp[4].xyz, temp[10]; 41: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 42: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 45: POW temp[3].x, temp[3].xxxx, const[1].yyyy; 46: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 47: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 48: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 49: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 50: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 51: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 52: ABS temp[1].x, temp[1].xxxx; 53: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 54: POW temp[1].x, temp[1].xxxx, const[0].yyyy; 55: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 56: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 57: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 58: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 59: MOV output[0], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[6].w, input[0].wwww; 1: MUL temp[6].xyz, input[0], temp[6].wwww; 2: MAD temp[6].xyz, temp[6].xyz0, const[16].xyz0, const[17].xyz0; 3: MOV temp[0], temp[6]; 4: MAD temp[0].y, temp[6], const[13].xxxx, const[13].yyyy; 5: TEX temp[1], input[1].xyyy, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].wwww; 8: ADD temp[3].xyz, const[14].xxxx, -temp[1].xyzz; 9: ADD temp[4].x, const[14].xxxx, -const[8].xxxx; 10: MAD temp[2].xyz, temp[3].xyzz, temp[4].xxxx, temp[1].xyzz; 11: TEX temp[7], input[1].xyyy, 2D[2]; 12: MOV temp[1].xyz, temp[7]; 13: MAD temp[1].xyz, temp[1].xyzz, const[14].yyyy, const[14].zzzz; 14: MUL temp[3].xyz, temp[1].xxxx, input[5].xyzz; 15: MAD temp[3].xyz, temp[1].yyyy, input[4].xyzz, temp[3].xyzz; 16: MAD temp[1].xyz, temp[1].zzzz, input[6].xyzz, temp[3].xyzz; 17: DP3 temp[3].x, temp[1].xyzz, temp[1].xyzz; 18: RSQ temp[3].x, |temp[3].xxxx|; 19: MUL temp[1].xyz, temp[1].xyzz, temp[3].xxxx; 20: RCP temp[3].x, input[2].zzzz; 21: MIN temp[3].x, temp[3].xxxx, const[14].wwww; 22: MUL temp[3].x, const[6].xxxx, temp[3].xxxx; 23: MAD temp[3].xy, temp[1].xyyy, temp[3].xxxx, temp[0].xyyy; 24: MUL temp[8], temp[3].xyyy, const[18]; 25: TEX temp[9], temp[8], 2D[1]; 26: MOV temp[3].xyz, temp[9]; 27: MUL temp[2].xyz, temp[2].xyzz, temp[3].xyzz; 28: DP3 temp[3].x, input[2].xyzz, input[2].xyzz; 29: RSQ temp[3].x, |temp[3].xxxx|; 30: MUL temp[3].xyz, input[2].xyzz, temp[3].xxxx; 31: DP3 temp[5].x, temp[1].xyzz, temp[3].xyzz; 32: MUL temp[5].xyz, temp[5].xxxx, temp[1].xyzz; 33: MUL temp[5].xyz, const[14].yyyy, temp[5].xyzz; 34: ADD temp[4].xyz, temp[3].xyzz, -temp[5].xyzz; 35: MUL temp[5], const[2], temp[4].xxxx; 36: MAD temp[5], const[3], temp[4].yyyy, temp[5]; 37: MAD temp[4], const[4], temp[4].zzzz, temp[5]; 38: ADD temp[4].xyz, temp[4], const[5]; 39: TEX temp[10], temp[4].xyzz, CUBE[0]; 40: MOV temp[4].xyz, temp[10]; 41: ADD temp[5].x, const[14].xxxx, -const[1].xxxx; 42: DP3 temp[3].x, -temp[3].xyzz, temp[1].xyzz; 43: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 44: ADD temp[3].x, const[14].xxxx, -temp[3].xxxx; 45: LG2 temp[11].w, temp[3].xxxx; 46: MUL temp[11].w, temp[11].wwww, const[1].yyyy; 47: EX2 temp[3].x, temp[11].wwww; 48: MAD temp[3].x, temp[5].xxxx, temp[3].xxxx, const[1].xxxx; 49: MAX temp[3].x, temp[3].xxxx, const[15].xxxx; 50: MUL temp[3].xyz, temp[4].xyzz, temp[3].xxxx; 51: MUL temp[3].xyz, temp[3].xyzz, const[8].xxxx; 52: MAD temp[2].xyz, temp[3].xyzz, const[7].xxxx, temp[2].xyzz; 53: DP3 temp[1].x, temp[1].xyzz, const[15].xxyy; 54: MOV temp[1].x, |temp[1].xxxx|; 55: ADD temp[1].x, const[14].xxxx, -temp[1].xxxx; 56: LG2 temp[12].w, temp[1].xxxx; 57: MUL temp[12].w, temp[12].wwww, const[0].yyyy; 58: EX2 temp[1].x, temp[12].wwww; 59: MUL temp[1].x, temp[1].xxxx, const[0].xxxx; 60: MUL temp[1].xyz, temp[4].xyzz, temp[1].xxxx; 61: MUL temp[1].xyz, temp[1].xyzz, const[8].xxxx; 62: MAD temp[2].xyz, temp[1].xyzz, const[7].xxxx, temp[2].xyzz; 63: MOV output[0], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[6].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[6].ww__; 2: MAD temp[6].xy, temp[6].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[0].x, temp[6].x___; 4: MAD temp[0].y, temp[6]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[1], input[1].xy__, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].___w; 8: ADD temp[3].xyz, const[14].xxx_, -temp[1].xyz_; 9: ADD temp[4].x, const[14].x___, -const[8].x___; 10: MAD temp[2].xyz, temp[3].xyz_, temp[4].xxx_, temp[1].xyz_; 11: TEX temp[7].xyz, input[1].xy__, 2D[2]; 12: MOV temp[1].xyz, temp[7].xyz_; 13: MAD temp[1].xyz, temp[1].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[3].xyz, temp[1].xxx_, input[5].xyz_; 15: MAD temp[3].xyz, temp[1].yyy_, input[4].xyz_, temp[3].xyz_; 16: MAD temp[1].xyz, temp[1].zzz_, input[6].xyz_, temp[3].xyz_; 17: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 18: RSQ temp[3].x, |temp[3].x___|; 19: MUL temp[1].xyz, temp[1].xyz_, temp[3].xxx_; 20: RCP temp[3].x, input[2].z___; 21: MIN temp[3].x, temp[3].x___, const[14].w___; 22: MUL temp[3].x, const[6].x___, temp[3].x___; 23: MAD temp[3].xy, temp[1].xy__, temp[3].xx__, temp[0].xy__; 24: MUL temp[8].xy, temp[3].xy__, const[18].xy__; 25: TEX temp[9].xyz, temp[8].xy__, 2D[1]; 26: MOV temp[3].xyz, temp[9].xyz_; 27: MUL temp[2].xyz, temp[2].xyz_, temp[3].xyz_; 28: DP3 temp[3].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[3].x, |temp[3].x___|; 30: MUL temp[3].xyz, input[2].xyz_, temp[3].xxx_; 31: DP3 temp[5].x, temp[1].xyz_, temp[3].xyz_; 32: MUL temp[5].xyz, temp[5].xxx_, temp[1].xyz_; 33: MUL temp[5].xyz, const[14].yyy_, temp[5].xyz_; 34: ADD temp[4].xyz, temp[3].xyz_, -temp[5].xyz_; 35: MUL temp[5].xyz, const[2].xyz_, temp[4].xxx_; 36: MAD temp[5].xyz, const[3].xyz_, temp[4].yyy_, temp[5].xyz_; 37: MAD temp[4].xyz, const[4].xyz_, temp[4].zzz_, temp[5].xyz_; 38: ADD temp[4].xyz, temp[4].xyz_, const[5].xyz_; 39: TEX temp[10].xyz, temp[4].xyz_, CUBE[0]; 40: MOV temp[4].xyz, temp[10].xyz_; 41: ADD temp[5].x, const[14].x___, -const[1].x___; 42: DP3 temp[3].x, -temp[3].xyz_, temp[1].xyz_; 43: MAX temp[3].x, temp[3].x___, const[15].x___; 44: ADD temp[3].x, const[14].x___, -temp[3].x___; 45: LG2 temp[11].w, temp[3].___x; 46: MUL temp[11].w, temp[11].___w, const[1].___y; 47: EX2 temp[3].x, temp[11].w___; 48: MAD temp[3].x, temp[5].x___, temp[3].x___, const[1].x___; 49: MAX temp[3].x, temp[3].x___, const[15].x___; 50: MUL temp[3].xyz, temp[4].xyz_, temp[3].xxx_; 51: MUL temp[3].xyz, temp[3].xyz_, const[8].xxx_; 52: MAD temp[2].xyz, temp[3].xyz_, const[7].xxx_, temp[2].xyz_; 53: DP3 temp[1].x, temp[1].xyz_, const[15].xxy_; 54: MOV temp[1].x, |temp[1].x___|; 55: ADD temp[1].x, const[14].x___, -temp[1].x___; 56: LG2 temp[12].w, temp[1].___x; 57: MUL temp[12].w, temp[12].___w, const[0].___y; 58: EX2 temp[1].x, temp[12].w___; 59: MUL temp[1].x, temp[1].x___, const[0].x___; 60: MUL temp[1].xyz, temp[4].xyz_, temp[1].xxx_; 61: MUL temp[1].xyz, temp[1].xyz_, const[8].xxx_; 62: MAD temp[2].xyz, temp[1].xyz_, const[7].xxx_, temp[2].xyz_; 63: MOV output[0], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: RCP temp[6].w, input[0].___w; 1: MUL temp[6].xy, input[0].xy__, temp[6].ww__; 2: MAD temp[6].xy, temp[6].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[0].x, temp[6].x___; 4: MAD temp[0].y, temp[6]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[1], input[1].xy__, 2D[3]; 6: MUL temp[1], temp[1], input[3]; 7: MOV temp[2].w, temp[1].___w; 8: ADD temp[3].xyz, const[14].xxx_, -temp[1].xyz_; 9: ADD temp[4].x, const[14].x___, -const[8].x___; 10: MAD temp[2].xyz, temp[3].xyz_, temp[4].xxx_, temp[1].xyz_; 11: TEX temp[7].xyz, input[1].xy__, 2D[2]; 12: MOV temp[1].xyz, temp[7].xyz_; 13: MAD temp[1].xyz, temp[1].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[3].xyz, temp[1].xxx_, input[5].xyz_; 15: MAD temp[3].xyz, temp[1].yyy_, input[4].xyz_, temp[3].xyz_; 16: MAD temp[1].xyz, temp[1].zzz_, input[6].xyz_, temp[3].xyz_; 17: DP3 temp[3].x, temp[1].xyz_, temp[1].xyz_; 18: RSQ temp[3].x, |temp[3].x___|; 19: MUL temp[1].xyz, temp[1].xyz_, temp[3].xxx_; 20: RCP temp[3].x, input[2].z___; 21: MIN temp[3].x, temp[3].x___, const[14].w___; 22: MUL temp[3].x, const[6].x___, temp[3].x___; 23: MAD temp[3].xy, temp[1].xy__, temp[3].xx__, temp[0].xy__; 24: MUL temp[8].xy, temp[3].xy__, const[18].xy__; 25: TEX temp[9].xyz, temp[8].xy__, 2D[1]; 26: MOV temp[3].xyz, temp[9].xyz_; 27: MUL temp[2].xyz, temp[2].xyz_, temp[3].xyz_; 28: DP3 temp[3].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[3].x, |temp[3].x___|; 30: MUL temp[3].xyz, input[2].xyz_, temp[3].xxx_; 31: DP3 temp[5].x, temp[1].xyz_, temp[3].xyz_; 32: MUL temp[5].xyz, temp[5].xxx_, temp[1].xyz_; 33: MUL temp[5].xyz, const[14].yyy_, temp[5].xyz_; 34: ADD temp[4].xyz, temp[3].xyz_, -temp[5].xyz_; 35: MUL temp[5].xyz, const[2].xyz_, temp[4].xxx_; 36: MAD temp[5].xyz, const[3].xyz_, temp[4].yyy_, temp[5].xyz_; 37: MAD temp[4].xyz, const[4].xyz_, temp[4].zzz_, temp[5].xyz_; 38: ADD temp[4].xyz, temp[4].xyz_, const[5].xyz_; 39: TEX temp[10].xyz, temp[4].xyz_, CUBE[0]; 40: MOV temp[4].xyz, temp[10].xyz_; 41: ADD temp[5].x, const[14].x___, -const[1].x___; 42: DP3 temp[3].x, -temp[3].xyz_, temp[1].xyz_; 43: MAX temp[3].x, temp[3].x___, const[15].x___; 44: ADD temp[3].x, const[14].x___, -temp[3].x___; 45: LG2 temp[11].w, temp[3].___x; 46: MUL temp[11].w, temp[11].___w, const[1].___y; 47: EX2 temp[3].x, temp[11].w___; 48: MAD temp[3].x, temp[5].x___, temp[3].x___, const[1].x___; 49: MAX temp[3].x, temp[3].x___, const[15].x___; 50: MUL temp[3].xyz, temp[4].xyz_, temp[3].xxx_; 51: MUL temp[3].xyz, temp[3].xyz_, const[8].xxx_; 52: MAD temp[2].xyz, temp[3].xyz_, const[7].xxx_, temp[2].xyz_; 53: DP3 temp[1].x, temp[1].xyz_, const[15].xxy_; 54: MOV temp[1].x, |temp[1].x___|; 55: ADD temp[1].x, const[14].x___, -temp[1].x___; 56: LG2 temp[12].w, temp[1].___x; 57: MUL temp[12].w, temp[12].___w, const[0].___y; 58: EX2 temp[1].x, temp[12].w___; 59: MUL temp[1].x, temp[1].x___, const[0].x___; 60: MUL temp[1].xyz, temp[4].xyz_, temp[1].xxx_; 61: MUL temp[1].xyz, temp[1].xyz_, const[8].xxx_; 62: MAD temp[2].xyz, temp[1].xyz_, const[7].xxx_, temp[2].xyz_; 63: MOV output[0], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, const[14].xxx_, -temp[18].xyz_; 9: ADD temp[21].x, const[14].x___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MOV temp[24].xyz, temp[23].xyz_; 13: MAD temp[25].xyz, temp[24].xyz_, const[14].yyy_, const[14].zzz_; 14: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 15: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 16: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 17: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 18: RSQ temp[30].x, |temp[29].x___|; 19: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 20: RCP temp[32].x, input[2].z___; 21: MIN temp[33].x, temp[32].x___, const[14].w___; 22: MUL temp[34].x, const[6].x___, temp[33].x___; 23: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 24: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 25: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 26: MOV temp[38].xyz, temp[37].xyz_; 27: MUL temp[39].xyz, temp[22].xyz_, temp[38].xyz_; 28: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 29: RSQ temp[41].x, |temp[40].x___|; 30: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 31: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 32: MUL temp[44].xyz, temp[43].xxx_, temp[31].xyz_; 33: MUL temp[45].xyz, const[14].yyy_, temp[44].xyz_; 34: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 35: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 36: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 37: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 38: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 39: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 40: MOV temp[52].xyz, temp[51].xyz_; 41: ADD temp[53].x, const[14].x___, -const[1].x___; 42: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 43: MAX temp[55].x, temp[54].x___, const[15].x___; 44: ADD temp[56].x, const[14].x___, -temp[55].x___; 45: LG2 temp[57].w, temp[56].___x; 46: MUL temp[58].w, temp[57].___w, const[1].___y; 47: EX2 temp[59].x, temp[58].w___; 48: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 49: MAX temp[61].x, temp[60].x___, const[15].x___; 50: MUL temp[62].xyz, temp[52].xyz_, temp[61].xxx_; 51: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 52: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 53: DP3 temp[65].x, temp[31].xyz_, const[15].xxy_; 54: MOV temp[66].x, |temp[65].x___|; 55: ADD temp[67].x, const[14].x___, -temp[66].x___; 56: LG2 temp[68].w, temp[67].___x; 57: MUL temp[69].w, temp[68].___w, const[0].___y; 58: EX2 temp[70].x, temp[69].w___; 59: MUL temp[71].x, temp[70].x___, const[0].x___; 60: MUL temp[72].xyz, temp[52].xyz_, temp[71].xxx_; 61: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 62: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 63: MOV output[0], temp[19]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[14].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[14].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, none.00-1_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; CONST[14] = { 1.0000 2.0000 -1.0000 10.0000 } CONST[15] = { 0.0000 -1.0000 0.0000 0.0000 } CONST[19] = { 0.0000 0.0000 -1.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[16].xy__, const[17].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[13]._x__, const[13]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[14].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[14].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[18].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, const[19].xyz_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; CONST[10] = { 1.0000 2.0000 -1.0000 10.0000 } CONST[14] = { 0.0000 0.0000 -1.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[13].w, input[0].___w; 1: MUL temp[14].xy, input[0].xy__, temp[13].ww__; 2: MAD temp[15].xy, temp[14].xy__, const[11].xy__, const[12].xy__; 3: MOV temp[16].x, temp[15].x___; 4: MAD temp[16].y, temp[15]._y__, const[9]._x__, const[9]._y__; 5: TEX temp[17], input[1].xy__, 2D[3]; 6: MUL temp[18], temp[17], input[3]; 7: MOV temp[19].w, temp[18].___w; 8: ADD temp[20].xyz, none.111_, -temp[18].xyz_; 9: ADD temp[21].x, none.1___, -const[8].x___; 10: MAD temp[22].xyz, temp[20].xyz_, temp[21].xxx_, temp[18].xyz_; 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: MAD temp[25].xyz, temp[23].xyz_, const[10].yyy_, none.-1-1-1_; 13: MUL temp[26].xyz, temp[25].xxx_, input[5].xyz_; 14: MAD temp[27].xyz, temp[25].yyy_, input[4].xyz_, temp[26].xyz_; 15: MAD temp[28].xyz, temp[25].zzz_, input[6].xyz_, temp[27].xyz_; 16: DP3 temp[29].x, temp[28].xyz_, temp[28].xyz_; 17: RSQ temp[30].x, |temp[29].x___|; 18: MUL temp[31].xyz, temp[28].xyz_, temp[30].xxx_; 19: RCP temp[32].x, input[2].z___; 20: MIN temp[33].x, temp[32].x___, const[10].w___; 21: MUL temp[34].x, const[6].x___, temp[33].x___; 22: MAD temp[35].xy, temp[31].xy__, temp[34].xx__, temp[16].xy__; 23: MUL temp[36].xy, temp[35].xy__, const[13].xy__; 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: MUL temp[39].xyz, temp[22].xyz_, temp[37].xyz_; 26: DP3 temp[40].x, input[2].xyz_, input[2].xyz_; 27: RSQ temp[41].x, |temp[40].x___|; 28: MUL temp[42].xyz, input[2].xyz_, temp[41].xxx_; 29: DP3 temp[43].x, temp[31].xyz_, temp[42].xyz_; 30: MUL temp[45].xyz * 2, temp[43].xxx_, temp[31].xyz_; 31: ADD temp[46].xyz, temp[42].xyz_, -temp[45].xyz_; 32: MUL temp[47].xyz, const[2].xyz_, temp[46].xxx_; 33: MAD temp[48].xyz, const[3].xyz_, temp[46].yyy_, temp[47].xyz_; 34: MAD temp[49].xyz, const[4].xyz_, temp[46].zzz_, temp[48].xyz_; 35: ADD temp[50].xyz, temp[49].xyz_, const[5].xyz_; 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: ADD temp[53].x, none.1___, -const[1].x___; 38: DP3 temp[54].x, -temp[42].xyz_, temp[31].xyz_; 39: MAX temp[55].x, temp[54].x___, none.0___; 40: ADD temp[56].x, none.1___, -temp[55].x___; 41: LG2 temp[57].w, temp[56].___x; 42: MUL temp[58].w, temp[57].___w, const[1].___y; 43: EX2 temp[59].x, temp[58].w___; 44: MAD temp[60].x, temp[53].x___, temp[59].x___, const[1].x___; 45: MAX temp[61].x, temp[60].x___, none.0___; 46: MUL temp[62].xyz, temp[51].xyz_, temp[61].xxx_; 47: MUL temp[63].xyz, temp[62].xyz_, const[8].xxx_; 48: MAD temp[64].xyz, temp[63].xyz_, const[7].xxx_, temp[39].xyz_; 49: DP3 temp[65].x, temp[31].xyz_, const[14].xyz_; 50: ADD temp[67].x, none.1___, -|temp[65].x___|; 51: LG2 temp[68].w, temp[67].___x; 52: MUL temp[69].w, temp[68].___w, const[0].___y; 53: EX2 temp[70].x, temp[69].w___; 54: MUL temp[71].x, temp[70].x___, const[0].x___; 55: MUL temp[72].xyz, temp[51].xyz_, temp[71].xxx_; 56: MUL temp[73].xyz, temp[72].xyz_, const[8].xxx_; 57: MAD temp[19].xyz, temp[73].xyz_, const[7].xxx_, temp[64].xyz_; 58: MOV output[0], temp[19]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[13].w, src0.w 1: src0.xyz = input[0], src0.w = temp[13] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 2: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 3: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 4: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 5: TEX temp[17], input[1].xy__, 2D[3]; 6: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 7: src0.w = temp[18] MAD temp[19].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 9: src0.xyz = const[8] MAD temp[21].x, src0.1__, src0.111, -src0.x__ 10: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 11: TEX temp[23].xyz, input[1].xy__, 2D[2]; 12: src0.xyz = temp[23], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 13: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 14: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 15: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 16: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 17: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 18: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 19: src0.xyz = input[2] REPL_ALPHA temp[32].x RCP, src0.z 20: src0.xyz = temp[32], src0.w = const[10] MIN temp[33].x, src0.x__, src0.w__ 21: src0.xyz = const[6], src1.xyz = temp[33] MAD temp[34].x, src0.x__, src1.x__, src0.000 22: src0.xyz = temp[31], src1.xyz = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src1.xx_, src2.xy_ 23: src0.xyz = temp[35], src1.xyz = const[13] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 24: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 25: src0.xyz = temp[22], src1.xyz = temp[37] MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 26: src0.xyz = input[2] DP3 temp[40].x, src0.xyz, src0.xyz 27: src0.xyz = temp[40] REPL_ALPHA temp[41].x RSQ, |src0.x| 28: src0.xyz = input[2], src1.xyz = temp[41] MAD temp[42].xyz, src0.xyz, src1.xxx, src0.000 29: src0.xyz = temp[31], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz 30: src0.xyz = temp[43], src1.xyz = temp[31] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 31: src0.xyz = temp[42], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz 32: src0.xyz = const[2], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 33: src0.xyz = const[3], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz 34: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 35: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 36: TEX temp[51].xyz, temp[50].xyz_, CUBE[0]; 37: src0.xyz = const[1] MAD temp[53].x, src0.1__, src0.111, -src0.x__ 38: src0.xyz = temp[42], src1.xyz = temp[31] DP3 temp[54].x, -src0.xyz, src1.xyz 39: src0.xyz = temp[54] MAX temp[55].x, src0.x__, src0.0__ 40: src0.xyz = temp[55] MAD temp[56].x, src0.1__, src0.111, -src0.x__ 41: src0.xyz = temp[56] LG2 temp[57].w, src0.x 42: src0.xyz = const[1], src0.w = temp[57] MAD temp[58].w, src0.w, src0.y, src0.0 43: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 44: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].x, src0.x__, src1.x__, src2.x__ 45: src0.xyz = temp[60] MAX temp[61].x, src0.x__, src0.0__ 46: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 47: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 48: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 49: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 50: src0.xyz = temp[65] MAD temp[67].x, src0.1__, |src0.111|, -|src0.x__| 51: src0.xyz = temp[67] LG2 temp[68].w, src0.x 52: src0.xyz = const[0], src0.w = temp[68] MAD temp[69].w, src0.w, src0.y, src0.0 53: src0.w = temp[69] REPL_ALPHA temp[70].x EX2, src0.w 54: src0.xyz = temp[70], src1.xyz = const[0] MAD temp[71].x, src0.x__, src1.x__, src0.000 55: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 56: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 57: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 58: src0.xyz = temp[19], src0.w = temp[19] 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[2] DP3 temp[40].x, src0.xyz, src0.xyz RCP temp[32].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[40] MAD temp[53].x, src0.1__, src0.111, -src0.x__ RSQ temp[41].w, |src1.x| 2: src0.xyz = input[2], src0.w = temp[41], src1.xyz = temp[41], src1.w = temp[32], src2.w = const[10] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 MIN temp[33].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[0] MAD temp[21].x, src0.1__, src0.111, -src0.x__ RCP temp[13].w, src0.w 4: src0.xyz = input[0], src0.w = temp[13], src1.xyz = const[6], src1.w = temp[33] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 MAD temp[34].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 8: BEGIN_TEX; 9: TEX temp[17], input[1].xy__, 2D[3]; 10: TEX temp[23].xyz, input[1].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[23], src0.w = temp[18], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[19].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 16: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 19: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 20: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[31], src0.w = temp[34], src1.xyz = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 23: src0.xyz = temp[42], src1.xyz = temp[31], src2.xyz = temp[65] DP3 temp[54].x, -src0.xyz, src1.xyz MAD temp[67].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[31], src0.w = temp[67], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz LG2 temp[68].w, src0.w 25: src0.xyz = temp[35], src1.xyz = const[13], src2.xyz = temp[54] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 MAX temp[55].w, src2.x, src0.0 26: src0.xyz = temp[43], src0.w = temp[68], src1.xyz = temp[31], src2.xyz = const[0] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 MAD temp[69].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[42], src0.w = temp[55], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[56].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[56], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[57].w, src0.w 29: src0.xyz = const[3], src0.w = temp[69], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[70].w, src0.w 30: src0.xyz = temp[70], src0.w = temp[70], src1.xyz = const[0], src1.w = temp[57], src2.xyz = const[1] MAD temp[71].x, src0.w__, src1.x__, src0.000 MAD temp[58].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 33: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].w, src0.x, src1.x, src2.x 35: src0.xyz = temp[60], src0.w = temp[60] MAX temp[61].x, src0.w__, src0.0__ 36: BEGIN_TEX; 37: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 38: TEX temp[51].xyz, temp[50].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[22], src1.xyz = temp[37] SEM_WAIT MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 42: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[19], src0.w = temp[19] 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[2] DP3 temp[40].x, src0.xyz, src0.xyz RCP temp[32].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[40] MAD temp[53].x, src0.1__, src0.111, -src0.x__ RSQ temp[41].w, |src1.x| 2: src0.xyz = input[2], src0.w = temp[41], src1.w = temp[32], src2.w = const[10] MAD temp[42].xyz, src0.xyz, src0.www, src0.000 MIN temp[33].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[0] MAD temp[21].x, src0.1__, src0.111, -src0.x__ RCP temp[13].w, src0.w 4: src0.xyz = input[0], src0.w = temp[13], src1.xyz = const[6], src1.w = temp[33] MAD temp[14].xy, src0.xy_, src0.ww_, src0.000 MAD temp[34].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[14], src1.xyz = const[11], src2.xyz = const[12] MAD temp[15].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[15], src1.xyz = const[9] MAD temp[16].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[15] MAD temp[16].x, src0.x__, src0.111, src0.000 8: BEGIN_TEX; 9: TEX temp[17], input[1].xy__, 2D[3]; 10: TEX temp[23].xyz, input[1].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[3], src1.w = input[3] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[23], src0.w = temp[18], src1.xyz = const[10] MAD temp[25].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[19].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[18] MAD temp[20].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[25], src1.xyz = input[5] MAD temp[26].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[20], src1.xyz = temp[21], src2.xyz = temp[18] MAD temp[22].xyz, src0.xyz, src1.xxx, src2.xyz 16: src0.xyz = temp[25], src1.xyz = input[4], src2.xyz = temp[26] MAD temp[27].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[25], src1.xyz = input[6], src2.xyz = temp[27] MAD temp[28].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[28] DP3 temp[29].x, src0.xyz, src0.xyz 19: src0.xyz = temp[29] REPL_ALPHA temp[30].x RSQ, |src0.x| 20: src0.xyz = temp[28], src1.xyz = temp[30] MAD temp[31].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[31], src0.w = temp[34], src2.xyz = temp[16] MAD temp[35].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[31], src1.xyz = const[14] DP3 temp[65].x, src0.xyz, src1.xyz 23: src0.xyz = temp[42], src1.xyz = temp[31], src2.xyz = temp[65] DP3 temp[54].x, -src0.xyz, src1.xyz MAD temp[67].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[31], src0.w = temp[67], src1.xyz = temp[42] DP3 temp[43].x, src0.xyz, src1.xyz LG2 temp[68].w, src0.w 25: src0.xyz = temp[35], src1.xyz = const[13], src2.xyz = temp[54] MAD temp[36].xy, src0.xy_, src1.xy_, src0.000 MAX temp[55].w, src2.x, src0.0 26: src0.xyz = temp[43], src0.w = temp[68], src1.xyz = temp[31], src2.xyz = const[0] MAD temp[45].xyz * 2, src0.xxx, src1.xyz, src0.000 MAD temp[69].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[42], src0.w = temp[55], src1.xyz = temp[45] MAD temp[46].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[56].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[56], src1.xyz = temp[46] MAD temp[47].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[57].w, src0.w 29: src0.xyz = const[3], src0.w = temp[69], src1.xyz = temp[46], src2.xyz = temp[47] MAD temp[48].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[70].w, src0.w 30: src0.w = temp[70], src1.xyz = const[0], src1.w = temp[57], src2.xyz = const[1] MAD temp[71].x, src0.w__, src1.x__, src0.000 MAD temp[58].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[46], src2.xyz = temp[48] MAD temp[49].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[58] REPL_ALPHA temp[59].x EX2, src0.w 33: src0.xyz = temp[49], src1.xyz = const[5] MAD temp[50].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[53], src1.xyz = temp[59], src2.xyz = const[1] MAD temp[60].w, src0.x, src1.x, src2.x 35: src0.w = temp[60] MAX temp[61].x, src0.w__, src0.0__ 36: BEGIN_TEX; 37: TEX temp[37].xyz, temp[36].xy__, 2D[1]; 38: TEX temp[51].xyz, temp[50].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[22], src1.xyz = temp[37] SEM_WAIT MAD temp[39].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[51], src1.xyz = temp[71] MAD temp[72].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[51], src1.xyz = temp[61] MAD temp[62].xyz, src0.xyz, src1.xxx, src0.000 42: src0.xyz = temp[72], src1.xyz = const[8] MAD temp[73].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[62], src1.xyz = const[8] MAD temp[63].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[63], src1.xyz = const[7], src2.xyz = temp[39] MAD temp[64].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[73], src1.xyz = const[7], src2.xyz = temp[64] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[19], src0.w = temp[19] 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[1] DP3 temp[0].z, src0.xyz, src0.xyz RCP temp[0].w, src0.z 1: src0.xyz = const[1], src1.xyz = temp[0] MAD temp[0].z, src0.__1, src0.__1, -src0.__x RSQ temp[1].w, |src1.z| 2: src0.xyz = input[1], src0.w = temp[1], src1.w = temp[0], src2.w = const[10] MAD temp[1].xyz, src0.xyz, src0.www, src0.000 MIN temp[0].w, src1.w, src2.w 3: src0.xyz = const[8], src0.w = input[6] MAD temp[6].z, src0.__1, src0.__1, -src0.__x RCP temp[1].w, src0.w 4: src0.xyz = input[6], src0.w = temp[1], src1.xyz = const[6], src1.w = temp[0] MAD temp[6].xy, src0.xy_, src0.ww_, src0.00_ MAD temp[0].w, src1.x, src1.w, src0.0 5: src0.xyz = temp[6], src1.xyz = const[11], src2.xyz = const[12] MAD temp[6].xy, src0.xy_, src1.xy_, src2.xy_ 6: src0.xyz = temp[6], src1.xyz = const[9] MAD temp[7].y, src0._y_, src1._x_, src1._y_ 7: src0.xyz = temp[6] MAD temp[7].x, src0.x__, src0.11_, src0.00_ 8: BEGIN_TEX; 9: TEX temp[8], input[0].xy__, 2D[3]; 10: TEX temp[9].xyz, input[0].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 11: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[2], src1.w = input[2] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 12: src0.xyz = temp[9], src0.w = temp[1], src1.xyz = const[10] MAD temp[8].xyz, src0.xyz, src1.yyy, -src0.111 MAD temp[1].w, src0.w, src0.1, src0.0 13: src0.xyz = temp[2] MAD temp[9].xyz, src0.111, src0.111, -src0.xyz 14: src0.xyz = temp[8], src1.xyz = input[4] MAD temp[4].xyz, src0.xxx, src1.xyz, src0.000 15: src0.xyz = temp[9], src1.xyz = temp[6], src2.xyz = temp[2] MAD temp[2].xyz, src0.xyz, src1.zzz, src2.xyz 16: src0.xyz = temp[8], src1.xyz = input[3], src2.xyz = temp[4] MAD temp[3].xyz, src0.yyy, src1.xyz, src2.xyz 17: src0.xyz = temp[8], src1.xyz = input[5], src2.xyz = temp[3] MAD temp[3].xyz, src0.zzz, src1.xyz, src2.xyz 18: src0.xyz = temp[3] DP3 temp[0].x, src0.xyz, src0.xyz 19: src0.xyz = temp[0] REPL_ALPHA temp[0].x RSQ, |src0.x| 20: src0.xyz = temp[3], src1.xyz = temp[0] MAD temp[3].xyz, src0.xyz, src1.xxx, src0.000 21: src0.xyz = temp[3], src0.w = temp[0], src2.xyz = temp[7] MAD temp[0].xy, src0.xy_, src0.ww_, src2.xy_ 22: src0.xyz = temp[3], src1.xyz = const[14] DP3 temp[4].x, src0.xyz, src1.xyz 23: src0.xyz = temp[1], src1.xyz = temp[3], src2.xyz = temp[4] DP3 temp[4].x, -src0.xyz, src1.xyz MAD temp[0].w, src0.1, |src0.1|, -|src2.x| 24: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = temp[1] DP3 temp[4].y, src0.xyz, src1.xyz LG2 temp[0].w, src0.w 25: src0.xyz = temp[0], src1.xyz = const[13], src2.xyz = temp[4] MAD temp[0].xy, src0.xy_, src1.xy_, src0.00_ MAX temp[2].w, src2.x, src0.0 26: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = temp[3], src2.xyz = const[0] MAD temp[3].xyz * 2, src0.yyy, src1.xyz, src0.000 MAD temp[0].w, src0.w, src2.y, src0.0 27: src0.xyz = temp[1], src0.w = temp[2], src1.xyz = temp[3] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[2].w, src0.1, src0.1, -src0.w 28: src0.xyz = const[2], src0.w = temp[2], src1.xyz = temp[1] MAD temp[3].xyz, src0.xyz, src1.xxx, src0.000 LG2 temp[2].w, src0.w 29: src0.xyz = const[3], src0.w = temp[0], src1.xyz = temp[1], src2.xyz = temp[3] MAD temp[3].xyz, src0.xyz, src1.yyy, src2.xyz EX2 temp[0].w, src0.w 30: src0.w = temp[0], src1.xyz = const[0], src1.w = temp[2], src2.xyz = const[1] MAD temp[4].x, src0.w__, src1.x__, src0.0__ MAD temp[0].w, src1.w, src2.y, src0.0 31: src0.xyz = const[4], src1.xyz = temp[1], src2.xyz = temp[3] MAD temp[1].xyz, src0.xyz, src1.zzz, src2.xyz 32: src0.w = temp[0] REPL_ALPHA temp[3].x EX2, src0.w 33: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[1].xyz, src0.xyz, src0.111, src1.xyz 34: src0.xyz = temp[0], src1.xyz = temp[3], src2.xyz = const[1] MAD temp[0].w, src0.z, src1.x, src2.x 35: src0.w = temp[0] MAX temp[0].z, src0.__w, src0.__0 36: BEGIN_TEX; 37: TEX temp[3].xyz, temp[0].xy__, 2D[1]; 38: TEX temp[5].xyz, temp[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[2], src1.xyz = temp[3] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 40: src0.xyz = temp[5], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 41: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 42: src0.xyz = temp[2], src1.xyz = const[8] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 43: src0.xyz = temp[0], src1.xyz = const[8] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 44: src0.xyz = temp[0], src1.xyz = const[7], src2.xyz = temp[1] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 45: src0.xyz = temp[2], src1.xyz = const[7], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 46: src0.xyz = temp[0], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=50************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 7, tex_end: 0 (code_addr: 000001c0) 0: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.xyz t1.xyz t1.xxx op: 00804000 w: t1.z t1.x t1.x op: 05000002 1: xyz: c1 t0 t0 bias-> t0.z (02000021) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 1.0 1.0 -c1.xxx op: 00084a95 w: |t0.z| c1.x c1.x op: 05800045 2: xyz: t1 t32 t0 bias-> t1.xyz (03840001) w: t1 t0 c10 bias-> t0.w (0082a001) xyz: t1.xyz t1.www 0.0 op: 00050600 w: t0.w c10.w t1.x op: 0100058a 3: xyz: c8 t0 t0 bias-> t6.z (02180028) w: t6 t0 t0 bias-> t1.w (00840006) xyz: 1.0 1.0 -c8.xxx op: 00084a95 w: t6.w c8.x c8.x op: 05000009 4: xyz: t6 c6 t0 bias-> t6.xy (01980986) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t6.xyz t1.www 0.0 op: 00050600 w: c6.x t0.w 0.0 op: 00040503 5: xyz: t6 c11 c12 bias-> t6.xy (019acac6) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz c11.xyz c12.xyz op: 00020200 w: t6.x t6.x t6.x op: 00000000 6: xyz: t6 c9 t0 bias-> t7.y (011c0a46) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz c9.xxx c9.xyz op: 00010280 w: t6.x t6.x t6.x op: 00000000 7: xyz: t6 t0 t0 bias-> t7.x (009c0006) w: t0 t0 t0 bias-> (00000000) xyz: t6.xyz 1.0 0.0 op: 00050a80 w: t6.x t6.x t6.x op: 00000000 NODE 1: alu_offset: 8, tex_offset: 0, alu_end: 24, tex_end: 1 (code_addr: 00020608) TEX: TEX t8, t0, texture[3] (00009a00) TEX t9, t0, texture[2] (00009240) 8: xyz: t8 t2 t0 bias-> t2.xyz (03880088) w: t8 t2 t0 bias-> t1.w (00840088) xyz: t8.xyz t2.xyz 0.0 op: 00050200 w: t8.w t2.w 0.0 op: 00040509 9: xyz: t9 c10 t0 bias-> t8.xyz (03a00a89) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t9.xyz c10.yyy -1.0 op: 000d4300 w: t1.w 1.0 0.0 op: 00040889 10: xyz: t2 t0 t0 bias-> t9.xyz (03a40002) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 1.0 -t2.xyz op: 00080a95 w: t2.x t2.x t2.x op: 00000000 11: xyz: t8 t4 t0 bias-> t4.xyz (03900108) w: t0 t0 t0 bias-> (00000000) xyz: t8.xxx t4.xyz 0.0 op: 00050201 w: t8.x t8.x t8.x op: 00000000 12: xyz: t9 t6 t2 bias-> t2.xyz (03882189) w: t0 t0 t0 bias-> (00000000) xyz: t9.xyz t6.zzz t2.xyz op: 00020380 w: t9.x t9.x t9.x op: 00000000 13: xyz: t8 t3 t4 bias-> t3.xyz (038c40c8) w: t0 t0 t0 bias-> (00000000) xyz: t8.yyy t3.xyz t4.xyz op: 00020202 w: t8.x t8.x t8.x op: 00000000 14: xyz: t8 t5 t3 bias-> t3.xyz (038c3148) w: t0 t0 t0 bias-> (00000000) xyz: t8.zzz t5.xyz t3.xyz op: 00020203 w: t8.x t8.x t8.x op: 00000000 15: xyz: t3 t0 t0 bias-> t0.x (00800003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t3.xyz t3.xxx op: 00804000 w: t3.x t3.x t3.x op: 00000000 16: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: |t0.x| t0.x t0.x op: 05800040 17: xyz: t3 t0 t0 bias-> t3.xyz (038c0003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.xxx 0.0 op: 00050280 w: t3.x t3.x t3.x op: 00000000 18: xyz: t3 t32 t7 bias-> t0.xy (01807003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t0.www t7.xyz op: 00020600 w: t3.x t3.x t3.x op: 00000000 19: xyz: t3 c14 t0 bias-> t4.x (00900b83) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz c14.xyz t3.xxx op: 00804200 w: t3.x t3.x t3.x op: 00000000 20: xyz: t1 t3 t4 bias-> t4.x (009040c1) w: t0 t0 t0 bias-> t0.w (00800000) xyz: -t1.xyz t3.xyz t1.xxx op: 00804220 w: 1.0 |1.0| -|t4.x| op: 0019a891 21: xyz: t3 t1 t0 bias-> t4.y (01100043) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t3.xyz t1.xyz t3.xxx op: 00804200 w: t0.w t3.x t3.x op: 04800009 22: xyz: t0 c13 t4 bias-> t0.xy (01804b40) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz c13.xyz 0.0 op: 00050200 w: t4.x 0.0 t0.x op: 01800806 23: xyz: t4 t3 c0 bias-> t3.xyz (038e00c4) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t4.yyy t3.xyz 0.0 op: 08050202 w: t0.w c0.y 0.0 op: 00040389 24: xyz: t1 t3 t0 bias-> t1.xyz (038400c1) w: t2 t0 t0 bias-> t2.w (00880002) xyz: t1.xyz 1.0 -t3.xyz op: 00090a80 w: 1.0 1.0 -t2.w op: 000a4891 25: xyz: c2 t1 t0 bias-> t3.xyz (038c0062) w: t2 t0 t0 bias-> t2.w (00880002) xyz: c2.xyz t1.xxx 0.0 op: 00050280 w: t2.w c2.x c2.x op: 04800009 26: xyz: c3 t1 t3 bias-> t3.xyz (038c3063) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c3.xyz t1.yyy t3.xyz op: 00020300 w: t0.w c3.x c3.x op: 04000009 27: xyz: t32 c0 c1 bias-> t4.x (00921800) w: t0 t2 t0 bias-> t0.w (00800080) xyz: t0.www c0.xyz 0.0 op: 0005020c w: t2.w c1.y 0.0 op: 0004038a 28: xyz: c4 t1 t3 bias-> t1.xyz (03843064) w: t0 t0 t0 bias-> (00000000) xyz: c4.xyz t1.zzz t3.xyz op: 00020380 w: c4.x c4.x c4.x op: 00000000 29: xyz: t0 t0 t0 bias-> t3.x (008c0000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx t0.xxx t0.xxx op: 05004081 w: t0.w t0.x t0.x op: 04000009 30: xyz: t1 c5 t0 bias-> t1.xyz (03840941) w: t0 t0 t0 bias-> (00000000) xyz: t1.xyz 1.0 c5.xyz op: 00010a80 w: t1.x t1.x t1.x op: 00000000 31: xyz: t0 t3 c1 bias-> (000210c0) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.xxx t0.xxx t0.xxx op: 00004081 w: t0.z t3.x c1.x op: 00018182 32: xyz: t32 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 0.0 t32.xxx op: 02804a0c w: t32.x t32.x t32.x op: 00000000 NODE 2: alu_offset: 33, tex_offset: 2, alu_end: 7, tex_end: 1 (code_addr: 004221e1) TEX: TEX t3, t0, texture[1] (000088c0) TEX t5, t1, texture[0] (00008141) 33: xyz: t2 t3 t0 bias-> t1.xyz (038400c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t3.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 34: xyz: t5 t4 t0 bias-> t2.xyz (03880105) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t4.xxx 0.0 op: 00050280 w: t5.x t5.x t5.x op: 00000000 35: xyz: t5 t0 t0 bias-> t0.xyz (03800005) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t0.zzz 0.0 op: 00050380 w: t5.x t5.x t5.x op: 00000000 36: xyz: t2 c8 t0 bias-> t2.xyz (03880a02) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c8.xxx 0.0 op: 00050280 w: t2.x t2.x t2.x op: 00000000 37: xyz: t0 c8 t0 bias-> t0.xyz (03800a00) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c8.xxx 0.0 op: 00050280 w: t0.x t0.x t0.x op: 00000000 38: xyz: t0 c7 t1 bias-> t0.xyz (038019c0) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz c7.xxx t1.xyz op: 00020280 w: t0.x t0.x t0.x op: 00000000 39: xyz: t2 c7 t0 bias-> t0.xyz (038009c2) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz c7.xxx t0.xyz op: 00020280 w: t2.x t2.x t2.x op: 00000000 40: xyz: t0 t0 t0 bias-> o0.xyz (1c000000) w: t1 t0 t0 bias-> o0.w (01000001) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t1.w 1.0 0.0 op: 00040889