Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-garuda-synthetic.conf", line 9: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-garuda-synthetic.conf", line 21: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-kinnari-synthetic.conf", line 9: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-kinnari-synthetic.conf", line 21: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-loma-synthetic.conf", line 12: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-umpush-synthetic.conf", line 9: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/89-tlwg-umpush-synthetic.conf", line 21: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 9: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 22: Having multiple in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 22: Having multiple in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 22: Having multiple in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 26: Having multiple in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 31: Having multiple values in isn't supported and may not works as expected Fontconfig warning: "/etc/fonts/conf.d/90-fonts-nanum.conf", line 40: Having multiple values in isn't supported and may not works as expected r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] 0: MOV OUT[0], IN[0] 1: MOV OUT[1], IN[1] 2: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Final vertex program code: 0: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] 0: MOV OUT[0], IN[0] 1: MOV OUT[1], IN[1] 2: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Final vertex program code: 0: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], COLOR DCL CONST[0..3] DCL TEMP[0] 0: MUL TEMP[0], IN[0].xxxx, CONST[0] 1: MAD TEMP[0], IN[0].yyyy, CONST[1], TEMP[0] 2: MAD TEMP[0], IN[0].zzzz, CONST[2], TEMP[0] 3: MAD OUT[0], IN[0].wwww, CONST[3], TEMP[0] 4: MOV OUT[1], IN[1] 5: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[0], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[0]; 6: MOV output[2], temp[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[0], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[0]; 6: MOV output[2], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00000001 reg: 0i swiz: X/ X/ X/ X src1: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 1: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src1: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src1: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 3: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src1: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 5: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 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 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] 0: MOV OUT[0], IN[0] 1: MOV OUT[1], IN[1] 2: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Final vertex program code: 0: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], COLOR DCL CONST[0..3] DCL TEMP[0] 0: MUL TEMP[0], IN[0].xxxx, CONST[0] 1: MAD TEMP[0], IN[0].yyyy, CONST[1], TEMP[0] 2: MAD TEMP[0], IN[0].zzzz, CONST[2], TEMP[0] 3: MAD OUT[0], IN[0].wwww, CONST[3], TEMP[0] 4: MOV OUT[1], IN[1] 5: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[1], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[1]; 6: MOV output[2], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[0], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[0]; 6: MOV output[2], temp[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0], input[0].xxxx, const[0]; 1: MAD temp[0], input[0].yyyy, const[1], temp[0]; 2: MAD temp[0], input[0].zzzz, const[2], temp[0]; 3: MAD temp[0], input[0].wwww, const[3], temp[0]; 4: MOV output[1], input[1]; 5: MOV output[0], temp[0]; 6: MOV output[2], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00000001 reg: 0i swiz: X/ X/ X/ X src1: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 1: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src1: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src1: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 3: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src1: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 5: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 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=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 vertex program VERT DCL IN[0] DCL OUT[0], POSITION DCL CONST[0..4] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL 0: MUL TEMP[0], CONST[1], IN[0].xxxx 1: MAD TEMP[0], CONST[2], IN[0].yyyy, TEMP[0] 2: ADD TEMP[0], TEMP[0], CONST[4] 3: MOV TEMP[1].xyw, TEMP[0].xyxw 4: MUL TEMP[0].x, TEMP[0].zzzz, CONST[0].xxxx 5: MOV TEMP[1].z, TEMP[0].xxxx 6: MOV OUT[0], TEMP[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MUL temp[0].x, temp[0].zzzz, const[0].xxxx; 5: MOV temp[1].z, temp[0].xxxx; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MUL temp[0].x, temp[0].zzzz, const[0].xxxx; 5: MOV temp[1].z, temp[0].xxxx; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MUL temp[0].x, temp[0].zzzz, const[0].xxxx; 5: MOV temp[1].z, temp[0].xxxx; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MUL temp[0].x, temp[0].zzzz, const[0].xxxx; 5: MOV temp[1].z, temp[0].xxxx; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MUL temp[0].x, temp[0].zzzz, const[0].xxxx; 5: MOV temp[1].z, temp[0].xxxx; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MUL temp[0].x, temp[0].z___, const[0].x___; 5: MOV temp[1].z, temp[0].__x_; 6: MOV temp[2], temp[1]; 7: MOV output[0], temp[2]; 8: MOV output[1], temp[2]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MUL temp[0].x, temp[0].z___, const[0].x___; 5: MOV temp[1].z, temp[0].__x_; 6: MOV output[0], temp[1]; 7: MOV output[1], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MUL temp[0].x, temp[0].z___, const[0].x___; 5: MOV temp[1].z, temp[0].__x_; 6: MOV output[0], temp[1]; 7: MOV output[1], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MUL temp[0].x, temp[0].z___, const[0].x___; 5: MOV temp[1].z, temp[0].__x_; 6: MOV output[0], temp[1]; 7: MOV output[1], temp[1]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].xxxx; 1: MAD temp[0], const[2], input[0].yyyy, temp[0]; 2: ADD temp[0], temp[0], const[4]; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MUL temp[0].x, temp[0].z___, const[0].x___; 5: MOV temp[1].z, temp[0].__x_; 6: MOV output[0], temp[1]; 7: MOV output[1], temp[1]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00003 dst: 0t op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x00d10082 reg: 4c swiz: X/ Y/ Z/ W src2: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 3: op: 0x00b02003 dst: 1t op: VE_ADD src0: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 4: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff4000 reg: 0t swiz: Z/ U/ U/ U src1: 0x01ff0002 reg: 0c swiz: X/ U/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 5: op: 0x00402003 dst: 1t op: VE_ADD src0: 0x01c7e000 reg: 0t swiz: U/ U/ X/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 6: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 7: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG 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=3************************************* 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 vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL CONST[0..5] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM FLT32 { 0.0039, 0.0000, 0.0000, 0.0000} 0: MUL TEMP[0], CONST[2], IN[1].xxxx 1: MAD TEMP[0], CONST[3], IN[1].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[4], IN[1].zzzz, TEMP[0] 3: ADD TEMP[0], TEMP[0], CONST[5] 4: MOV TEMP[1].xyw, TEMP[0].xyxw 5: MUL TEMP[2].x, TEMP[0].zzzz, CONST[1].xxxx 6: MAD TEMP[0].x, CONST[0].xxxx, TEMP[0].wwww, TEMP[2].xxxx 7: MOV TEMP[1].z, TEMP[0].xxxx 8: MUL TEMP[0].xy, IN[0].xyyy, IMM[0].xxxx 9: MOV OUT[1].xy, TEMP[0].xyxx 10: MOV OUT[0], TEMP[1] 11: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xyxw; 5: MUL temp[2].x, temp[0].zzzz, const[1].xxxx; 6: MAD temp[0].x, const[0].xxxx, temp[0].wwww, temp[2].xxxx; 7: MOV temp[1].z, temp[0].xxxx; 8: MUL temp[0].xy, input[0].xyyy, const[6].xxxx; 9: MOV output[1].xy, temp[0].xyxx; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xyxw; 5: MUL temp[2].x, temp[0].zzzz, const[1].xxxx; 6: MAD temp[0].x, const[0].xxxx, temp[0].wwww, temp[2].xxxx; 7: MOV temp[1].z, temp[0].xxxx; 8: MUL temp[0].xy, input[0].xyyy, const[6].xxxx; 9: MOV output[1].xy, temp[0].xyxx; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xyxw; 5: MUL temp[2].x, temp[0].zzzz, const[1].xxxx; 6: MAD temp[0].x, const[0].xxxx, temp[0].wwww, temp[2].xxxx; 7: MOV temp[1].z, temp[0].xxxx; 8: MUL temp[0].xy, input[0].xyyy, const[6].xxxx; 9: MOV output[1].xy, temp[0].xyxx; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xyxw; 5: MUL temp[2].x, temp[0].zzzz, const[1].xxxx; 6: MAD temp[0].x, const[0].xxxx, temp[0].wwww, temp[2].xxxx; 7: MOV temp[1].z, temp[0].xxxx; 8: MUL temp[0].xy, input[0].xyyy, const[6].xxxx; 9: MOV output[1].xy, temp[0].xyxx; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xyxw; 5: MUL temp[2].x, temp[0].zzzz, const[1].xxxx; 6: MAD temp[0].x, const[0].xxxx, temp[0].wwww, temp[2].xxxx; 7: MOV temp[1].z, temp[0].xxxx; 8: MUL temp[0].xy, input[0].xyyy, const[6].xxxx; 9: MOV output[1].xy, temp[0].xyxx; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xy_w; 5: MUL temp[2].x, temp[0].z___, const[1].x___; 6: MAD temp[0].x, const[0].x___, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MUL temp[0].xy, input[0].xy__, const[6].xx__; 9: MOV output[1].xy, temp[0].xy__; 10: MOV temp[3], temp[1]; 11: MOV output[0], temp[3]; 12: MOV output[2], temp[3]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xy_w; 5: MUL temp[2].x, temp[0].z___, const[1].x___; 6: MAD temp[0].x, const[0].x___, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MUL temp[0].xy, input[0].xy__, const[6].xx__; 9: MOV output[1].xy, temp[0].xy__; 10: MOV output[0], temp[1]; 11: MOV output[2], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xy_w; 5: MUL temp[2].x, temp[0].z___, const[1].x___; 6: MAD temp[0].x, const[0].x___, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MUL temp[0].xy, input[0].xy__, const[6].xx__; 9: MOV output[1].xy, temp[0].xy__; 10: MOV output[0], temp[1]; 11: MOV output[2], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xy_w; 5: MUL temp[2].x, temp[0].z___, const[1].x___; 6: MAD temp[0].x, const[0].x___, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MUL temp[0].xy, input[0].xy__, const[6].xx__; 9: MOV output[1].xy, temp[0].xy__; 10: MOV output[0], temp[1]; 11: MOV output[2], temp[1]; CONST[6] = { 0.0039 0.0000 0.0000 0.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0], const[2], input[1].xxxx; 1: MAD temp[0], const[3], input[1].yyyy, temp[0]; 2: MAD temp[0], const[4], input[1].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[5]; 4: MOV temp[1].xyw, temp[0].xy_w; 5: MUL temp[2].x, temp[0].z___, const[1].x___; 6: MAD temp[0].x, const[0].x___, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MUL temp[0].xy, input[0].xy__, const[6].xx__; 9: MOV output[1].xy, temp[0].xy__; 10: MOV output[0], temp[1]; 11: MOV output[2], temp[1]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00000021 reg: 1i swiz: X/ X/ X/ X src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00492021 reg: 1i swiz: Y/ Y/ Y/ Y src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10082 reg: 4c swiz: X/ Y/ Z/ W src1: 0x00924021 reg: 1i swiz: Z/ Z/ Z/ Z src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 3: op: 0x00f00003 dst: 0t op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x00d100a2 reg: 5c swiz: X/ Y/ Z/ W src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 4: op: 0x00b02003 dst: 1t op: VE_ADD src0: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 5: op: 0x00104002 dst: 2t op: VE_MULTIPLY src0: 0x01ff4000 reg: 0t swiz: Z/ U/ U/ U src1: 0x01ff0022 reg: 1c swiz: X/ U/ U/ U src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 6: op: 0x00100004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01ff0002 reg: 0c swiz: X/ U/ U/ U src1: 0x01ff6000 reg: 0t swiz: W/ U/ U/ U src2: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U 7: op: 0x00402003 dst: 1t op: VE_ADD src0: 0x01c7e000 reg: 0t swiz: U/ U/ X/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 8: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01f800c2 reg: 6c swiz: X/ X/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 9: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 10: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 11: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV TEMP[1].xyz, TEMP[0].xyzx 2: MUL TEMP[0].x, TEMP[0].wwww, CONST[0].xxxx 3: MOV TEMP[1].w, TEMP[0].xxxx 4: SEQ TEMP[2].x, TEMP[0].xxxx, IMM[0].xxxx 5: CMP TEMP[0].x, -TEMP[2].xxxx, IMM[0].yyyy, IMM[0].xxxx 6: KIL -TEMP[0].xxxx 7: MOV OUT[0], TEMP[1] 8: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: SEQ temp[2].x, temp[0].xxxx, temp[0].0000; 5: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 6: KIL -temp[0].xxxx; 7: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyzx; 2: MUL temp[0].x, temp[0].wwww, const[0].xxxx; 3: MOV temp[1].w, temp[0].xxxx; 4: ADD temp[2].x, temp[0].xxxx, -temp[0].0000; 5: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 6: CMP temp[0].x, -temp[2].xxxx, temp[0].1111, temp[0].0000; 7: KIL -temp[0].xxxx; 8: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyz_; 2: MUL temp[0].x, temp[0].w___, const[0].x___; 3: MOV temp[1].w, temp[0].___x; 4: ADD temp[2].x, temp[0].x___, -temp[0].0___; 5: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 6: CMP temp[0].x, -temp[2].x___, temp[0].1___, temp[0].0___; 7: KIL -temp[0].xxxx; 8: MOV output[0], temp[1]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV temp[1].xyz, temp[0].xyz_; 2: MUL temp[0].x, temp[0].w___, const[0].x___; 3: MOV temp[1].w, temp[0].___x; 4: ADD temp[2].x, temp[0].x___, -temp[0].0___; 5: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 6: CMP temp[0].x, -temp[2].x___, temp[0].1___, temp[0].0___; 7: KIL -temp[0].xxxx; 8: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MOV temp[4].xyz, temp[3].xyz_; 2: MUL temp[5].x, temp[3].w___, const[0].x___; 3: MOV temp[4].w, temp[5].___x; 4: ADD temp[6].x, temp[5].x___, -temp[0].0___; 5: CMP temp[7].x, -|temp[6].x___|, none.0___, none.1___; 6: CMP temp[8].x, -temp[7].x___, temp[0].1___, temp[0].0___; 7: KIL -temp[8].xxxx; 8: MOV output[0], temp[4]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MOV temp[4].xyz, temp[3].xyz_; 2: MUL temp[5].x, temp[3].w___, const[0].x___; 3: MOV temp[4].w, temp[5].___x; 4: CMP temp[7].x, -|temp[5].x___|, none.0___, none.1___; 5: CMP temp[8].x, -temp[7].x___, none.1___, none.0___; 6: KIL -temp[8].xxxx; 7: MOV output[0], temp[4]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MOV temp[4].xyz, temp[3].xyz_; 2: MUL temp[5].x, temp[3].w___, const[0].x___; 3: MOV temp[4].w, temp[5].___x; 4: CMP temp[7].x, -|temp[5].x___|, none.0___, none.1___; 5: CMP temp[8].x, -temp[7].x___, none.1___, none.0___; 6: MOV temp[0], -temp[8].xxxx; 7: KIL temp[0]; 8: MOV output[0], temp[4]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: MOV temp[4].xyz, temp[3].xyz_; 2: MUL temp[5].x, temp[3].w___, const[0].x___; 3: MOV temp[4].w, temp[5].___x; 4: CMP temp[7].x, -|temp[5].x___|, none.0___, none.1___; 5: CMP temp[8].x, -temp[7].x___, none.1___, none.0___; 6: MOV temp[0], -temp[8].xxxx; 7: KIL temp[0]; 8: MOV output[0], temp[4]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3], input[0].xy__, 2D[0]; 1: src0.xyz = temp[3] MAD temp[4].xyz, src0.xyz, src0.111, src0.000 2: src0.xyz = const[0], src0.w = temp[3] MAD temp[5].x, src0.w__, src0.x__, src0.000 3: src0.xyz = temp[5] MAD temp[4].w, src0.x, src0.1, src0.0 4: src0.xyz = temp[5] CMP temp[7].x, src0.1__, src0.0__, -|src0.x__| 5: src0.xyz = temp[7] CMP temp[8].x, src0.0__, src0.1__, -src0.x__ 6: src0.xyz = temp[8] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 7: KIL temp[0]; 8: 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: 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 = const[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src0.111, src0.000 MAD temp[5].w, src0.w, src1.x, src0.0 3: src0.xyz = temp[5], src0.w = temp[5] CMP temp[7].x, src0.1__, src0.0__, -|src0.w__| MAD temp[4].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[7] CMP temp[8].x, src0.0__, src0.1__, -src0.x__ 5: src0.xyz = temp[8] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 6: BEGIN_TEX; 7: KIL temp[0]; 8: 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: 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 = const[0] SEM_WAIT MAD temp[4].xyz, src0.xyz, src0.111, src0.000 MAD temp[5].w, src0.w, src1.x, src0.0 3: src0.w = temp[5] CMP temp[7].x, src0.1__, src0.0__, -|src0.w__| MAD temp[4].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[7] CMP temp[8].x, src0.0__, src0.1__, -src0.x__ 5: src0.xyz = temp[8] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 6: BEGIN_TEX; 7: KIL temp[0]; 8: 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: 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, src0.111, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 3: src0.w = temp[0] CMP temp[1].x, src0.1__, src0.0__, -|src0.w__| MAD temp[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[1] CMP temp[1].x, src0.0__, src0.1__, -src0.x__ 5: src0.xyz = temp[1] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 6: BEGIN_TEX; 7: KIL temp[1]; 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=4************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 3, tex_end: 0 (code_addr: 000000c0) 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 1.0 0.0 op: 00050a80 w: t0.w c0.x 0.0 op: 00040189 1: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 1.0 0.0 -|t0.www| op: 041b0a15 w: t0.w 1.0 0.0 op: 00040889 2: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t1.xyz op: 04080a94 w: t1.x t1.x t1.x op: 00000000 3: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t1.xxx 1.0 0.0 op: 00050aa1 w: -t1.x 1.0 0.0 op: 000408a0 NODE 1: alu_offset: 4, tex_offset: 1, alu_end: 0, tex_end: 0 (code_addr: 00401004) TEX: KIL t0, t1, texture[0] (00010001) 4: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL OUT[2], GENERIC[13] DCL CONST[0..6] 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 DCL TEMP[7], LOCAL IMM FLT32 { 0.0000, 1.0000, 0.1250, 0.5000} 0: SLT TEMP[0].x, IMM[0].xxxx, CONST[4].xxxx 1: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[0].xxxx 2: MUL TEMP[1].xy, IN[0].xyyy, TEMP[1].xxxx 3: MAD TEMP[0].xy, IN[0].zwww, TEMP[0].xxxx, TEMP[1].xyyy 4: MUL TEMP[0].xy, TEMP[0].xyyy, IMM[0].zzzz 5: MUL TEMP[1], CONST[0], IN[4].xxxx 6: MAD TEMP[1], CONST[1], IN[4].yyyy, TEMP[1] 7: ADD TEMP[1].xyw, TEMP[1], CONST[3] 8: MUL TEMP[2].xy, CONST[6].xyyy, TEMP[1].xyyy 9: RCP TEMP[3].x, TEMP[1].wwww 10: MUL TEMP[2].xy, TEMP[2].xyyy, TEMP[3].xxxx 11: MUL TEMP[3], CONST[0], IN[4].zzzz 12: MAD TEMP[3], CONST[1], IN[4].wwww, TEMP[3] 13: ADD TEMP[3].xyw, TEMP[3], CONST[3] 14: MUL TEMP[4].xy, CONST[6].xyyy, TEMP[3].xyyy 15: RCP TEMP[3].x, TEMP[3].wwww 16: MUL TEMP[3].xy, TEMP[4].xyyy, TEMP[3].xxxx 17: ADD TEMP[3].xy, TEMP[3].xyyy, -TEMP[2].xyyy 18: DP2 TEMP[4].x, TEMP[3].xyyy, TEMP[3].xyyy 19: RSQ TEMP[4].x, TEMP[4].xxxx 20: MUL TEMP[3].xy, TEMP[3].xyyy, TEMP[4].xxxx 21: MOV TEMP[4].x, -TEMP[3].yyyy 22: MOV TEMP[4].y, TEMP[3].xxxx 23: RCP TEMP[3].x, TEMP[1].wwww 24: SLT TEMP[5].x, IMM[0].wwww, CONST[4].xxxx 25: MOV TEMP[6].w, IMM[0].yyyy 26: ADD TEMP[7].x, IMM[0].yyyy, -TEMP[3].xxxx 27: MUL TEMP[7].x, TEMP[0].yyyy, TEMP[7].xxxx 28: MAD TEMP[0].x, TEMP[0].xxxx, TEMP[3].xxxx, TEMP[7].xxxx 29: MUL TEMP[0].x, IMM[0].wwww, TEMP[0].xxxx 30: MUL TEMP[0].x, IN[3].zzzz, TEMP[0].xxxx 31: MAD TEMP[0].xy, TEMP[0].xxxx, TEMP[4].xyyy, TEMP[2].xyyy 32: RCP TEMP[2].x, CONST[6].xxxx 33: RCP TEMP[2].y, CONST[6].yyyy 34: MUL TEMP[6].xy, TEMP[0].xyyy, TEMP[2].xyyy 35: ADD TEMP[0].x, IMM[0].yyyy, -TEMP[5].xxxx 36: MUL TEMP[0].x, IN[1].xxxx, TEMP[0].xxxx 37: MAD TEMP[0].x, IN[1].yyyy, TEMP[5].xxxx, TEMP[0].xxxx 38: ADD TEMP[0].x, TEMP[0].xxxx, -CONST[5].xxxx 39: MOV TEMP[6].z, TEMP[0].xxxx 40: SSG TEMP[0].x, TEMP[1].wwww 41: MUL TEMP[0], TEMP[0].xxxx, TEMP[6] 42: MOV OUT[2], IN[2].xxxx 43: MOV OUT[0], TEMP[0] 44: MOV OUT[1].xy, IN[3].xyxx 45: END Vertex Program: before compilation # Radeon Compiler Program 0: SLT temp[0].x, const[7].xxxx, const[4].xxxx; 1: ADD temp[1].x, const[7].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[0].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[0].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[7].zzzz; 5: MUL temp[1], const[0], input[4].xxxx; 6: MAD temp[1], const[1], input[4].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: MUL temp[2].xy, const[6].xyyy, temp[1].xyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MUL temp[2].xy, temp[2].xyyy, temp[3].xxxx; 11: MUL temp[3], const[0], input[4].zzzz; 12: MAD temp[3], const[1], input[4].wwww, temp[3]; 13: ADD temp[3].xyw, temp[3], const[3]; 14: MUL temp[4].xy, const[6].xyyy, temp[3].xyyy; 15: RCP temp[3].x, temp[3].wwww; 16: MUL temp[3].xy, temp[4].xyyy, temp[3].xxxx; 17: ADD temp[3].xy, temp[3].xyyy, -temp[2].xyyy; 18: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 19: RSQ temp[4].x, temp[4].xxxx; 20: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 21: MOV temp[4].x, -temp[3].yyyy; 22: MOV temp[4].y, temp[3].xxxx; 23: RCP temp[3].x, temp[1].wwww; 24: SLT temp[5].x, const[7].wwww, const[4].xxxx; 25: MOV temp[6].w, const[7].yyyy; 26: ADD temp[7].x, const[7].yyyy, -temp[3].xxxx; 27: MUL temp[7].x, temp[0].yyyy, temp[7].xxxx; 28: MAD temp[0].x, temp[0].xxxx, temp[3].xxxx, temp[7].xxxx; 29: MUL temp[0].x, const[7].wwww, temp[0].xxxx; 30: MUL temp[0].x, input[3].zzzz, temp[0].xxxx; 31: MAD temp[0].xy, temp[0].xxxx, temp[4].xyyy, temp[2].xyyy; 32: RCP temp[2].x, const[6].xxxx; 33: RCP temp[2].y, const[6].yyyy; 34: MUL temp[6].xy, temp[0].xyyy, temp[2].xyyy; 35: ADD temp[0].x, const[7].yyyy, -temp[5].xxxx; 36: MUL temp[0].x, input[1].xxxx, temp[0].xxxx; 37: MAD temp[0].x, input[1].yyyy, temp[5].xxxx, temp[0].xxxx; 38: ADD temp[0].x, temp[0].xxxx, -const[5].xxxx; 39: MOV temp[6].z, temp[0].xxxx; 40: SSG temp[0].x, temp[1].wwww; 41: MUL temp[0], temp[0].xxxx, temp[6]; 42: MOV output[2], input[2].xxxx; 43: MOV temp[8], temp[0]; 44: MOV output[1].xy, input[3].xyxx; 45: MOV output[0], temp[8]; 46: MOV output[3], temp[8]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: SLT temp[0].x, const[7].xxxx, const[4].xxxx; 1: ADD temp[1].x, const[7].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[0].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[0].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[7].zzzz; 5: MUL temp[1], const[0], input[4].xxxx; 6: MAD temp[1], const[1], input[4].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: MUL temp[2].xy, const[6].xyyy, temp[1].xyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MUL temp[2].xy, temp[2].xyyy, temp[3].xxxx; 11: MUL temp[3], const[0], input[4].zzzz; 12: MAD temp[3], const[1], input[4].wwww, temp[3]; 13: ADD temp[3].xyw, temp[3], const[3]; 14: MUL temp[4].xy, const[6].xyyy, temp[3].xyyy; 15: RCP temp[3].x, temp[3].wwww; 16: MUL temp[3].xy, temp[4].xyyy, temp[3].xxxx; 17: ADD temp[3].xy, temp[3].xyyy, -temp[2].xyyy; 18: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 19: RSQ temp[4].x, temp[4].xxxx; 20: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 21: MOV temp[4].x, -temp[3].yyyy; 22: MOV temp[4].y, temp[3].xxxx; 23: RCP temp[3].x, temp[1].wwww; 24: SLT temp[5].x, const[7].wwww, const[4].xxxx; 25: MOV temp[6].w, const[7].yyyy; 26: ADD temp[7].x, const[7].yyyy, -temp[3].xxxx; 27: MUL temp[7].x, temp[0].yyyy, temp[7].xxxx; 28: MAD temp[0].x, temp[0].xxxx, temp[3].xxxx, temp[7].xxxx; 29: MUL temp[0].x, const[7].wwww, temp[0].xxxx; 30: MUL temp[0].x, input[3].zzzz, temp[0].xxxx; 31: MAD temp[0].xy, temp[0].xxxx, temp[4].xyyy, temp[2].xyyy; 32: RCP temp[2].x, const[6].xxxx; 33: RCP temp[2].y, const[6].yyyy; 34: MUL temp[6].xy, temp[0].xyyy, temp[2].xyyy; 35: ADD temp[0].x, const[7].yyyy, -temp[5].xxxx; 36: MUL temp[0].x, input[1].xxxx, temp[0].xxxx; 37: MAD temp[0].x, input[1].yyyy, temp[5].xxxx, temp[0].xxxx; 38: ADD temp[0].x, temp[0].xxxx, -const[5].xxxx; 39: MOV temp[6].z, temp[0].xxxx; 40: SSG temp[0].x, temp[1].wwww; 41: MUL temp[0], temp[0].xxxx, temp[6]; 42: MOV output[2], input[2].xxxx; 43: MOV temp[8], temp[0]; 44: MOV output[1].xy, input[3].xyxx; 45: MOV output[0], temp[8]; 46: MOV output[3], temp[8]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: SLT temp[0].x, const[7].xxxx, const[4].xxxx; 1: ADD temp[1].x, const[7].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[0].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[0].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[7].zzzz; 5: MUL temp[1], const[0], input[4].xxxx; 6: MAD temp[1], const[1], input[4].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: MUL temp[2].xy, const[6].xyyy, temp[1].xyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MUL temp[2].xy, temp[2].xyyy, temp[3].xxxx; 11: MUL temp[3], const[0], input[4].zzzz; 12: MAD temp[3], const[1], input[4].wwww, temp[3]; 13: ADD temp[3].xyw, temp[3], const[3]; 14: MUL temp[4].xy, const[6].xyyy, temp[3].xyyy; 15: RCP temp[3].x, temp[3].wwww; 16: MUL temp[3].xy, temp[4].xyyy, temp[3].xxxx; 17: ADD temp[3].xy, temp[3].xyyy, -temp[2].xyyy; 18: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 19: RSQ temp[4].x, temp[4].xxxx; 20: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 21: MOV temp[4].x, -temp[3].yyyy; 22: MOV temp[4].y, temp[3].xxxx; 23: RCP temp[3].x, temp[1].wwww; 24: SLT temp[5].x, const[7].wwww, const[4].xxxx; 25: MOV temp[6].w, const[7].yyyy; 26: ADD temp[7].x, const[7].yyyy, -temp[3].xxxx; 27: MUL temp[7].x, temp[0].yyyy, temp[7].xxxx; 28: MAD temp[0].x, temp[0].xxxx, temp[3].xxxx, temp[7].xxxx; 29: MUL temp[0].x, const[7].wwww, temp[0].xxxx; 30: MUL temp[0].x, input[3].zzzz, temp[0].xxxx; 31: MAD temp[0].xy, temp[0].xxxx, temp[4].xyyy, temp[2].xyyy; 32: RCP temp[2].x, const[6].xxxx; 33: RCP temp[2].y, const[6].yyyy; 34: MUL temp[6].xy, temp[0].xyyy, temp[2].xyyy; 35: ADD temp[0].x, const[7].yyyy, -temp[5].xxxx; 36: MUL temp[0].x, input[1].xxxx, temp[0].xxxx; 37: MAD temp[0].x, input[1].yyyy, temp[5].xxxx, temp[0].xxxx; 38: ADD temp[0].x, temp[0].xxxx, -const[5].xxxx; 39: MOV temp[6].z, temp[0].xxxx; 40: SSG temp[0].x, temp[1].wwww; 41: MUL temp[0], temp[0].xxxx, temp[6]; 42: MOV output[2], input[2].xxxx; 43: MOV temp[8], temp[0]; 44: MOV output[1].xy, input[3].xyxx; 45: MOV output[0], temp[8]; 46: MOV output[3], temp[8]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: SLT temp[0].x, const[7].xxxx, const[4].xxxx; 1: ADD temp[1].x, const[7].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[0].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[0].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[7].zzzz; 5: MUL temp[1], const[0], input[4].xxxx; 6: MAD temp[1], const[1], input[4].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: MUL temp[2].xy, const[6].xyyy, temp[1].xyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MUL temp[2].xy, temp[2].xyyy, temp[3].xxxx; 11: MUL temp[3], const[0], input[4].zzzz; 12: MAD temp[3], const[1], input[4].wwww, temp[3]; 13: ADD temp[3].xyw, temp[3], const[3]; 14: MUL temp[4].xy, const[6].xyyy, temp[3].xyyy; 15: RCP temp[3].x, temp[3].wwww; 16: MUL temp[3].xy, temp[4].xyyy, temp[3].xxxx; 17: ADD temp[3].xy, temp[3].xyyy, -temp[2].xyyy; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].xxxx; 20: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 21: MOV temp[4].x, -temp[3].yyyy; 22: MOV temp[4].y, temp[3].xxxx; 23: RCP temp[3].x, temp[1].wwww; 24: SLT temp[5].x, const[7].wwww, const[4].xxxx; 25: MOV temp[6].w, const[7].yyyy; 26: ADD temp[7].x, const[7].yyyy, -temp[3].xxxx; 27: MUL temp[7].x, temp[0].yyyy, temp[7].xxxx; 28: MAD temp[0].x, temp[0].xxxx, temp[3].xxxx, temp[7].xxxx; 29: MUL temp[0].x, const[7].wwww, temp[0].xxxx; 30: MUL temp[0].x, input[3].zzzz, temp[0].xxxx; 31: MAD temp[0].xy, temp[0].xxxx, temp[4].xyyy, temp[2].xyyy; 32: RCP temp[2].x, const[6].xxxx; 33: RCP temp[2].y, const[6].yyyy; 34: MUL temp[6].xy, temp[0].xyyy, temp[2].xyyy; 35: ADD temp[0].x, const[7].yyyy, -temp[5].xxxx; 36: MUL temp[0].x, input[1].xxxx, temp[0].xxxx; 37: MAD temp[0].x, input[1].yyyy, temp[5].xxxx, temp[0].xxxx; 38: ADD temp[0].x, temp[0].xxxx, -const[5].xxxx; 39: MOV temp[6].z, temp[0].xxxx; 40: SLT temp[0].x, none.0000, temp[1].wwww; 41: SLT temp[9].x, temp[1].wwww, none.0000; 42: ADD temp[0].x, temp[0], -temp[9]; 43: MUL temp[0], temp[0].xxxx, temp[6]; 44: MOV output[2], input[2].xxxx; 45: MOV temp[8], temp[0]; 46: MOV output[1].xy, input[3].xyxx; 47: MOV output[0], temp[8]; 48: MOV output[3], temp[8]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: SLT temp[0].x, const[7].xxxx, const[4].xxxx; 1: ADD temp[1].x, const[7].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[0].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[0].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[7].zzzz; 5: MUL temp[1], const[0], input[4].xxxx; 6: MAD temp[1], const[1], input[4].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: MUL temp[2].xy, const[6].xyyy, temp[1].xyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MUL temp[2].xy, temp[2].xyyy, temp[3].xxxx; 11: MUL temp[3], const[0], input[4].zzzz; 12: MAD temp[3], const[1], input[4].wwww, temp[3]; 13: ADD temp[3].xyw, temp[3], const[3]; 14: MUL temp[4].xy, const[6].xyyy, temp[3].xyyy; 15: RCP temp[3].x, temp[3].wwww; 16: MUL temp[3].xy, temp[4].xyyy, temp[3].xxxx; 17: ADD temp[3].xy, temp[3].xyyy, -temp[2].xyyy; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].xxxx; 20: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 21: MOV temp[4].x, -temp[3].yyyy; 22: MOV temp[4].y, temp[3].xxxx; 23: RCP temp[3].x, temp[1].wwww; 24: SLT temp[5].x, const[7].wwww, const[4].xxxx; 25: MOV temp[6].w, const[7].yyyy; 26: ADD temp[7].x, const[7].yyyy, -temp[3].xxxx; 27: MUL temp[7].x, temp[0].yyyy, temp[7].xxxx; 28: MAD temp[0].x, temp[0].xxxx, temp[3].xxxx, temp[7].xxxx; 29: MUL temp[0].x, const[7].wwww, temp[0].xxxx; 30: MUL temp[0].x, input[3].zzzz, temp[0].xxxx; 31: MAD temp[0].xy, temp[0].xxxx, temp[4].xyyy, temp[2].xyyy; 32: RCP temp[2].x, const[6].xxxx; 33: RCP temp[2].y, const[6].yyyy; 34: MUL temp[6].xy, temp[0].xyyy, temp[2].xyyy; 35: ADD temp[0].x, const[7].yyyy, -temp[5].xxxx; 36: MUL temp[0].x, input[1].xxxx, temp[0].xxxx; 37: MAD temp[0].x, input[1].yyyy, temp[5].xxxx, temp[0].xxxx; 38: ADD temp[0].x, temp[0].xxxx, -const[5].xxxx; 39: MOV temp[6].z, temp[0].xxxx; 40: SLT temp[0].x, none.0000, temp[1].wwww; 41: SLT temp[9].x, temp[1].wwww, none.0000; 42: ADD temp[0].x, temp[0], -temp[9]; 43: MUL temp[0], temp[0].xxxx, temp[6]; 44: MOV output[2], input[2].xxxx; 45: MOV temp[8], temp[0]; 46: MOV output[1].xy, input[3].xyxx; 47: MOV output[0], temp[8]; 48: MOV output[3], temp[8]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: SLT temp[0].x, const[7].x___, const[4].x___; 1: ADD temp[1].x, const[7].y___, -temp[0].x___; 2: MUL temp[1].xy, input[0].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[0].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[7].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[4].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[4].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: MUL temp[2].xy, const[6].xy__, temp[1].xy__; 9: RCP temp[3].x, temp[1].w___; 10: MUL temp[2].xy, temp[2].xy__, temp[3].xx__; 11: MUL temp[3].xyw, const[0].xy_w, input[4].zz_z; 12: MAD temp[3].xyw, const[1].xy_w, input[4].ww_w, temp[3].xy_w; 13: ADD temp[3].xyw, temp[3].xy_w, const[3].xy_w; 14: MUL temp[4].xy, const[6].xy__, temp[3].xy__; 15: RCP temp[3].x, temp[3].w___; 16: MUL temp[3].xy, temp[4].xy__, temp[3].xx__; 17: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].x___; 20: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 21: MOV temp[4].x, -temp[3].y___; 22: MOV temp[4].y, temp[3]._x__; 23: RCP temp[3].x, temp[1].w___; 24: SLT temp[5].x, const[7].w___, const[4].x___; 25: MOV temp[6].w, const[7].___y; 26: ADD temp[7].x, const[7].y___, -temp[3].x___; 27: MUL temp[7].x, temp[0].y___, temp[7].x___; 28: MAD temp[0].x, temp[0].x___, temp[3].x___, temp[7].x___; 29: MUL temp[0].x, const[7].w___, temp[0].x___; 30: MUL temp[0].x, input[3].z___, temp[0].x___; 31: MAD temp[0].xy, temp[0].xx__, temp[4].xy__, temp[2].xy__; 32: RCP temp[2].x, const[6].x___; 33: RCP temp[2].y, const[6]._y__; 34: MUL temp[6].xy, temp[0].xy__, temp[2].xy__; 35: ADD temp[0].x, const[7].y___, -temp[5].x___; 36: MUL temp[0].x, input[1].x___, temp[0].x___; 37: MAD temp[0].x, input[1].y___, temp[5].x___, temp[0].x___; 38: ADD temp[0].x, temp[0].x___, -const[5].x___; 39: MOV temp[6].z, temp[0].__x_; 40: SLT temp[0].x, none.0___, temp[1].w___; 41: SLT temp[9].x, temp[1].w___, none.0___; 42: ADD temp[0].x, temp[0].x___, -temp[9].x___; 43: MUL temp[0], temp[0].xxxx, temp[6]; 44: MOV output[2], input[2].xxxx; 45: MOV temp[8], temp[0]; 46: MOV output[1].xy, input[3].xy__; 47: MOV output[0], temp[8]; 48: MOV output[3], temp[8]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[4].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[0].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[0].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[7].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[4].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[4].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: MUL temp[2].xy, const[6].xy__, temp[1].xy__; 9: RCP temp[3].x, temp[1].w___; 10: MUL temp[2].xy, temp[2].xy__, temp[3].xx__; 11: MUL temp[3].xyw, const[0].xy_w, input[4].zz_z; 12: MAD temp[3].xyw, const[1].xy_w, input[4].ww_w, temp[3].xy_w; 13: ADD temp[3].xyw, temp[3].xy_w, const[3].xy_w; 14: MUL temp[4].xy, const[6].xy__, temp[3].xy__; 15: RCP temp[3].x, temp[3].w___; 16: MUL temp[3].xy, temp[4].xy__, temp[3].xx__; 17: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].x___; 20: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 21: MOV temp[4].x, -temp[3].y___; 22: MOV temp[4].y, temp[3]._x__; 23: RCP temp[3].x, temp[1].w___; 24: SLT temp[5].x, const[7].w___, const[4].x___; 25: MOV temp[6].w, none.___1; 26: ADD temp[7].x, none.1___, -temp[3].x___; 27: MUL temp[7].x, temp[0].y___, temp[7].x___; 28: MAD temp[0].x, temp[0].x___, temp[3].x___, temp[7].x___; 29: MUL temp[0].x, const[7].w___, temp[0].x___; 30: MUL temp[0].x, input[3].z___, temp[0].x___; 31: MAD temp[0].xy, temp[0].xx__, temp[4].xy__, temp[2].xy__; 32: RCP temp[2].x, const[6].x___; 33: RCP temp[2].y, const[6]._y__; 34: MUL temp[6].xy, temp[0].xy__, temp[2].xy__; 35: ADD temp[0].x, none.1___, -temp[5].x___; 36: MUL temp[0].x, input[1].x___, temp[0].x___; 37: MAD temp[0].x, input[1].y___, temp[5].x___, temp[0].x___; 38: ADD temp[0].x, temp[0].x___, -const[5].x___; 39: MOV temp[6].z, temp[0].__x_; 40: SLT temp[0].x, none.0___, temp[1].w___; 41: SLT temp[9].x, temp[1].w___, none.0___; 42: ADD temp[0].x, temp[0].x___, -temp[9].x___; 43: MUL temp[0], temp[0].xxxx, temp[6]; 44: MOV output[2], input[2].xxxx; 45: MOV output[1].xy, input[3].xy__; 46: MOV output[0], temp[0]; 47: MOV output[3], temp[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[4].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[0].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[0].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[7].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[4].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[4].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: MUL temp[2].xy, const[6].xy__, temp[1].xy__; 9: RCP temp[3].x, temp[1].w___; 10: MUL temp[2].xy, temp[2].xy__, temp[3].xx__; 11: MUL temp[3].xyw, const[0].xy_w, input[4].zz_z; 12: MAD temp[3].xyw, const[1].xy_w, input[4].ww_w, temp[3].xy_w; 13: ADD temp[3].xyw, temp[3].xy_w, const[3].xy_w; 14: MUL temp[4].xy, const[6].xy__, temp[3].xy__; 15: RCP temp[3].x, temp[3].w___; 16: MUL temp[3].xy, temp[4].xy__, temp[3].xx__; 17: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].x___; 20: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 21: MOV temp[4].x, -temp[3].y___; 22: MOV temp[4].y, temp[3]._x__; 23: RCP temp[3].x, temp[1].w___; 24: MOV temp[8], const[4].x___; 25: SLT temp[5].x, const[7].w___, temp[8]; 26: MOV temp[6].w, none.___1; 27: ADD temp[7].x, none.1___, -temp[3].x___; 28: MUL temp[7].x, temp[0].y___, temp[7].x___; 29: MAD temp[0].x, temp[0].x___, temp[3].x___, temp[7].x___; 30: MUL temp[0].x, const[7].w___, temp[0].x___; 31: MUL temp[0].x, input[3].z___, temp[0].x___; 32: MAD temp[0].xy, temp[0].xx__, temp[4].xy__, temp[2].xy__; 33: RCP temp[2].x, const[6].x___; 34: RCP temp[2].y, const[6]._y__; 35: MUL temp[6].xy, temp[0].xy__, temp[2].xy__; 36: ADD temp[0].x, none.1___, -temp[5].x___; 37: MUL temp[0].x, input[1].x___, temp[0].x___; 38: MAD temp[0].x, input[1].y___, temp[5].x___, temp[0].x___; 39: ADD temp[0].x, temp[0].x___, -const[5].x___; 40: MOV temp[6].z, temp[0].__x_; 41: SLT temp[0].x, none.0___, temp[1].w___; 42: SLT temp[9].x, temp[1].w___, none.0___; 43: ADD temp[0].x, temp[0].x___, -temp[9].x___; 44: MUL temp[0], temp[0].xxxx, temp[6]; 45: MOV output[2], input[2].xxxx; 46: MOV output[1].xy, input[3].xy__; 47: MOV output[0], temp[0]; 48: MOV output[3], temp[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[4].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[0].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[0].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[7].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[4].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[4].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: MUL temp[2].xy, const[6].xy__, temp[1].xy__; 9: RCP temp[3].x, temp[1].w___; 10: MUL temp[2].xy, temp[2].xy__, temp[3].xx__; 11: MUL temp[3].xyw, const[0].xy_w, input[4].zz_z; 12: MAD temp[3].xyw, const[1].xy_w, input[4].ww_w, temp[3].xy_w; 13: ADD temp[3].xyw, temp[3].xy_w, const[3].xy_w; 14: MUL temp[4].xy, const[6].xy__, temp[3].xy__; 15: RCP temp[3].x, temp[3].w___; 16: MUL temp[3].xy, temp[4].xy__, temp[3].xx__; 17: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].x___; 20: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 21: MOV temp[4].x, -temp[3].y___; 22: MOV temp[4].y, temp[3]._x__; 23: RCP temp[3].x, temp[1].w___; 24: MOV temp[5], const[4].x___; 25: SLT temp[5].x, const[7].w___, temp[5]; 26: MOV temp[6].w, none.___1; 27: ADD temp[7].x, none.1___, -temp[3].x___; 28: MUL temp[7].x, temp[0].y___, temp[7].x___; 29: MAD temp[0].x, temp[0].x___, temp[3].x___, temp[7].x___; 30: MUL temp[0].x, const[7].w___, temp[0].x___; 31: MUL temp[0].x, input[3].z___, temp[0].x___; 32: MAD temp[0].xy, temp[0].xx__, temp[4].xy__, temp[2].xy__; 33: RCP temp[2].x, const[6].x___; 34: RCP temp[2].y, const[6]._y__; 35: MUL temp[6].xy, temp[0].xy__, temp[2].xy__; 36: ADD temp[0].x, none.1___, -temp[5].x___; 37: MUL temp[0].x, input[1].x___, temp[0].x___; 38: MAD temp[0].x, input[1].y___, temp[5].x___, temp[0].x___; 39: ADD temp[0].x, temp[0].x___, -const[5].x___; 40: MOV temp[6].z, temp[0].__x_; 41: SLT temp[0].x, none.0___, temp[1].w___; 42: SLT temp[1].x, temp[1].w___, none.0___; 43: ADD temp[0].x, temp[0].x___, -temp[1].x___; 44: MUL temp[0], temp[0].xxxx, temp[6]; 45: MOV output[2], input[2].xxxx; 46: MOV output[1].xy, input[3].xy__; 47: MOV output[0], temp[0]; 48: MOV output[3], temp[0]; CONST[7] = { 0.0000 1.0000 0.1250 0.5000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[4].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[0].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[0].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[7].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[4].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[4].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: MUL temp[2].xy, const[6].xy__, temp[1].xy__; 9: RCP temp[3].x, temp[1].w___; 10: MUL temp[2].xy, temp[2].xy__, temp[3].xx__; 11: MUL temp[3].xyw, const[0].xy_w, input[4].zz_z; 12: MAD temp[3].xyw, const[1].xy_w, input[4].ww_w, temp[3].xy_w; 13: ADD temp[3].xyw, temp[3].xy_w, const[3].xy_w; 14: MUL temp[4].xy, const[6].xy__, temp[3].xy__; 15: RCP temp[3].x, temp[3].w___; 16: MUL temp[3].xy, temp[4].xy__, temp[3].xx__; 17: ADD temp[3].xy, temp[3].xy__, -temp[2].xy__; 18: DP4 temp[4].x, temp[3].xy00, temp[3].xy00; 19: RSQ temp[4].x, temp[4].x___; 20: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 21: MOV temp[4].x, -temp[3].y___; 22: MOV temp[4].y, temp[3]._x__; 23: RCP temp[3].x, temp[1].w___; 24: MOV temp[5], const[4].x___; 25: SLT temp[5].x, const[7].w___, temp[5]; 26: MOV temp[6].w, none.___1; 27: ADD temp[7].x, none.1___, -temp[3].x___; 28: MUL temp[7].x, temp[0].y___, temp[7].x___; 29: MAD temp[0].x, temp[0].x___, temp[3].x___, temp[7].x___; 30: MUL temp[0].x, const[7].w___, temp[0].x___; 31: MUL temp[0].x, input[3].z___, temp[0].x___; 32: MAD temp[0].xy, temp[0].xx__, temp[4].xy__, temp[2].xy__; 33: RCP temp[2].x, const[6].x___; 34: RCP temp[2].y, const[6]._y__; 35: MUL temp[6].xy, temp[0].xy__, temp[2].xy__; 36: ADD temp[0].x, none.1___, -temp[5].x___; 37: MUL temp[0].x, input[1].x___, temp[0].x___; 38: MAD temp[0].x, input[1].y___, temp[5].x___, temp[0].x___; 39: ADD temp[0].x, temp[0].x___, -const[5].x___; 40: MOV temp[6].z, temp[0].__x_; 41: SLT temp[0].x, none.0___, temp[1].w___; 42: SLT temp[1].x, temp[1].w___, none.0___; 43: ADD temp[0].x, temp[0].x___, -temp[1].x___; 44: MUL temp[0], temp[0].xxxx, temp[6]; 45: MOV output[2], input[2].xxxx; 46: MOV output[1].xy, input[3].xy__; 47: MOV output[0], temp[0]; 48: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x0010000a dst: 0t op: VE_SET_LESS_THAN src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01ff0082 reg: 4c swiz: X/ U/ U/ U src2: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 1: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0000 reg: 0t swiz: -X/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 2: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01f80020 reg: 1t swiz: X/ X/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 3: op: 0x00300004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01fb4001 reg: 0i swiz: Z/ W/ U/ U src1: 0x01f80000 reg: 0t swiz: X/ X/ U/ U src2: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U 4: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fa40e2 reg: 7c swiz: Z/ Z/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 5: op: 0x00b02002 dst: 1t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00380081 reg: 4i swiz: X/ X/ U/ X src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 6: op: 0x00b02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00792081 reg: 4i swiz: Y/ Y/ U/ Y src2: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W 7: op: 0x00b02003 dst: 1t op: VE_ADD src0: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 8: op: 0x00304002 dst: 2t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 9: op: 0x00106046 dst: 3t op: ME_RECIP_DX src0: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 10: op: 0x00304002 dst: 2t op: VE_MULTIPLY src0: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src1: 0x01f80060 reg: 3t swiz: X/ X/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 11: op: 0x00b06002 dst: 3t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00ba4081 reg: 4i swiz: Z/ Z/ U/ Z src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 12: op: 0x00b06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00fb6081 reg: 4i swiz: W/ W/ U/ W src2: 0x00f90060 reg: 3t swiz: X/ Y/ U/ W 13: op: 0x00b06003 dst: 3t op: VE_ADD src0: 0x00f90060 reg: 3t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 14: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 15: op: 0x00106046 dst: 3t op: ME_RECIP_DX src0: 0x00db6060 reg: 3t swiz: W/ W/ W/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 16: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f80060 reg: 3t swiz: X/ X/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 17: op: 0x00306003 dst: 3t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x1ff90040 reg: 2t swiz: -X/-Y/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 18: op: 0x00108001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01210060 reg: 3t swiz: X/ Y/ 0/ 0 src1: 0x01210060 reg: 3t swiz: X/ Y/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x00108048 dst: 4t op: ME_RECIP_SQRT_DX src0: 0x00000080 reg: 4t swiz: X/ X/ X/ X src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 20: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01f80080 reg: 4t swiz: X/ X/ U/ U src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 21: op: 0x00108003 dst: 4t op: VE_ADD src0: 0x1fff2060 reg: 3t swiz: -Y/-U/-U/-U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 22: op: 0x00208003 dst: 4t op: VE_ADD src0: 0x01f8e060 reg: 3t swiz: U/ X/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00106046 dst: 3t op: ME_RECIP_DX src0: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01ff0082 reg: 4c swiz: X/ U/ U/ U src1: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 src2: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 25: op: 0x0010a00a dst: 5t op: VE_SET_LESS_THAN src0: 0x01ff60e2 reg: 7c swiz: W/ U/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 26: op: 0x0080c003 dst: 6t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 27: op: 0x0010e003 dst: 7t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0060 reg: 3t swiz: -X/-U/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 28: op: 0x0010e002 dst: 7t op: VE_MULTIPLY src0: 0x01ff2000 reg: 0t swiz: Y/ U/ U/ U src1: 0x01ff00e0 reg: 7t swiz: X/ U/ U/ U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 29: op: 0x00100080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff0060 reg: 3t swiz: X/ U/ U/ U src2: 0x01ff00e0 reg: 7t swiz: X/ U/ U/ U 30: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff60e2 reg: 7c swiz: W/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 31: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff4061 reg: 3i swiz: Z/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00300080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f80000 reg: 0t swiz: X/ X/ U/ U src1: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src2: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U 33: op: 0x00104046 dst: 2t op: ME_RECIP_DX src0: 0x000000c2 reg: 6c swiz: X/ X/ X/ X src1: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 34: op: 0x00204046 dst: 2t op: ME_RECIP_DX src0: 0x004920c2 reg: 6c swiz: Y/ Y/ Y/ Y src1: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 35: op: 0x0030c002 dst: 6t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 36: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff00a0 reg: 5t swiz: -X/-U/-U/-U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 37: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff0021 reg: 1i swiz: X/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 38: op: 0x00100004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01ff2021 reg: 1i swiz: Y/ U/ U/ U src1: 0x01ff00a0 reg: 5t swiz: X/ U/ U/ U src2: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U 39: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x1fff00a2 reg: 5c swiz: -X/-U/-U/-U src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 40: op: 0x0040c003 dst: 6t op: VE_ADD src0: 0x01c7e000 reg: 0t swiz: U/ U/ X/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 41: op: 0x0010000a dst: 0t op: VE_SET_LESS_THAN src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01ff6020 reg: 1t swiz: W/ U/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 42: op: 0x0010200a dst: 1t op: VE_SET_LESS_THAN src0: 0x01ff6020 reg: 1t swiz: W/ U/ U/ U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 43: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x1fff0020 reg: 1t swiz: -X/-U/-U/-U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 44: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00000000 reg: 0t swiz: X/ X/ X/ X src1: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 45: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00000041 reg: 2i swiz: X/ X/ X/ X src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 46: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90061 reg: 3i swiz: X/ Y/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 47: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 48: op: 0x00f06203 dst: 3o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL CONST[2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM FLT32 { 0.5000, 26.0000, 0.0000, 127.5000} IMM FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: ADD TEMP[0].x, IN[0].yyyy, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[2].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: MAD TEMP[0].x, IMM[0].yyyy, TEMP[0].xxxx, CONST[0].xxxx 6: ADD TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 7: RCP TEMP[2].x, CONST[2].yyyy 8: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 9: MOV TEMP[1].y, TEMP[0].xxxx 10: MOV TEMP[0].x, IMM[0].zzzz 11: RCP TEMP[2].x, CONST[2].yyyy 12: MOV TEMP[0].y, TEMP[2].xxxx 13: MAD TEMP[0].xy, IMM[1].xxxx, TEMP[0].xyyy, TEMP[1].xyyy 14: TEX TEMP[0].xy, TEMP[0].xyyy, SAMP[0], 2D 15: MUL TEMP[0].xy, IMM[0].wwww, TEMP[0].xyyy 16: RCP TEMP[2].x, TEMP[0].yyyy 17: MUL TEMP[2].x, IN[1].xxxx, TEMP[2].xxxx 18: FRC TEMP[2].x, TEMP[2].xxxx 19: MUL TEMP[2].x, TEMP[0].yyyy, TEMP[2].xxxx 20: SGE TEMP[2].x, TEMP[2].xxxx, TEMP[0].xxxx 21: SLT TEMP[2].x, IMM[0].xxxx, TEMP[2].xxxx 22: CMP TEMP[0].x, -TEMP[2].xxxx, IMM[1].yyyy, IMM[0].zzzz 23: KIL -TEMP[0].xxxx 24: TEX TEMP[0], TEMP[1].xyyy, SAMP[0], 2D 25: MOV OUT[0], TEMP[0] 26: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0].xy, temp[0].xyyy, 2D[0]; 15: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 16: RCP temp[2].x, temp[0].yyyy; 17: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 18: FRC temp[2].x, temp[2].xxxx; 19: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 20: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 21: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 22: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 23: KIL -temp[0].xxxx; 24: TEX temp[0], temp[1].xyyy, 2D[0]; 25: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0].xy, temp[0].xyyy, 2D[0]; 15: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 16: RCP temp[2].x, temp[0].yyyy; 17: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 18: FRC temp[2].x, temp[2].xxxx; 19: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 20: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 21: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 22: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 23: KIL -temp[0].xxxx; 24: TEX temp[0], temp[1].xyyy, 2D[0]; 25: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0].xy, temp[0].xyyy, 2D[0]; 15: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 16: RCP temp[2].x, temp[0].yyyy; 17: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 18: FRC temp[2].x, temp[2].xxxx; 19: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 20: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 21: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 22: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 23: KIL -temp[0].xxxx; 24: TEX temp[0], temp[1].xyyy, 2D[0]; 25: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0].xy, temp[0].xyyy, 2D[0]; 15: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 16: RCP temp[2].x, temp[0].yyyy; 17: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 18: FRC temp[2].x, temp[2].xxxx; 19: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 20: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 21: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 22: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 23: KIL -temp[0].xxxx; 24: TEX temp[0], temp[1].xyyy, 2D[0]; 25: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0].xy, temp[0].xyyy, 2D[0]; 15: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 16: RCP temp[2].x, temp[0].yyyy; 17: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 18: FRC temp[2].x, temp[2].xxxx; 19: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 20: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 21: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 22: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 23: KIL -temp[0].xxxx; 24: TEX temp[0], temp[1].xyyy, 2D[0]; 25: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[3], temp[0].xyyy, 2D[0]; 15: MOV temp[0].xy, temp[3]; 16: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 17: RCP temp[2].x, temp[0].yyyy; 18: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 19: FRC temp[2].x, temp[2].xxxx; 20: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 21: SGE temp[2].x, temp[2].xxxx, temp[0].xxxx; 22: SLT temp[2].x, const[3].xxxx, temp[2].xxxx; 23: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 24: KIL -temp[0].xxxx; 25: TEX temp[0], temp[1].xyyy, 2D[0]; 26: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[4].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[4]; 6: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 7: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 8: RCP temp[2].x, const[2].yyyy; 9: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 10: MOV temp[1].y, temp[0].xxxx; 11: MOV temp[0].x, const[3].zzzz; 12: RCP temp[2].x, const[2].yyyy; 13: MOV temp[0].y, temp[2].xxxx; 14: MAD temp[0].xy, const[4].xxxx, temp[0].xyyy, temp[1].xyyy; 15: TEX temp[3], temp[0].xyyy, 2D[0]; 16: MOV temp[0].xy, temp[3]; 17: MUL temp[0].xy, const[3].wwww, temp[0].xyyy; 18: RCP temp[2].x, temp[0].yyyy; 19: MUL temp[2].x, input[1].xxxx, temp[2].xxxx; 20: FRC temp[2].x, temp[2].xxxx; 21: MUL temp[2].x, temp[0].yyyy, temp[2].xxxx; 22: ADD temp[5].x, temp[2].xxxx, -temp[0].xxxx; 23: CMP temp[2].x, temp[5], none.0000, none.1111; 24: ADD temp[6].x, const[3].xxxx, -temp[2].xxxx; 25: CMP temp[2].x, temp[6], none.1111, none.0000; 26: CMP temp[0].x, -temp[2].xxxx, const[4].yyyy, const[3].zzzz; 27: KIL -temp[0].xxxx; 28: TEX temp[0], temp[1].xyyy, 2D[0]; 29: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[0].y___, const[3].x___; 1: RCP temp[1].x, const[2].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[4].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[4].x___; 6: MAD temp[0].x, const[3].y___, temp[0].x___, const[0].x___; 7: ADD temp[0].x, temp[0].x___, const[3].x___; 8: RCP temp[2].x, const[2].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: MOV temp[0].x, const[3].z___; 12: RCP temp[2].x, const[2].y___; 13: MOV temp[0].y, temp[2]._x__; 14: MAD temp[0].xy, const[4].xx__, temp[0].xy__, temp[1].xy__; 15: TEX temp[3].xy, temp[0].xy__, 2D[0]; 16: MOV temp[0].xy, temp[3].xy__; 17: MUL temp[0].xy, const[3].ww__, temp[0].xy__; 18: RCP temp[2].x, temp[0].y___; 19: MUL temp[2].x, input[1].x___, temp[2].x___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[2].x, temp[0].y___, temp[2].x___; 22: ADD temp[5].x, temp[2].x___, -temp[0].x___; 23: CMP temp[2].x, temp[5].x___, none.0___, none.1___; 24: ADD temp[6].x, const[3].x___, -temp[2].x___; 25: CMP temp[2].x, temp[6].x___, none.1___, none.0___; 26: CMP temp[0].x, -temp[2].x___, const[4].y___, const[3].z___; 27: KIL -temp[0].xxxx; 28: TEX temp[0], temp[1].xy__, 2D[0]; 29: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[0].y___, const[3].x___; 1: RCP temp[1].x, const[2].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[4].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[4].x___; 6: MAD temp[0].x, const[3].y___, temp[0].x___, const[0].x___; 7: ADD temp[0].x, temp[0].x___, const[3].x___; 8: RCP temp[2].x, const[2].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: MOV temp[0].x, const[3].z___; 12: RCP temp[2].x, const[2].y___; 13: MOV temp[0].y, temp[2]._x__; 14: MAD temp[0].xy, const[4].xx__, temp[0].xy__, temp[1].xy__; 15: TEX temp[3].xy, temp[0].xy__, 2D[0]; 16: MOV temp[0].xy, temp[3].xy__; 17: MUL temp[0].xy, const[3].ww__, temp[0].xy__; 18: RCP temp[2].x, temp[0].y___; 19: MUL temp[2].x, input[1].x___, temp[2].x___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[2].x, temp[0].y___, temp[2].x___; 22: ADD temp[5].x, temp[2].x___, -temp[0].x___; 23: CMP temp[2].x, temp[5].x___, none.0___, none.1___; 24: ADD temp[6].x, const[3].x___, -temp[2].x___; 25: CMP temp[2].x, temp[6].x___, none.1___, none.0___; 26: CMP temp[0].x, -temp[2].x___, const[4].y___, const[3].z___; 27: KIL -temp[0].xxxx; 28: TEX temp[0], temp[1].xy__, 2D[0]; 29: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, const[3].x___; 1: RCP temp[8].x, const[2].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[3].y___, temp[12].x___, const[0].x___; 7: ADD temp[14].x, temp[13].x___, const[3].x___; 8: RCP temp[15].x, const[2].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: MOV temp[17].x, const[3].z___; 12: RCP temp[18].x, const[2].y___; 13: MOV temp[17].y, temp[18]._x__; 14: MAD temp[19].xy, const[4].xx__, temp[17].xy__, temp[10].xy__; 15: TEX temp[20].xy, temp[19].xy__, 2D[0]; 16: MOV temp[21].xy, temp[20].xy__; 17: MUL temp[22].xy, const[3].ww__, temp[21].xy__; 18: RCP temp[23].x, temp[22].y___; 19: MUL temp[24].x, input[1].x___, temp[23].x___; 20: FRC temp[25].x, temp[24].x___; 21: MUL temp[26].x, temp[22].y___, temp[25].x___; 22: ADD temp[27].x, temp[26].x___, -temp[22].x___; 23: CMP temp[28].x, temp[27].x___, none.0___, none.1___; 24: ADD temp[29].x, const[3].x___, -temp[28].x___; 25: CMP temp[30].x, temp[29].x___, none.1___, none.0___; 26: CMP temp[31].x, -temp[30].x___, const[4].y___, const[3].z___; 27: KIL -temp[31].xxxx; 28: TEX temp[32], temp[10].xy__, 2D[0]; 29: MOV output[0], temp[32]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[2].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[3].y___, temp[12].x___, const[0].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[2].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: MOV temp[17].x, none.0___; 12: RCP temp[18].x, const[2].y___; 13: MOV temp[17].y, temp[18]._x__; 14: MAD temp[19].xy, const[4].xx__, temp[17].xy__, temp[10].xy__; 15: TEX temp[20].xy, temp[19].xy__, 2D[0]; 16: MUL temp[22].xy, const[3].ww__, temp[20].xy__; 17: RCP temp[23].x, temp[22].y___; 18: MUL temp[24].x, input[1].x___, temp[23].x___; 19: FRC temp[25].x, temp[24].x___; 20: MUL temp[26].x, temp[22].y___, temp[25].x___; 21: CMP temp[28].x, (temp[26] - temp[22]).x___, none.0___, none.1___; 22: ADD temp[29].x, none.H___, -temp[28].x___; 23: CMP temp[30].x, temp[29].x___, none.1___, none.0___; 24: CMP temp[31].x, -temp[30].x___, none.1___, none.0___; 25: KIL -temp[31].xxxx; 26: TEX temp[32], temp[10].xy__, 2D[0]; 27: MOV output[0], temp[32]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[2].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[3].y___, temp[12].x___, const[0].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[2].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: MOV temp[17].x, none.0___; 12: RCP temp[18].x, const[2].y___; 13: MOV temp[17].y, temp[18]._x__; 14: MAD temp[19].xy, const[4].xx__, temp[17].xy__, temp[10].xy__; 15: TEX temp[20].xy, temp[19].xy__, 2D[0]; 16: MUL temp[22].xy, const[3].ww__, temp[20].xy__; 17: RCP temp[23].x, temp[22].y___; 18: MUL temp[24].x, input[1].x___, temp[23].x___; 19: FRC temp[25].x, temp[24].x___; 20: MUL temp[26].x, temp[22].y___, temp[25].x___; 21: CMP temp[28].x, (temp[26] - temp[22]).x___, none.0___, none.1___; 22: ADD temp[29].x, none.H___, -temp[28].x___; 23: CMP temp[30].x, temp[29].x___, none.1___, none.0___; 24: CMP temp[31].x, -temp[30].x___, none.1___, none.0___; 25: MOV temp[0], -temp[31].xxxx; 26: KIL temp[0]; 27: TEX temp[32], temp[10].xy__, 2D[0]; 28: MOV output[0], temp[32]; CONST[2] = { 0.5000 26.0000 0.0000 127.5000 } CONST[3] = { 2.0000 1.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[1].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[2].y___, temp[12].x___, const[0].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[1].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: MOV temp[17].x, none.0___; 12: RCP temp[18].x, const[1].y___; 13: MOV temp[17].y, temp[18]._x__; 14: MAD temp[19].xy, const[3].xx__, temp[17].xy__, temp[10].xy__; 15: TEX temp[20].xy, temp[19].xy__, 2D[0]; 16: MUL temp[22].xy, const[2].ww__, temp[20].xy__; 17: RCP temp[23].x, temp[22].y___; 18: MUL temp[24].x, input[1].x___, temp[23].x___; 19: FRC temp[25].x, temp[24].x___; 20: MUL temp[26].x, temp[22].y___, temp[25].x___; 21: CMP temp[28].x, (temp[26] - temp[22]).x___, none.0___, none.1___; 22: ADD temp[29].x, none.H___, -temp[28].x___; 23: CMP temp[30].x, temp[29].x___, none.1___, none.0___; 24: CMP temp[31].x, -temp[30].x___, none.1___, none.0___; 25: MOV temp[0], -temp[31].xxxx; 26: KIL temp[0]; 27: TEX temp[32], temp[10].xy__, 2D[0]; 28: MOV output[0], temp[32]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0] MAD temp[7].x, src0.y__, src0.111, src0.H__ 1: src0.xyz = const[1] REPL_ALPHA temp[8].x RCP, src0.x 2: src0.xyz = temp[7], src1.xyz = temp[8] MAD temp[9].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ 4: src0.xyz = temp[9] FRC temp[11].x, src0.x__ 5: src0.xyz = temp[9], src1.xyz = temp[11] MAD temp[12].x, src0.x__, src0.111, -src1.x__ 6: src0.xyz = const[2], src1.xyz = temp[12], src2.xyz = const[0] MAD temp[13].x, src0.y__, src1.x__, src2.x__ 7: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 8: src0.xyz = const[1] REPL_ALPHA temp[15].x RCP, src0.y 9: src0.xyz = temp[14], src1.xyz = temp[15] MAD temp[16].x, src0.x__, src1.x__, src0.000 10: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 11: MAD temp[17].x, src0.0__, src0.111, src0.000 12: src0.xyz = const[1] REPL_ALPHA temp[18].x RCP, src0.y 13: src0.xyz = temp[18] MAD temp[17].y, src0._x_, src0.111, src0.000 14: src0.xyz = const[3], src1.xyz = temp[17], src2.xyz = temp[10] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 15: TEX temp[20].xy, temp[19].xy__, 2D[0]; 16: src0.xyz = temp[20], src0.w = const[2] MAD temp[22].xy, src0.ww_, src0.xy_, src0.000 17: src0.xyz = temp[22] REPL_ALPHA temp[23].x RCP, src0.y 18: src0.xyz = input[1], src1.xyz = temp[23] MAD temp[24].x, src0.x__, src1.x__, src0.000 19: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 20: src0.xyz = temp[22], src1.xyz = temp[25] MAD temp[26].x, src0.y__, src1.x__, src0.000 21: src0.xyz = temp[22], src1.xyz = temp[26], srcp.xyz = (src1 - src0) CMP temp[28].x, src0.1__, src0.0__, srcp.x__ 22: src0.xyz = temp[28] MAD temp[29].x, src0.H__, src0.111, -src0.x__ 23: src0.xyz = temp[29] CMP temp[30].x, src0.0__, src0.1__, src0.x__ 24: src0.xyz = temp[30] CMP temp[31].x, src0.0__, src0.1__, -src0.x__ 25: src0.xyz = temp[31] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 26: KIL temp[0]; 27: TEX temp[32], temp[10].xy__, 2D[0]; 28: src0.xyz = temp[32], src0.w = temp[32] 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] MAD temp[17].x, src0.0__, src0.111, src0.000 RCP temp[15].w, src0.y 1: src0.xyz = input[0], src1.xyz = const[1] MAD temp[7].x, src0.y__, src0.111, src0.H__ RCP temp[8].w, src1.x 2: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[8], src2.xyz = const[1] MAD temp[9].x, src0.x__, src0.w__, src0.000 RCP temp[18].w, src2.y 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ FRC temp[11].w, src0.x 4: src0.xyz = temp[18], src0.w = temp[18], src1.xyz = temp[9], src1.w = temp[11] MAD temp[17].y, src0._w_, src0.111, src0.000 MAD temp[12].w, src1.x, src0.1, -src1.w 5: src0.xyz = const[2], src0.w = temp[12], src1.xyz = temp[12], src2.xyz = const[0] MAD temp[13].x, src0.y__, src0.w__, src2.x__ 6: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 7: src0.xyz = temp[14], src0.w = temp[15], src1.xyz = temp[15] MAD temp[16].x, src0.x__, src0.w__, src0.000 8: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 9: src0.xyz = const[3], src1.xyz = temp[17], src2.xyz = temp[10] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 10: BEGIN_TEX; 11: TEX temp[32], temp[10].xy__, 2D[0]; 12: TEX temp[20].xy, temp[19].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[20], src0.w = const[2] SEM_WAIT MAD temp[22].xy, src0.ww_, src0.xy_, src0.000 14: src0.xyz = temp[22] RCP temp[23].w, src0.y 15: src0.xyz = input[1], src0.w = temp[23], src1.xyz = temp[23] MAD temp[24].x, src0.x__, src0.w__, src0.000 16: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 17: src0.xyz = temp[22], src1.xyz = temp[25] MAD temp[26].x, src0.y__, src1.x__, src0.000 18: src0.xyz = temp[22], src1.xyz = temp[26], srcp.xyz = (src1 - src0) CMP temp[28].x, src0.1__, src0.0__, srcp.x__ 19: src0.xyz = temp[28] MAD temp[29].x, src0.H__, src0.111, -src0.x__ 20: src0.xyz = temp[29] CMP temp[30].x, src0.0__, src0.1__, src0.x__ 21: src0.xyz = temp[30] CMP temp[31].x, src0.0__, src0.1__, -src0.x__ 22: src0.xyz = temp[31] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 23: BEGIN_TEX; 24: KIL temp[0]; 25: src0.xyz = temp[32], src0.w = temp[32] 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] MAD temp[17].x, src0.0__, src0.111, src0.000 RCP temp[15].w, src0.y 1: src0.xyz = input[0], src1.xyz = const[1] MAD temp[7].x, src0.y__, src0.111, src0.H__ RCP temp[8].w, src1.x 2: src0.xyz = temp[7], src0.w = temp[8], src2.xyz = const[1] MAD temp[9].x, src0.x__, src0.w__, src0.000 RCP temp[18].w, src2.y 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ FRC temp[11].w, src0.x 4: src0.w = temp[18], src1.xyz = temp[9], src1.w = temp[11] MAD temp[17].y, src0._w_, src0.111, src0.000 MAD temp[12].w, src1.x, src0.1, -src1.w 5: src0.xyz = const[2], src0.w = temp[12], src2.xyz = const[0] MAD temp[13].x, src0.y__, src0.w__, src2.x__ 6: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 7: src0.xyz = temp[14], src0.w = temp[15] MAD temp[16].x, src0.x__, src0.w__, src0.000 8: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 9: src0.xyz = const[3], src1.xyz = temp[17], src2.xyz = temp[10] MAD temp[19].xy, src0.xx_, src1.xy_, src2.xy_ 10: BEGIN_TEX; 11: TEX temp[32], temp[10].xy__, 2D[0]; 12: TEX temp[20].xy, temp[19].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[20], src0.w = const[2] SEM_WAIT MAD temp[22].xy, src0.ww_, src0.xy_, src0.000 14: src0.xyz = temp[22] RCP temp[23].w, src0.y 15: src0.xyz = input[1], src0.w = temp[23] MAD temp[24].x, src0.x__, src0.w__, src0.000 16: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 17: src0.xyz = temp[22], src1.xyz = temp[25] MAD temp[26].x, src0.y__, src1.x__, src0.000 18: src0.xyz = temp[22], src1.xyz = temp[26], srcp.xyz = (src1 - src0) CMP temp[28].x, src0.1__, src0.0__, srcp.x__ 19: src0.xyz = temp[28] MAD temp[29].x, src0.H__, src0.111, -src0.x__ 20: src0.xyz = temp[29] CMP temp[30].x, src0.0__, src0.1__, src0.x__ 21: src0.xyz = temp[30] CMP temp[31].x, src0.0__, src0.1__, -src0.x__ 22: src0.xyz = temp[31] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 23: BEGIN_TEX; 24: KIL temp[0]; 25: src0.xyz = temp[32], src0.w = temp[32] 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] MAD temp[2].x, src0.0__, src0.11_, src0.00_ RCP temp[0].w, src0.y 1: src0.xyz = input[0], src1.xyz = const[1] MAD temp[0].x, src0.y__, src0.1__, src0.H__ RCP temp[1].w, src1.x 2: src0.xyz = temp[0], src0.w = temp[1], src2.xyz = const[1] MAD temp[0].x, src0.x__, src0.w__, src0.0__ RCP temp[1].w, src2.y 3: src0.xyz = temp[0] FRC temp[3].x, src0.x__ FRC temp[2].w, src0.x 4: src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[2] MAD temp[2].y, src0._w_, src0.11_, src0.00_ MAD temp[1].w, src1.x, src0.1, -src1.w 5: src0.xyz = const[2], src0.w = temp[1], src2.xyz = const[0] MAD temp[0].x, src0.y__, src0.w__, src2.x__ 6: src0.xyz = temp[0] MAD temp[0].x, src0.x__, src0.1__, src0.H__ 7: src0.xyz = temp[0], src0.w = temp[0] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 8: src0.xyz = temp[0] MAD temp[3].y, src0._x_, src0.11_, src0.00_ 9: src0.xyz = const[3], src1.xyz = temp[2], src2.xyz = temp[3] MAD temp[0].xy, src0.xx_, src1.xy_, src2.xy_ 10: BEGIN_TEX; 11: TEX temp[2], temp[3].xy__, 2D[0]; 12: TEX temp[0].xy, temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 13: src0.xyz = temp[0], src0.w = const[2] SEM_WAIT MAD temp[0].xy, src0.ww_, src0.xy_, src0.00_ 14: src0.xyz = temp[0] RCP temp[0].w, src0.y 15: src0.xyz = input[1], src0.w = temp[0] MAD temp[0].z, src0.__x, src0.__w, src0.__0 16: src0.xyz = temp[0] FRC temp[0].z, src0.__z 17: src0.xyz = temp[0], src1.xyz = temp[0] MAD temp[1].x, src0.y__, src1.z__, src0.0__ 18: src0.xyz = temp[0], src1.xyz = temp[1], srcp.xyz = (src1 - src0) CMP temp[0].x, src0.1__, src0.0__, srcp.x__ 19: src0.xyz = temp[0] MAD temp[0].x, src0.H__, src0.1__, -src0.x__ 20: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, src0.x__ 21: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 22: src0.xyz = temp[0] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 23: BEGIN_TEX; 24: KIL temp[0]; 25: 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 pc=5************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 9, tex_end: 0 (code_addr: 00000240) 0: xyz: c1 t0 t0 bias-> t2.x (00880021) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 0.0 1.0 0.0 op: 00050a94 w: c1.y c1.x c1.x op: 05000001 1: xyz: t0 c1 t0 bias-> t0.x (00800840) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.yyy 1.0 0.5 op: 00058a82 w: c1.x t0.x t0.x op: 05000003 2: xyz: t0 t0 c1 bias-> t0.x (00821000) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t0.xyz t1.www 0.0 op: 00050600 w: c1.y t0.x t0.x op: 05000007 3: xyz: t0 t0 t0 bias-> t3.x (008c0000) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t0.xyz t0.xxx t0.xxx op: 04804080 w: t0.x t0.x t0.x op: 03800000 4: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t1 t2 t0 bias-> t1.w (00840081) xyz: t1.www 1.0 0.0 op: 00050a8c w: t0.x 1.0 -t2.w op: 000a8883 5: xyz: c2 t0 c0 bias-> t0.x (00820022) w: t1 t0 t0 bias-> (00000001) xyz: c2.yyy t1.www c0.xyz op: 00020602 w: c2.x c2.x c2.x op: 00000000 6: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.5 op: 00058a80 w: t0.x t0.x t0.x op: 00000000 7: 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 8: xyz: t0 t0 t0 bias-> t3.y (010c0000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx 1.0 0.0 op: 00050a81 w: t0.x t0.x t0.x op: 00000000 9: xyz: c3 t2 t3 bias-> t0.xy (018030a3) w: t0 t0 t0 bias-> (00000000) xyz: c3.xxx t2.xyz t3.xyz op: 00020201 w: c3.x c3.x c3.x op: 00000000 NODE 1: alu_offset: 10, tex_offset: 0, alu_end: 9, tex_end: 1 (code_addr: 0002024a) TEX: TEX t2, t3, texture[0] (00008083) TEX t0, t0, texture[0] (00008000) 10: xyz: t0 t0 t0 bias-> t0.xy (01800000) w: c2 t0 t0 bias-> (00000022) xyz: c2.www t0.xyz 0.0 op: 0005000c 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.y t0.x t0.x op: 05000001 12: xyz: t1 t0 t0 bias-> t0.z (02000001) w: t0 t0 t0 bias-> (00000000) xyz: t1.xxx t0.www 0.0 op: 00050601 w: t1.x t1.x t1.x op: 00000000 13: xyz: t0 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t0.xxx t0.xxx op: 04804080 w: t0.x t0.x t0.x op: 00000000 14: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> (00000000) xyz: t0.yyy t0.zzz 0.0 op: 80050382 NOP w: t0.x t0.x t0.x op: 00000000 15: xyz: t0 t1 t0 sub-> t0.x (00800040) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 srcp.xyz op: 0423ca15 w: t0.x t0.x t0.x op: 00000000 16: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 0.5 1.0 -t0.xyz op: 00080a96 w: t0.x t0.x t0.x op: 00000000 17: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 t0.xyz op: 04000a94 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: 0.0 1.0 -t0.xyz op: 04080a94 w: t0.x t0.x t0.x op: 00000000 19: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: -t0.xxx 1.0 0.0 op: 00050aa1 w: -t0.x 1.0 0.0 op: 000408a0 NODE 2: alu_offset: 20, tex_offset: 2, alu_end: 0, tex_end: 0 (code_addr: 00402014) TEX: KIL t0, t0, texture[0] (00010000) 20: xyz: t2 t0 t0 bias-> o0.xyz (1c000002) w: t2 t0 t0 bias-> o0.w (01000002) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], PSIZE DCL OUT[2], GENERIC[12] DCL OUT[3], GENERIC[13] DCL CONST[0..7] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM FLT32 { 0.0000, 1.0000, 0.1250, 0.5000} 0: SLT TEMP[0].x, IMM[0].xxxx, CONST[5].xxxx 1: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[0].xxxx 2: MUL TEMP[1].xy, IN[1].xyyy, TEMP[1].xxxx 3: MAD TEMP[0].xy, IN[1].zwww, TEMP[0].xxxx, TEMP[1].xyyy 4: MUL TEMP[0].xy, TEMP[0].xyyy, IMM[0].zzzz 5: MUL TEMP[1], CONST[0], IN[3].xxxx 6: MAD TEMP[1], CONST[1], IN[3].yyyy, TEMP[1] 7: ADD TEMP[1].xyw, TEMP[1], CONST[3] 8: ADD TEMP[2].x, TEMP[0].xxxx, -TEMP[0].yyyy 9: RCP TEMP[3].x, TEMP[1].wwww 10: MAD TEMP[0].x, TEMP[2].xxxx, TEMP[3].xxxx, TEMP[0].yyyy 11: MUL TEMP[0].x, CONST[4].xxxx, TEMP[0].xxxx 12: SGE TEMP[2].x, CONST[7].xxxx, TEMP[0].xxxx 13: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 14: SLT TEMP[2].x, IMM[0].wwww, CONST[5].xxxx 15: MOV TEMP[3].w, IMM[0].yyyy 16: RCP TEMP[4].x, TEMP[1].wwww 17: MUL TEMP[3].xy, TEMP[1].xyyy, TEMP[4].xxxx 18: ADD TEMP[1].x, IMM[0].yyyy, -TEMP[2].xxxx 19: MUL TEMP[1].x, IN[0].xxxx, TEMP[1].xxxx 20: MAD TEMP[1].x, IN[0].yyyy, TEMP[2].xxxx, TEMP[1].xxxx 21: ADD TEMP[1].x, TEMP[1].xxxx, -CONST[6].xxxx 22: MOV TEMP[3].z, TEMP[1].xxxx 23: MOV OUT[3], IN[2].zzzz 24: MOV OUT[0], TEMP[3] 25: MOV OUT[1], TEMP[0].xxxx 26: MOV OUT[2].xy, IN[2].xyxx 27: END Vertex Program: before compilation # Radeon Compiler Program 0: SLT temp[0].x, const[8].xxxx, const[5].xxxx; 1: ADD temp[1].x, const[8].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[1].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[8].zzzz; 5: MUL temp[1], const[0], input[3].xxxx; 6: MAD temp[1], const[1], input[3].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: ADD temp[2].x, temp[0].xxxx, -temp[0].yyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MAD temp[0].x, temp[2].xxxx, temp[3].xxxx, temp[0].yyyy; 11: MUL temp[0].x, const[4].xxxx, temp[0].xxxx; 12: SGE temp[2].x, const[7].xxxx, temp[0].xxxx; 13: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 14: SLT temp[2].x, const[8].wwww, const[5].xxxx; 15: MOV temp[3].w, const[8].yyyy; 16: RCP temp[4].x, temp[1].wwww; 17: MUL temp[3].xy, temp[1].xyyy, temp[4].xxxx; 18: ADD temp[1].x, const[8].yyyy, -temp[2].xxxx; 19: MUL temp[1].x, input[0].xxxx, temp[1].xxxx; 20: MAD temp[1].x, input[0].yyyy, temp[2].xxxx, temp[1].xxxx; 21: ADD temp[1].x, temp[1].xxxx, -const[6].xxxx; 22: MOV temp[3].z, temp[1].xxxx; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xyxx; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: SLT temp[0].x, const[8].xxxx, const[5].xxxx; 1: ADD temp[1].x, const[8].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[1].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[8].zzzz; 5: MUL temp[1], const[0], input[3].xxxx; 6: MAD temp[1], const[1], input[3].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: ADD temp[2].x, temp[0].xxxx, -temp[0].yyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MAD temp[0].x, temp[2].xxxx, temp[3].xxxx, temp[0].yyyy; 11: MUL temp[0].x, const[4].xxxx, temp[0].xxxx; 12: SGE temp[2].x, const[7].xxxx, temp[0].xxxx; 13: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 14: SLT temp[2].x, const[8].wwww, const[5].xxxx; 15: MOV temp[3].w, const[8].yyyy; 16: RCP temp[4].x, temp[1].wwww; 17: MUL temp[3].xy, temp[1].xyyy, temp[4].xxxx; 18: ADD temp[1].x, const[8].yyyy, -temp[2].xxxx; 19: MUL temp[1].x, input[0].xxxx, temp[1].xxxx; 20: MAD temp[1].x, input[0].yyyy, temp[2].xxxx, temp[1].xxxx; 21: ADD temp[1].x, temp[1].xxxx, -const[6].xxxx; 22: MOV temp[3].z, temp[1].xxxx; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xyxx; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: SLT temp[0].x, const[8].xxxx, const[5].xxxx; 1: ADD temp[1].x, const[8].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[1].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[8].zzzz; 5: MUL temp[1], const[0], input[3].xxxx; 6: MAD temp[1], const[1], input[3].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: ADD temp[2].x, temp[0].xxxx, -temp[0].yyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MAD temp[0].x, temp[2].xxxx, temp[3].xxxx, temp[0].yyyy; 11: MUL temp[0].x, const[4].xxxx, temp[0].xxxx; 12: SGE temp[2].x, const[7].xxxx, temp[0].xxxx; 13: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 14: SLT temp[2].x, const[8].wwww, const[5].xxxx; 15: MOV temp[3].w, const[8].yyyy; 16: RCP temp[4].x, temp[1].wwww; 17: MUL temp[3].xy, temp[1].xyyy, temp[4].xxxx; 18: ADD temp[1].x, const[8].yyyy, -temp[2].xxxx; 19: MUL temp[1].x, input[0].xxxx, temp[1].xxxx; 20: MAD temp[1].x, input[0].yyyy, temp[2].xxxx, temp[1].xxxx; 21: ADD temp[1].x, temp[1].xxxx, -const[6].xxxx; 22: MOV temp[3].z, temp[1].xxxx; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xyxx; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: SLT temp[0].x, const[8].xxxx, const[5].xxxx; 1: ADD temp[1].x, const[8].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[1].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[8].zzzz; 5: MUL temp[1], const[0], input[3].xxxx; 6: MAD temp[1], const[1], input[3].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: ADD temp[2].x, temp[0].xxxx, -temp[0].yyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MAD temp[0].x, temp[2].xxxx, temp[3].xxxx, temp[0].yyyy; 11: MUL temp[0].x, const[4].xxxx, temp[0].xxxx; 12: SGE temp[2].x, const[7].xxxx, temp[0].xxxx; 13: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 14: SLT temp[2].x, const[8].wwww, const[5].xxxx; 15: MOV temp[3].w, const[8].yyyy; 16: RCP temp[4].x, temp[1].wwww; 17: MUL temp[3].xy, temp[1].xyyy, temp[4].xxxx; 18: ADD temp[1].x, const[8].yyyy, -temp[2].xxxx; 19: MUL temp[1].x, input[0].xxxx, temp[1].xxxx; 20: MAD temp[1].x, input[0].yyyy, temp[2].xxxx, temp[1].xxxx; 21: ADD temp[1].x, temp[1].xxxx, -const[6].xxxx; 22: MOV temp[3].z, temp[1].xxxx; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xyxx; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: SLT temp[0].x, const[8].xxxx, const[5].xxxx; 1: ADD temp[1].x, const[8].yyyy, -temp[0].xxxx; 2: MUL temp[1].xy, input[1].xyyy, temp[1].xxxx; 3: MAD temp[0].xy, input[1].zwww, temp[0].xxxx, temp[1].xyyy; 4: MUL temp[0].xy, temp[0].xyyy, const[8].zzzz; 5: MUL temp[1], const[0], input[3].xxxx; 6: MAD temp[1], const[1], input[3].yyyy, temp[1]; 7: ADD temp[1].xyw, temp[1], const[3]; 8: ADD temp[2].x, temp[0].xxxx, -temp[0].yyyy; 9: RCP temp[3].x, temp[1].wwww; 10: MAD temp[0].x, temp[2].xxxx, temp[3].xxxx, temp[0].yyyy; 11: MUL temp[0].x, const[4].xxxx, temp[0].xxxx; 12: SGE temp[2].x, const[7].xxxx, temp[0].xxxx; 13: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 14: SLT temp[2].x, const[8].wwww, const[5].xxxx; 15: MOV temp[3].w, const[8].yyyy; 16: RCP temp[4].x, temp[1].wwww; 17: MUL temp[3].xy, temp[1].xyyy, temp[4].xxxx; 18: ADD temp[1].x, const[8].yyyy, -temp[2].xxxx; 19: MUL temp[1].x, input[0].xxxx, temp[1].xxxx; 20: MAD temp[1].x, input[0].yyyy, temp[2].xxxx, temp[1].xxxx; 21: ADD temp[1].x, temp[1].xxxx, -const[6].xxxx; 22: MOV temp[3].z, temp[1].xxxx; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xyxx; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: SLT temp[0].x, const[8].x___, const[5].x___; 1: ADD temp[1].x, const[8].y___, -temp[0].x___; 2: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[1].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[8].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[3].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[3].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: ADD temp[2].x, temp[0].x___, -temp[0].y___; 9: RCP temp[3].x, temp[1].w___; 10: MAD temp[0].x, temp[2].x___, temp[3].x___, temp[0].y___; 11: MUL temp[0].x, const[4].x___, temp[0].x___; 12: SGE temp[2].x, const[7].x___, temp[0].x___; 13: MUL temp[0].x, temp[0].x___, temp[2].x___; 14: SLT temp[2].x, const[8].w___, const[5].x___; 15: MOV temp[3].w, const[8].___y; 16: RCP temp[4].x, temp[1].w___; 17: MUL temp[3].xy, temp[1].xy__, temp[4].xx__; 18: ADD temp[1].x, const[8].y___, -temp[2].x___; 19: MUL temp[1].x, input[0].x___, temp[1].x___; 20: MAD temp[1].x, input[0].y___, temp[2].x___, temp[1].x___; 21: ADD temp[1].x, temp[1].x___, -const[6].x___; 22: MOV temp[3].z, temp[1].__x_; 23: MOV output[3], input[2].zzzz; 24: MOV temp[5], temp[3]; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xy__; 27: MOV output[0], temp[5]; 28: MOV output[4], temp[5]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[5].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[1].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[8].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[3].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[3].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: ADD temp[2].x, temp[0].x___, -temp[0].y___; 9: RCP temp[3].x, temp[1].w___; 10: MAD temp[0].x, temp[2].x___, temp[3].x___, temp[0].y___; 11: MUL temp[0].x, const[4].x___, temp[0].x___; 12: SGE temp[2].x, const[7].x___, temp[0].x___; 13: MUL temp[0].x, temp[0].x___, temp[2].x___; 14: SLT temp[2].x, const[8].w___, const[5].x___; 15: MOV temp[3].w, none.___1; 16: RCP temp[4].x, temp[1].w___; 17: MUL temp[3].xy, temp[1].xy__, temp[4].xx__; 18: ADD temp[1].x, none.1___, -temp[2].x___; 19: MUL temp[1].x, input[0].x___, temp[1].x___; 20: MAD temp[1].x, input[0].y___, temp[2].x___, temp[1].x___; 21: ADD temp[1].x, temp[1].x___, -const[6].x___; 22: MOV temp[3].z, temp[1].__x_; 23: MOV output[3], input[2].zzzz; 24: MOV output[1], temp[0].xxxx; 25: MOV output[2].xy, input[2].xy__; 26: MOV output[0], temp[3]; 27: MOV output[4], temp[3]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[5].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[1].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[8].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[3].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[3].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: ADD temp[2].x, temp[0].x___, -temp[0].y___; 9: RCP temp[3].x, temp[1].w___; 10: MAD temp[0].x, temp[2].x___, temp[3].x___, temp[0].y___; 11: MUL temp[0].x, const[4].x___, temp[0].x___; 12: SGE temp[2].x, const[7].x___, temp[0].x___; 13: MUL temp[0].x, temp[0].x___, temp[2].x___; 14: MOV temp[5], const[5].x___; 15: SLT temp[2].x, const[8].w___, temp[5]; 16: MOV temp[3].w, none.___1; 17: RCP temp[4].x, temp[1].w___; 18: MUL temp[3].xy, temp[1].xy__, temp[4].xx__; 19: ADD temp[1].x, none.1___, -temp[2].x___; 20: MUL temp[1].x, input[0].x___, temp[1].x___; 21: MAD temp[1].x, input[0].y___, temp[2].x___, temp[1].x___; 22: ADD temp[1].x, temp[1].x___, -const[6].x___; 23: MOV temp[3].z, temp[1].__x_; 24: MOV output[3], input[2].zzzz; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xy__; 27: MOV output[0], temp[3]; 28: MOV output[4], temp[3]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[5].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[1].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[8].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[3].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[3].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: ADD temp[2].x, temp[0].x___, -temp[0].y___; 9: RCP temp[3].x, temp[1].w___; 10: MAD temp[0].x, temp[2].x___, temp[3].x___, temp[0].y___; 11: MUL temp[0].x, const[4].x___, temp[0].x___; 12: SGE temp[2].x, const[7].x___, temp[0].x___; 13: MUL temp[0].x, temp[0].x___, temp[2].x___; 14: MOV temp[4], const[5].x___; 15: SLT temp[2].x, const[8].w___, temp[4]; 16: MOV temp[3].w, none.___1; 17: RCP temp[4].x, temp[1].w___; 18: MUL temp[3].xy, temp[1].xy__, temp[4].xx__; 19: ADD temp[1].x, none.1___, -temp[2].x___; 20: MUL temp[1].x, input[0].x___, temp[1].x___; 21: MAD temp[1].x, input[0].y___, temp[2].x___, temp[1].x___; 22: ADD temp[1].x, temp[1].x___, -const[6].x___; 23: MOV temp[3].z, temp[1].__x_; 24: MOV output[3], input[2].zzzz; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xy__; 27: MOV output[0], temp[3]; 28: MOV output[4], temp[3]; CONST[8] = { 0.0000 1.0000 0.1250 0.5000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: SLT temp[0].x, none.0___, const[5].x___; 1: ADD temp[1].x, none.1___, -temp[0].x___; 2: MUL temp[1].xy, input[1].xy__, temp[1].xx__; 3: MAD temp[0].xy, input[1].zw__, temp[0].xx__, temp[1].xy__; 4: MUL temp[0].xy, temp[0].xy__, const[8].zz__; 5: MUL temp[1].xyw, const[0].xy_w, input[3].xx_x; 6: MAD temp[1].xyw, const[1].xy_w, input[3].yy_y, temp[1].xy_w; 7: ADD temp[1].xyw, temp[1].xy_w, const[3].xy_w; 8: ADD temp[2].x, temp[0].x___, -temp[0].y___; 9: RCP temp[3].x, temp[1].w___; 10: MAD temp[0].x, temp[2].x___, temp[3].x___, temp[0].y___; 11: MUL temp[0].x, const[4].x___, temp[0].x___; 12: SGE temp[2].x, const[7].x___, temp[0].x___; 13: MUL temp[0].x, temp[0].x___, temp[2].x___; 14: MOV temp[4], const[5].x___; 15: SLT temp[2].x, const[8].w___, temp[4]; 16: MOV temp[3].w, none.___1; 17: RCP temp[4].x, temp[1].w___; 18: MUL temp[3].xy, temp[1].xy__, temp[4].xx__; 19: ADD temp[1].x, none.1___, -temp[2].x___; 20: MUL temp[1].x, input[0].x___, temp[1].x___; 21: MAD temp[1].x, input[0].y___, temp[2].x___, temp[1].x___; 22: ADD temp[1].x, temp[1].x___, -const[6].x___; 23: MOV temp[3].z, temp[1].__x_; 24: MOV output[3], input[2].zzzz; 25: MOV output[1], temp[0].xxxx; 26: MOV output[2].xy, input[2].xy__; 27: MOV output[0], temp[3]; 28: MOV output[4], temp[3]; Final vertex program code: 0: op: 0x0010000a dst: 0t op: VE_SET_LESS_THAN src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01ff00a2 reg: 5c swiz: X/ U/ U/ U src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 1: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0000 reg: 0t swiz: -X/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 2: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90021 reg: 1i swiz: X/ Y/ U/ U src1: 0x01f80020 reg: 1t swiz: X/ X/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 3: op: 0x00300004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01fb4021 reg: 1i swiz: Z/ W/ U/ U src1: 0x01f80000 reg: 0t swiz: X/ X/ U/ U src2: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U 4: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fa4102 reg: 8c swiz: Z/ Z/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 5: op: 0x00b02002 dst: 1t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00380061 reg: 3i swiz: X/ X/ U/ X src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 6: op: 0x00b02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00792061 reg: 3i swiz: Y/ Y/ U/ Y src2: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W 7: op: 0x00b02003 dst: 1t op: VE_ADD src0: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 8: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x1fff2000 reg: 0t swiz: -Y/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 9: op: 0x00106046 dst: 3t op: ME_RECIP_DX src0: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 10: op: 0x00100080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0060 reg: 3t swiz: X/ U/ U/ U src2: 0x01ff2000 reg: 0t swiz: Y/ U/ U/ U 11: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff0082 reg: 4c swiz: X/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 12: op: 0x00104009 dst: 2t op: VE_SET_GREATER_THAN_EQUAL src0: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 13: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 14: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x01ff00a2 reg: 5c swiz: X/ U/ U/ U src1: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 15: op: 0x0010400a dst: 2t op: VE_SET_LESS_THAN src0: 0x01ff6102 reg: 8c swiz: W/ U/ U/ U src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 16: op: 0x00806003 dst: 3t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 17: op: 0x00108046 dst: 4t op: ME_RECIP_DX src0: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f80080 reg: 4t swiz: X/ X/ U/ U src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 19: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0040 reg: 2t swiz: -X/-U/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 20: op: 0x00102002 dst: 1t op: VE_MULTIPLY src0: 0x01ff0001 reg: 0i swiz: X/ U/ U/ U src1: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 21: op: 0x00102004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01ff2001 reg: 0i swiz: Y/ U/ U/ U src1: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src2: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U 22: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x1fff00c2 reg: 6c swiz: -X/-U/-U/-U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 23: op: 0x00406003 dst: 3t op: VE_ADD src0: 0x01c7e020 reg: 1t swiz: U/ U/ X/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x00f06203 dst: 3o op: VE_ADD src0: 0x00924041 reg: 2i swiz: Z/ Z/ Z/ Z src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 25: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00000000 reg: 0t swiz: X/ X/ X/ X src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 26: op: 0x00304203 dst: 2o op: VE_ADD src0: 0x01f90041 reg: 2i swiz: X/ Y/ U/ U src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 27: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 28: op: 0x00f08203 dst: 4o op: VE_ADD src0: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[9], LINEAR DCL IN[1], GENERIC[12], PERSPECTIVE DCL IN[2], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL CONST[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 FLT32 { 0.5000, 26.0000, 0.0000, 2.0000} IMM FLT32 { 127.5000, 255.0000, 1.0000, -0.5000} IMM FLT32 { 252.0000, 0.0000, 0.0000, 0.0000} 0: ADD TEMP[0].x, IN[1].yyyy, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[2].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: MAD TEMP[0].x, IMM[0].yyyy, TEMP[0].xxxx, CONST[0].xxxx 6: ADD TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 7: RCP TEMP[2].x, CONST[2].yyyy 8: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 9: MOV TEMP[1].y, TEMP[0].xxxx 10: MOV TEMP[0].x, IMM[0].zzzz 11: RCP TEMP[2].x, CONST[2].yyyy 12: MOV TEMP[0].y, TEMP[2].xxxx 13: MAD TEMP[0].xy, IMM[0].wwww, TEMP[0].xyyy, TEMP[1].xyyy 14: TEX TEMP[0], TEMP[0].xyyy, SAMP[0], 2D 15: MUL TEMP[0], IMM[1].xxyy, TEMP[0] 16: SLT TEMP[2].x, IMM[0].xxxx, IN[2].xxxx 17: ADD TEMP[3].x, -TEMP[2].xxxx, IMM[1].zzzz 18: SLT TEMP[4].x, IN[2].xxxx, IMM[1].wwww 19: MUL TEMP[4].x, TEMP[3].xxxx, TEMP[4].xxxx 20: MAD TEMP[5].x, TEMP[3].xxxx, -TEMP[4].xxxx, TEMP[3].xxxx 21: CMP TEMP[4].x, -TEMP[5].xxxx, TEMP[0].wwww, IMM[1].zzzz 22: CMP TEMP[2].x, -TEMP[3].xxxx, TEMP[4].xxxx, TEMP[0].zzzz 23: ADD TEMP[0].x, TEMP[0].xxxx, TEMP[0].yyyy 24: SGE TEMP[0].x, TEMP[0].xxxx, IMM[2].xxxx 25: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 26: ADD TEMP[2].xy, IN[0].xyyy, IMM[1].wwww 27: DP2 TEMP[2].x, TEMP[2].xyyy, TEMP[2].xyyy 28: RSQ TEMP[3].x, TEMP[2].xxxx 29: MUL TEMP[3].x, TEMP[3].xxxx, TEMP[2].xxxx 30: CMP TEMP[3].x, -TEMP[2].xxxx, TEMP[3].xxxx, IMM[0].zzzz 31: SGE TEMP[2].x, IMM[0].xxxx, TEMP[3].xxxx 32: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 33: SEQ TEMP[2].x, TEMP[0].xxxx, IMM[0].zzzz 34: CMP TEMP[0].x, -TEMP[2].xxxx, IMM[1].zzzz, IMM[0].zzzz 35: KIL -TEMP[0].xxxx 36: TEX TEMP[0], TEMP[1].xyyy, SAMP[0], 2D 37: MOV OUT[0], TEMP[0] 38: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 7: RCP temp[2].x, const[2].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: MOV temp[0].x, const[3].zzzz; 11: RCP temp[2].x, const[2].yyyy; 12: MOV temp[0].y, temp[2].xxxx; 13: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 14: TEX temp[0], temp[0].xyyy, 2D[0]; 15: MUL temp[0], const[4].xxyy, temp[0]; 16: SLT temp[2].x, const[3].xxxx, input[2].xxxx; 17: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 18: SLT temp[4].x, input[2].xxxx, const[4].wwww; 19: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 20: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 21: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 22: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 23: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 24: SGE temp[0].x, temp[0].xxxx, const[5].xxxx; 25: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 26: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 27: DP2 temp[2].x, temp[2].xyyy, temp[2].xyyy; 28: RSQ temp[3].x, temp[2].xxxx; 29: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 30: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 31: SGE temp[2].x, const[3].xxxx, temp[3].xxxx; 32: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 33: SEQ temp[2].x, temp[0].xxxx, const[3].zzzz; 34: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 35: KIL -temp[0].xxxx; 36: TEX temp[0], temp[1].xyyy, 2D[0]; 37: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[1].yyyy, const[3].xxxx; 1: RCP temp[1].x, const[2].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[6].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[6]; 6: MAD temp[0].x, const[3].yyyy, temp[0].xxxx, const[0].xxxx; 7: ADD temp[0].x, temp[0].xxxx, const[3].xxxx; 8: RCP temp[2].x, const[2].yyyy; 9: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 10: MOV temp[1].y, temp[0].xxxx; 11: MOV temp[0].x, const[3].zzzz; 12: RCP temp[2].x, const[2].yyyy; 13: MOV temp[0].y, temp[2].xxxx; 14: MAD temp[0].xy, const[3].wwww, temp[0].xyyy, temp[1].xyyy; 15: TEX temp[0], temp[0].xyyy, 2D[0]; 16: MUL temp[0], const[4].xxyy, temp[0]; 17: ADD temp[2].x, const[3].xxxx, -input[2].xxxx; 18: CMP temp[2].x, temp[2], none.1111, none.0000; 19: ADD temp[3].x, -temp[2].xxxx, const[4].zzzz; 20: ADD temp[4].x, input[2].xxxx, -const[4].wwww; 21: CMP temp[4].x, temp[4], none.1111, none.0000; 22: MUL temp[4].x, temp[3].xxxx, temp[4].xxxx; 23: MAD temp[5].x, temp[3].xxxx, -temp[4].xxxx, temp[3].xxxx; 24: CMP temp[4].x, -temp[5].xxxx, temp[0].wwww, const[4].zzzz; 25: CMP temp[2].x, -temp[3].xxxx, temp[4].xxxx, temp[0].zzzz; 26: ADD temp[0].x, temp[0].xxxx, temp[0].yyyy; 27: ADD temp[7].x, temp[0].xxxx, -const[5].xxxx; 28: CMP temp[0].x, temp[7], none.0000, none.1111; 29: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 30: ADD temp[2].xy, input[0].xyyy, const[4].wwww; 31: DP3 temp[2].x, temp[2].xy00, temp[2].xy00; 32: RSQ temp[3].x, |temp[2].xxxx|; 33: MUL temp[3].x, temp[3].xxxx, temp[2].xxxx; 34: CMP temp[3].x, -temp[2].xxxx, temp[3].xxxx, const[3].zzzz; 35: ADD temp[2].x, const[3].xxxx, -temp[3].xxxx; 36: CMP temp[2].x, temp[2], none.0000, none.1111; 37: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 38: ADD temp[2].x, temp[0].xxxx, -const[3].zzzz; 39: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 40: CMP temp[0].x, -temp[2].xxxx, const[4].zzzz, const[3].zzzz; 41: KIL -temp[0].xxxx; 42: TEX temp[0], temp[1].xyyy, 2D[0]; 43: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[1].y___, const[3].x___; 1: RCP temp[1].x, const[2].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[6].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[6].x___; 6: MAD temp[0].x, const[3].y___, temp[0].x___, const[0].x___; 7: ADD temp[0].x, temp[0].x___, const[3].x___; 8: RCP temp[2].x, const[2].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: MOV temp[0].x, const[3].z___; 12: RCP temp[2].x, const[2].y___; 13: MOV temp[0].y, temp[2]._x__; 14: MAD temp[0].xy, const[3].ww__, temp[0].xy__, temp[1].xy__; 15: TEX temp[0], temp[0].xy__, 2D[0]; 16: MUL temp[0], const[4].xxyy, temp[0]; 17: ADD temp[2].x, const[3].x___, -input[2].x___; 18: CMP temp[2].x, temp[2].x___, none.1___, none.0___; 19: ADD temp[3].x, -temp[2].x___, const[4].z___; 20: ADD temp[4].x, input[2].x___, -const[4].w___; 21: CMP temp[4].x, temp[4].x___, none.1___, none.0___; 22: MUL temp[4].x, temp[3].x___, temp[4].x___; 23: MAD temp[5].x, temp[3].x___, -temp[4].x___, temp[3].x___; 24: CMP temp[4].x, -temp[5].x___, temp[0].w___, const[4].z___; 25: CMP temp[2].x, -temp[3].x___, temp[4].x___, temp[0].z___; 26: ADD temp[0].x, temp[0].x___, temp[0].y___; 27: ADD temp[7].x, temp[0].x___, -const[5].x___; 28: CMP temp[0].x, temp[7].x___, none.0___, none.1___; 29: MUL temp[0].x, temp[0].x___, temp[2].x___; 30: ADD temp[2].xy, input[0].xy__, const[4].ww__; 31: DP3 temp[2].x, temp[2].xy0_, temp[2].xy0_; 32: RSQ temp[3].x, |temp[2].x___|; 33: MUL temp[3].x, temp[3].x___, temp[2].x___; 34: CMP temp[3].x, -temp[2].x___, temp[3].x___, const[3].z___; 35: ADD temp[2].x, const[3].x___, -temp[3].x___; 36: CMP temp[2].x, temp[2].x___, none.0___, none.1___; 37: MUL temp[0].x, temp[0].x___, temp[2].x___; 38: ADD temp[2].x, temp[0].x___, -const[3].z___; 39: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 40: CMP temp[0].x, -temp[2].x___, const[4].z___, const[3].z___; 41: KIL -temp[0].xxxx; 42: TEX temp[0], temp[1].xy__, 2D[0]; 43: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].y___, const[3].x___; 1: RCP temp[1].x, const[2].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[6].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[6].x___; 6: MAD temp[0].x, const[3].y___, temp[0].x___, const[0].x___; 7: ADD temp[0].x, temp[0].x___, const[3].x___; 8: RCP temp[2].x, const[2].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: MOV temp[0].x, const[3].z___; 12: RCP temp[2].x, const[2].y___; 13: MOV temp[0].y, temp[2]._x__; 14: MAD temp[0].xy, const[3].ww__, temp[0].xy__, temp[1].xy__; 15: TEX temp[0], temp[0].xy__, 2D[0]; 16: MUL temp[0], const[4].xxyy, temp[0]; 17: ADD temp[2].x, const[3].x___, -input[2].x___; 18: CMP temp[2].x, temp[2].x___, none.1___, none.0___; 19: ADD temp[3].x, -temp[2].x___, const[4].z___; 20: ADD temp[4].x, input[2].x___, -const[4].w___; 21: CMP temp[4].x, temp[4].x___, none.1___, none.0___; 22: MUL temp[4].x, temp[3].x___, temp[4].x___; 23: MAD temp[5].x, temp[3].x___, -temp[4].x___, temp[3].x___; 24: CMP temp[4].x, -temp[5].x___, temp[0].w___, const[4].z___; 25: CMP temp[2].x, -temp[3].x___, temp[4].x___, temp[0].z___; 26: ADD temp[0].x, temp[0].x___, temp[0].y___; 27: ADD temp[7].x, temp[0].x___, -const[5].x___; 28: CMP temp[0].x, temp[7].x___, none.0___, none.1___; 29: MUL temp[0].x, temp[0].x___, temp[2].x___; 30: ADD temp[2].xy, input[0].xy__, const[4].ww__; 31: DP3 temp[2].x, temp[2].xy0_, temp[2].xy0_; 32: RSQ temp[3].x, |temp[2].x___|; 33: MUL temp[3].x, temp[3].x___, temp[2].x___; 34: CMP temp[3].x, -temp[2].x___, temp[3].x___, const[3].z___; 35: ADD temp[2].x, const[3].x___, -temp[3].x___; 36: CMP temp[2].x, temp[2].x___, none.0___, none.1___; 37: MUL temp[0].x, temp[0].x___, temp[2].x___; 38: ADD temp[2].x, temp[0].x___, -const[3].z___; 39: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 40: CMP temp[0].x, -temp[2].x___, const[4].z___, const[3].z___; 41: KIL -temp[0].xxxx; 42: TEX temp[0], temp[1].xy__, 2D[0]; 43: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[8].x, input[1].y___, const[3].x___; 1: RCP temp[9].x, const[2].x___; 2: MUL temp[10].x, temp[8].x___, temp[9].x___; 3: FRC temp[11].x, temp[10].x___; 4: FRC temp[12].x, temp[10].x___; 5: ADD temp[13].x, temp[10].x___, -temp[12].x___; 6: MAD temp[14].x, const[3].y___, temp[13].x___, const[0].x___; 7: ADD temp[15].x, temp[14].x___, const[3].x___; 8: RCP temp[16].x, const[2].y___; 9: MUL temp[17].x, temp[15].x___, temp[16].x___; 10: MOV temp[11].y, temp[17]._x__; 11: MOV temp[18].x, const[3].z___; 12: RCP temp[19].x, const[2].y___; 13: MOV temp[18].y, temp[19]._x__; 14: MAD temp[20].xy, const[3].ww__, temp[18].xy__, temp[11].xy__; 15: TEX temp[21], temp[20].xy__, 2D[0]; 16: MUL temp[22], const[4].xxyy, temp[21]; 17: ADD temp[23].x, const[3].x___, -input[2].x___; 18: CMP temp[24].x, temp[23].x___, none.1___, none.0___; 19: ADD temp[25].x, -temp[24].x___, const[4].z___; 20: ADD temp[26].x, input[2].x___, -const[4].w___; 21: CMP temp[27].x, temp[26].x___, none.1___, none.0___; 22: MUL temp[28].x, temp[25].x___, temp[27].x___; 23: MAD temp[29].x, temp[25].x___, -temp[28].x___, temp[25].x___; 24: CMP temp[30].x, -temp[29].x___, temp[22].w___, const[4].z___; 25: CMP temp[31].x, -temp[25].x___, temp[30].x___, temp[22].z___; 26: ADD temp[32].x, temp[22].x___, temp[22].y___; 27: ADD temp[33].x, temp[32].x___, -const[5].x___; 28: CMP temp[34].x, temp[33].x___, none.0___, none.1___; 29: MUL temp[35].x, temp[34].x___, temp[31].x___; 30: ADD temp[36].xy, input[0].xy__, const[4].ww__; 31: DP3 temp[37].x, temp[36].xy0_, temp[36].xy0_; 32: RSQ temp[38].x, |temp[37].x___|; 33: MUL temp[39].x, temp[38].x___, temp[37].x___; 34: CMP temp[40].x, -temp[37].x___, temp[39].x___, const[3].z___; 35: ADD temp[41].x, const[3].x___, -temp[40].x___; 36: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 37: MUL temp[43].x, temp[35].x___, temp[42].x___; 38: ADD temp[44].x, temp[43].x___, -const[3].z___; 39: CMP temp[45].x, -|temp[44].x___|, none.0___, none.1___; 40: CMP temp[46].x, -temp[45].x___, const[4].z___, const[3].z___; 41: KIL -temp[46].xxxx; 42: TEX temp[47], temp[11].xy__, 2D[0]; 43: MOV output[0], temp[47]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[8].x, input[1].y___, none.H___; 1: RCP temp[9].x, const[2].x___; 2: MUL temp[10].x, temp[8].x___, temp[9].x___; 3: FRC temp[11].x, temp[10].x___; 4: FRC temp[12].x, temp[10].x___; 5: ADD temp[13].x, temp[10].x___, -temp[12].x___; 6: MAD temp[14].x, const[3].y___, temp[13].x___, const[0].x___; 7: ADD temp[15].x, temp[14].x___, none.H___; 8: RCP temp[16].x, const[2].y___; 9: MUL temp[17].x, temp[15].x___, temp[16].x___; 10: MOV temp[11].y, temp[17]._x__; 11: MOV temp[18].x, none.0___; 12: RCP temp[19].x, const[2].y___; 13: MOV temp[18].y, temp[19]._x__; 14: MAD temp[20].xy, const[3].ww__, temp[18].xy__, temp[11].xy__; 15: TEX temp[21], temp[20].xy__, 2D[0]; 16: MUL temp[22], const[4].xxyy, temp[21]; 17: ADD temp[23].x, none.H___, -input[2].x___; 18: CMP temp[24].x, temp[23].x___, none.1___, none.0___; 19: ADD temp[25].x, -temp[24].x___, none.1___; 20: ADD temp[26].x, input[2].x___, none.H-_-_-_; 21: CMP temp[27].x, temp[26].x___, none.1___, none.0___; 22: MUL temp[28].x, temp[25].x___, temp[27].x___; 23: MAD temp[29].x, temp[25].x___, -temp[28].x___, temp[25].x___; 24: CMP temp[30].x, -temp[29].x___, temp[22].w___, none.1___; 25: CMP temp[31].x, -temp[25].x___, temp[30].x___, temp[22].z___; 26: ADD temp[32].x, temp[22].x___, temp[22].y___; 27: CMP temp[34].x, (temp[32] - const[5]).x___, none.0___, none.1___; 28: MUL temp[35].x, temp[34].x___, temp[31].x___; 29: ADD temp[36].xy, input[0].xy__, none.-H-H__; 30: DP3 temp[37].x, temp[36].xy0_, temp[36].xy0_; 31: RSQ temp[38].x, |temp[37].x___|; 32: MUL temp[39].x, temp[38].x___, temp[37].x___; 33: CMP temp[40].x, -temp[37].x___, temp[39].x___, none.0___; 34: ADD temp[41].x, none.H___, -temp[40].x___; 35: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 36: MUL temp[43].x, temp[35].x___, temp[42].x___; 37: CMP temp[45].x, -|temp[43].x___|, none.0___, none.1___; 38: CMP temp[46].x, -temp[45].x___, none.1___, none.0___; 39: KIL -temp[46].xxxx; 40: TEX temp[47], temp[11].xy__, 2D[0]; 41: MOV output[0], temp[47]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[8].x, input[1].y___, none.H___; 1: RCP temp[9].x, const[2].x___; 2: MUL temp[10].x, temp[8].x___, temp[9].x___; 3: FRC temp[11].x, temp[10].x___; 4: FRC temp[12].x, temp[10].x___; 5: ADD temp[13].x, temp[10].x___, -temp[12].x___; 6: MAD temp[14].x, const[3].y___, temp[13].x___, const[0].x___; 7: ADD temp[15].x, temp[14].x___, none.H___; 8: RCP temp[16].x, const[2].y___; 9: MUL temp[17].x, temp[15].x___, temp[16].x___; 10: MOV temp[11].y, temp[17]._x__; 11: MOV temp[18].x, none.0___; 12: RCP temp[19].x, const[2].y___; 13: MOV temp[18].y, temp[19]._x__; 14: MAD temp[20].xy, const[3].ww__, temp[18].xy__, temp[11].xy__; 15: TEX temp[21], temp[20].xy__, 2D[0]; 16: MOV temp[0].xyw, const[4].xx_y; 17: MOV temp[0].z, const[4].__y_; 18: MUL temp[22], temp[0], temp[21]; 19: ADD temp[23].x, none.H___, -input[2].x___; 20: CMP temp[24].x, temp[23].x___, none.1___, none.0___; 21: ADD temp[25].x, -temp[24].x___, none.1___; 22: ADD temp[26].x, input[2].x___, none.H-_-_-_; 23: CMP temp[27].x, temp[26].x___, none.1___, none.0___; 24: MUL temp[28].x, temp[25].x___, temp[27].x___; 25: MAD temp[29].x, temp[25].x___, -temp[28].x___, temp[25].x___; 26: CMP temp[30].x, -temp[29].x___, temp[22].w___, none.1___; 27: CMP temp[31].x, -temp[25].x___, temp[30].x___, temp[22].z___; 28: ADD temp[32].x, temp[22].x___, temp[22].y___; 29: CMP temp[34].x, (temp[32] - const[5]).x___, none.0___, none.1___; 30: MUL temp[35].x, temp[34].x___, temp[31].x___; 31: ADD temp[36].xy, input[0].xy__, none.-H-H__; 32: MOV temp[1].xy, temp[36].xy__; 33: MOV temp[1].z, temp[36].__0_; 34: MOV temp[2].xy, temp[36].xy__; 35: MOV temp[2].z, temp[36].__0_; 36: DP3 temp[37].x, temp[1].xyz_, temp[2].xyz_; 37: RSQ temp[38].x, |temp[37].x___|; 38: MUL temp[39].x, temp[38].x___, temp[37].x___; 39: CMP temp[40].x, -temp[37].x___, temp[39].x___, none.0___; 40: ADD temp[41].x, none.H___, -temp[40].x___; 41: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 42: MUL temp[43].x, temp[35].x___, temp[42].x___; 43: CMP temp[45].x, -|temp[43].x___|, none.0___, none.1___; 44: CMP temp[46].x, -temp[45].x___, none.1___, none.0___; 45: MOV temp[3], -temp[46].xxxx; 46: KIL temp[3]; 47: TEX temp[47], temp[11].xy__, 2D[0]; 48: MOV output[0], temp[47]; CONST[2] = { 0.5000 26.0000 0.0000 2.0000 } CONST[3] = { 127.5000 255.0000 1.0000 -0.5000 } CONST[4] = { 252.0000 0.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[8].x, input[1].y___, none.H___; 1: RCP temp[9].x, const[1].x___; 2: MUL temp[10].x, temp[8].x___, temp[9].x___; 3: FRC temp[11].x, temp[10].x___; 4: FRC temp[12].x, temp[10].x___; 5: ADD temp[13].x, temp[10].x___, -temp[12].x___; 6: MAD temp[14].x, const[2].y___, temp[13].x___, const[0].x___; 7: ADD temp[15].x, temp[14].x___, none.H___; 8: RCP temp[16].x, const[1].y___; 9: MUL temp[17].x, temp[15].x___, temp[16].x___; 10: MOV temp[11].y, temp[17]._x__; 11: MOV temp[18].x, none.0___; 12: RCP temp[19].x, const[1].y___; 13: MOV temp[18].y, temp[19]._x__; 14: MAD temp[20].xy, const[2].ww__, temp[18].xy__, temp[11].xy__; 15: TEX temp[21], temp[20].xy__, 2D[0]; 16: MOV temp[0].xyw, const[3].xx_y; 17: MOV temp[0].z, const[3].__y_; 18: MUL temp[22], temp[0], temp[21]; 19: ADD temp[23].x, none.H___, -input[2].x___; 20: CMP temp[24].x, temp[23].x___, none.1___, none.0___; 21: ADD temp[25].x, -temp[24].x___, none.1___; 22: ADD temp[26].x, input[2].x___, none.H-_-_-_; 23: CMP temp[27].x, temp[26].x___, none.1___, none.0___; 24: MUL temp[28].x, temp[25].x___, temp[27].x___; 25: MAD temp[29].x, temp[25].x___, -temp[28].x___, temp[25].x___; 26: CMP temp[30].x, -temp[29].x___, temp[22].w___, none.1___; 27: CMP temp[31].x, -temp[25].x___, temp[30].x___, temp[22].z___; 28: ADD temp[32].x, temp[22].x___, temp[22].y___; 29: CMP temp[34].x, (temp[32] - const[4]).x___, none.0___, none.1___; 30: MUL temp[35].x, temp[34].x___, temp[31].x___; 31: ADD temp[36].xy, input[0].xy__, none.-H-H__; 32: MOV temp[1].xy, temp[36].xy__; 33: MOV temp[1].z, temp[36].__0_; 34: MOV temp[2].xy, temp[36].xy__; 35: MOV temp[2].z, temp[36].__0_; 36: DP3 temp[37].x, temp[1].xyz_, temp[2].xyz_; 37: RSQ temp[38].x, |temp[37].x___|; 38: MUL temp[39].x, temp[38].x___, temp[37].x___; 39: CMP temp[40].x, -temp[37].x___, temp[39].x___, none.0___; 40: ADD temp[41].x, none.H___, -temp[40].x___; 41: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 42: MUL temp[43].x, temp[35].x___, temp[42].x___; 43: CMP temp[45].x, -|temp[43].x___|, none.0___, none.1___; 44: CMP temp[46].x, -temp[45].x___, none.1___, none.0___; 45: MOV temp[3], -temp[46].xxxx; 46: KIL temp[3]; 47: TEX temp[47], temp[11].xy__, 2D[0]; 48: MOV output[0], temp[47]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] MAD temp[8].x, src0.y__, src0.111, src0.H__ 1: src0.xyz = const[1] REPL_ALPHA temp[9].x RCP, src0.x 2: src0.xyz = temp[8], src1.xyz = temp[9] MAD temp[10].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[10] FRC temp[11].x, src0.x__ 4: src0.xyz = temp[10] FRC temp[12].x, src0.x__ 5: src0.xyz = temp[10], src1.xyz = temp[12] MAD temp[13].x, src0.x__, src0.111, -src1.x__ 6: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[14].x, src0.y__, src1.x__, src2.x__ 7: src0.xyz = temp[14] MAD temp[15].x, src0.x__, src0.111, src0.H__ 8: src0.xyz = const[1] REPL_ALPHA temp[16].x RCP, src0.y 9: src0.xyz = temp[15], src1.xyz = temp[16] MAD temp[17].x, src0.x__, src1.x__, src0.000 10: src0.xyz = temp[17] MAD temp[11].y, src0._x_, src0.111, src0.000 11: MAD temp[18].x, src0.0__, src0.111, src0.000 12: src0.xyz = const[1] REPL_ALPHA temp[19].x RCP, src0.y 13: src0.xyz = temp[19] MAD temp[18].y, src0._x_, src0.111, src0.000 14: src0.xyz = temp[18], src0.w = const[2], src1.xyz = temp[11] MAD temp[20].xy, src0.ww_, src0.xy_, src1.xy_ 15: TEX temp[21], temp[20].xy__, 2D[0]; 16: src0.xyz = const[3] MAD temp[0].xy, src0.xx_, src0.111, src0.000 MAD temp[0].w, src0.y, src0.1, src0.0 17: src0.xyz = const[3] MAD temp[0].z, src0.__y, src0.111, src0.000 18: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[21], src1.w = temp[21] MAD temp[22].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[22].w, src0.w, src1.w, src0.0 19: src0.xyz = input[2] MAD temp[23].x, src0.H__, src0.111, -src0.x__ 20: src0.xyz = temp[23] CMP temp[24].x, src0.0__, src0.1__, src0.x__ 21: src0.xyz = temp[24] MAD temp[25].x, -src0.x__, src0.111, src0.1__ 22: src0.xyz = input[2] MAD temp[26].x, src0.x__, src0.111, src0.H__ 23: src0.xyz = temp[26] CMP temp[27].x, src0.0__, src0.1__, src0.x__ 24: src0.xyz = temp[25], src1.xyz = temp[27] MAD temp[28].x, src0.x__, src1.x__, src0.000 25: src0.xyz = temp[25], src1.xyz = temp[28] MAD temp[29].x, src0.x__, -src1.x__, src0.x__ 26: src0.xyz = temp[29], src0.w = temp[22] CMP temp[30].x, src0.1__, src0.w__, -src0.x__ 27: src0.xyz = temp[22], src1.xyz = temp[30], src2.xyz = temp[25] CMP temp[31].x, src0.z__, src1.x__, -src2.x__ 28: src0.xyz = temp[22] MAD temp[32].x, src0.x__, src0.111, src0.y__ 29: src0.xyz = const[4], src1.xyz = temp[32], srcp.xyz = (src1 - src0) CMP temp[34].x, src0.1__, src0.0__, srcp.x__ 30: src0.xyz = temp[34], src1.xyz = temp[31] MAD temp[35].x, src0.x__, src1.x__, src0.000 31: src0.xyz = input[0] MAD temp[36].xy, src0.xy_, src0.111, -src0.HH_ 32: src0.xyz = temp[36] MAD temp[1].xy, src0.xy_, src0.111, src0.000 33: MAD temp[1].z, src0.__0, src0.111, src0.000 34: src0.xyz = temp[36] MAD temp[2].xy, src0.xy_, src0.111, src0.000 35: MAD temp[2].z, src0.__0, src0.111, src0.000 36: src0.xyz = temp[1], src1.xyz = temp[2] DP3 temp[37].x, src0.xyz, src1.xyz 37: src0.xyz = temp[37] REPL_ALPHA temp[38].x RSQ, |src0.x| 38: src0.xyz = temp[38], src1.xyz = temp[37] MAD temp[39].x, src0.x__, src1.x__, src0.000 39: src0.xyz = temp[39], src1.xyz = temp[37] CMP temp[40].x, src0.0__, src0.x__, -src1.x__ 40: src0.xyz = temp[40] MAD temp[41].x, src0.H__, src0.111, -src0.x__ 41: src0.xyz = temp[41] CMP temp[42].x, src0.1__, src0.0__, src0.x__ 42: src0.xyz = temp[35], src1.xyz = temp[42] MAD temp[43].x, src0.x__, src1.x__, src0.000 43: src0.xyz = temp[43] CMP temp[45].x, src0.1__, src0.0__, -|src0.x__| 44: src0.xyz = temp[45] CMP temp[46].x, src0.0__, src0.1__, -src0.x__ 45: src0.xyz = temp[46] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 46: KIL temp[3]; 47: TEX temp[47], temp[11].xy__, 2D[0]; 48: src0.xyz = temp[47], src0.w = temp[47] 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] MAD temp[26].x, src0.x__, src0.111, src0.H__ MAD temp[23].w, src0.H, src0.1, -src0.x 1: src0.xyz = input[0], src1.xyz = temp[26] MAD temp[36].xy, src0.xy_, src0.111, -src0.HH_ CMP temp[27].w, src0.0, src0.1, src1.x 2: src0.w = temp[23] MAD temp[1].z, src0.__0, src0.111, src0.000 CMP temp[24].w, src0.0, src0.1, src0.w 3: src0.w = temp[24] MAD temp[2].z, src0.__0, src0.111, src0.000 MAD temp[25].w, -src0.w, src0.1, src0.1 4: src0.xyz = temp[36], src0.w = temp[25], src1.w = temp[27] MAD temp[2].xy, src0.xy_, src0.111, src0.000 MAD temp[28].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[36], src0.w = temp[25], src1.w = temp[28] MAD temp[1].xy, src0.xy_, src0.111, src0.000 MAD temp[29].w, src0.w, -src1.w, src0.w 6: src0.xyz = const[3], src1.xyz = const[1] MAD temp[0].z, src0.__y, src0.111, src0.000 RCP temp[19].w, src1.y 7: src0.xyz = const[1] MAD temp[18].x, src0.0__, src0.111, src0.000 RCP temp[16].w, src0.y 8: src0.xyz = input[1], src1.xyz = const[1] MAD temp[8].x, src0.y__, src0.111, src0.H__ RCP temp[9].w, src1.x 9: src0.xyz = temp[1], src0.w = temp[9], src1.xyz = temp[2], src2.xyz = temp[8] DP3 temp[37].x, src0.xyz, src1.xyz MAD temp[10].w, src2.x, src0.w, src0.0 10: src0.xyz = temp[19], src0.w = temp[19], src1.xyz = temp[37] MAD temp[18].y, src0._w_, src0.111, src0.000 RSQ temp[38].w, |src1.x| 11: src0.xyz = temp[10], src0.w = temp[10] FRC temp[11].x, src0.w__ FRC temp[12].w, src0.w 12: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = temp[12], src1.w = temp[12], src2.xyz = temp[37], src2.w = temp[38] MAD temp[13].x, src0.w__, src0.111, -src1.w__ MAD temp[39].w, src2.w, src2.x, src0.0 13: src0.xyz = const[3] MAD temp[0].xy, src0.xx_, src0.111, src0.000 MAD temp[0].w, src0.y, src0.1, src0.0 14: src0.xyz = temp[39], src0.w = temp[39], src1.xyz = temp[37] CMP temp[40].x, src0.0__, src0.w__, -src1.x__ 15: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[14].w, src0.y, src1.x, src2.x 16: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = temp[40] MAD temp[15].x, src0.w__, src0.111, src0.H__ MAD temp[41].w, src0.H, src0.1, -src1.x 17: src0.xyz = temp[41], src0.w = temp[41], src1.xyz = temp[15], src1.w = temp[16] CMP temp[42].x, src0.1__, src0.0__, src0.w__ MAD temp[17].w, src1.x, src1.w, src0.0 18: src0.xyz = temp[17], src0.w = temp[17] MAD temp[11].y, src0._w_, src0.111, src0.000 19: src0.xyz = temp[18], src0.w = const[2], src1.xyz = temp[11] MAD temp[20].xy, src0.ww_, src0.xy_, src1.xy_ 20: BEGIN_TEX; 21: TEX temp[47], temp[11].xy__, 2D[0]; 22: TEX temp[21], temp[20].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[21], src1.w = temp[21] SEM_WAIT MAD temp[22].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[22].w, src0.w, src1.w, src0.0 24: src0.xyz = temp[22], src0.w = temp[22], src1.w = temp[29] MAD temp[32].x, src0.x__, src0.111, src0.y__ CMP temp[30].w, src0.1, src0.w, -src1.w 25: src0.xyz = temp[22], src0.w = temp[25], src1.xyz = temp[30], src1.w = temp[30], src2.xyz = temp[25] CMP temp[31].x, src0.z__, src1.w__, -src0.w__ 26: src0.xyz = const[4], src1.xyz = temp[32], srcp.xyz = (src1 - src0) CMP temp[34].w, src0.1, src0.0, srcp.x 27: src0.xyz = temp[34], src0.w = temp[34], src1.xyz = temp[31] MAD temp[35].x, src0.w__, src1.x__, src0.000 28: src0.xyz = temp[35], src1.xyz = temp[42] MAD temp[43].x, src0.x__, src1.x__, src0.000 29: src0.xyz = temp[43] CMP temp[45].x, src0.1__, src0.0__, -|src0.x__| 30: src0.xyz = temp[45] CMP temp[46].x, src0.0__, src0.1__, -src0.x__ 31: src0.xyz = temp[46] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 32: BEGIN_TEX; 33: KIL temp[3]; 34: src0.xyz = temp[47], src0.w = temp[47] 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] MAD temp[26].x, src0.x__, src0.111, src0.H__ MAD temp[23].w, src0.H, src0.1, -src0.x 1: src0.xyz = input[0], src1.xyz = temp[26] MAD temp[36].xy, src0.xy_, src0.111, -src0.HH_ CMP temp[27].w, src0.0, src0.1, src1.x 2: src0.w = temp[23] MAD temp[1].z, src0.__0, src0.111, src0.000 CMP temp[24].w, src0.0, src0.1, src0.w 3: src0.w = temp[24] MAD temp[2].z, src0.__0, src0.111, src0.000 MAD temp[25].w, -src0.w, src0.1, src0.1 4: src0.xyz = temp[36], src0.w = temp[25], src1.w = temp[27] MAD temp[2].xy, src0.xy_, src0.111, src0.000 MAD temp[28].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[36], src0.w = temp[25], src1.w = temp[28] MAD temp[1].xy, src0.xy_, src0.111, src0.000 MAD temp[29].w, src0.w, -src1.w, src0.w 6: src0.xyz = const[3], src1.xyz = const[1] MAD temp[0].z, src0.__y, src0.111, src0.000 RCP temp[19].w, src1.y 7: src0.xyz = const[1] MAD temp[18].x, src0.0__, src0.111, src0.000 RCP temp[16].w, src0.y 8: src0.xyz = input[1], src1.xyz = const[1] MAD temp[8].x, src0.y__, src0.111, src0.H__ RCP temp[9].w, src1.x 9: src0.xyz = temp[1], src0.w = temp[9], src1.xyz = temp[2], src2.xyz = temp[8] DP3 temp[37].x, src0.xyz, src1.xyz MAD temp[10].w, src2.x, src0.w, src0.0 10: src0.w = temp[19], src1.xyz = temp[37] MAD temp[18].y, src0._w_, src0.111, src0.000 RSQ temp[38].w, |src1.x| 11: src0.w = temp[10] FRC temp[11].x, src0.w__ FRC temp[12].w, src0.w 12: src0.w = temp[10], src1.w = temp[12], src2.xyz = temp[37], src2.w = temp[38] MAD temp[13].x, src0.w__, src0.111, -src1.w__ MAD temp[39].w, src2.w, src2.x, src0.0 13: src0.xyz = const[3] MAD temp[0].xy, src0.xx_, src0.111, src0.000 MAD temp[0].w, src0.y, src0.1, src0.0 14: src0.w = temp[39], src1.xyz = temp[37] CMP temp[40].x, src0.0__, src0.w__, -src1.x__ 15: src0.xyz = const[2], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[14].w, src0.y, src1.x, src2.x 16: src0.w = temp[14], src1.xyz = temp[40] MAD temp[15].x, src0.w__, src0.111, src0.H__ MAD temp[41].w, src0.H, src0.1, -src1.x 17: src0.w = temp[41], src1.xyz = temp[15], src1.w = temp[16] CMP temp[42].x, src0.1__, src0.0__, src0.w__ MAD temp[17].w, src1.x, src1.w, src0.0 18: src0.w = temp[17] MAD temp[11].y, src0._w_, src0.111, src0.000 19: src0.xyz = temp[18], src0.w = const[2], src1.xyz = temp[11] MAD temp[20].xy, src0.ww_, src0.xy_, src1.xy_ 20: BEGIN_TEX; 21: TEX temp[47], temp[11].xy__, 2D[0]; 22: TEX temp[21], temp[20].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[21], src1.w = temp[21] SEM_WAIT MAD temp[22].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[22].w, src0.w, src1.w, src0.0 24: src0.xyz = temp[22], src0.w = temp[22], src1.w = temp[29] MAD temp[32].x, src0.x__, src0.111, src0.y__ CMP temp[30].w, src0.1, src0.w, -src1.w 25: src0.xyz = temp[22], src0.w = temp[25], src1.w = temp[30] CMP temp[31].x, src0.z__, src1.w__, -src0.w__ 26: src0.xyz = const[4], src1.xyz = temp[32], srcp.xyz = (src1 - src0) CMP temp[34].w, src0.1, src0.0, srcp.x 27: src0.w = temp[34], src1.xyz = temp[31] MAD temp[35].x, src0.w__, src1.x__, src0.000 28: src0.xyz = temp[35], src1.xyz = temp[42] MAD temp[43].x, src0.x__, src1.x__, src0.000 29: src0.xyz = temp[43] CMP temp[45].x, src0.1__, src0.0__, -|src0.x__| 30: src0.xyz = temp[45] CMP temp[46].x, src0.0__, src0.1__, -src0.x__ 31: src0.xyz = temp[46] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 32: BEGIN_TEX; 33: KIL temp[3]; 34: src0.xyz = temp[47], src0.w = temp[47] 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[2] MAD temp[0].z, src0.__x, src0.__1, src0.__H MAD temp[0].w, src0.H, src0.1, -src0.x 1: src0.xyz = input[0], src1.xyz = temp[0] MAD temp[0].xy, src0.xy_, src0.11_, -src0.HH_ CMP temp[1].w, src0.0, src0.1, src1.z 2: src0.w = temp[0] MAD temp[2].z, src0.__0, src0.111, src0.000 CMP temp[0].w, src0.0, src0.1, src0.w 3: src0.w = temp[0] MAD temp[3].z, src0.__0, src0.111, src0.000 MAD temp[0].w, -src0.w, src0.1, src0.1 4: src0.xyz = temp[0], src0.w = temp[0], src1.w = temp[1] MAD temp[3].xy, src0.xy_, src0.111, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[0], src0.w = temp[0], src1.w = temp[1] MAD temp[2].xy, src0.xy_, src0.111, src0.000 MAD temp[1].w, src0.w, -src1.w, src0.w 6: src0.xyz = const[3], src1.xyz = const[1] MAD temp[0].z, src0.__y, src0.111, src0.000 RCP temp[2].w, src1.y 7: src0.xyz = const[1] MAD temp[4].x, src0.0__, src0.11_, src0.00_ RCP temp[3].w, src0.y 8: src0.xyz = input[1], src1.xyz = const[1] MAD temp[1].x, src0.y__, src0.1__, src0.H__ RCP temp[4].w, src1.x 9: src0.xyz = temp[2], src0.w = temp[4], src1.xyz = temp[3], src2.xyz = temp[1] DP3 temp[1].x, src0.xyz, src1.xyz MAD temp[4].w, src2.x, src0.w, src0.0 10: src0.w = temp[2], src1.xyz = temp[1] MAD temp[4].y, src0._w_, src0.11_, src0.00_ RSQ temp[2].w, |src1.x| 11: src0.w = temp[4] FRC temp[2].x, src0.w__ FRC temp[5].w, src0.w 12: src0.w = temp[4], src1.w = temp[5], src2.xyz = temp[1], src2.w = temp[2] MAD temp[1].y, src0._w_, src0._1_, -src1._w_ MAD temp[2].w, src2.w, src2.x, src0.0 13: src0.xyz = const[3] MAD temp[0].xy, src0.xx_, src0.111, src0.000 MAD temp[4].w, src0.y, src0.1, src0.0 14: src0.w = temp[2], src1.xyz = temp[1] CMP temp[1].x, src0.0__, src0.w__, -src1.x__ 15: src0.xyz = const[2], src1.xyz = temp[1], src2.xyz = const[0] MAD temp[2].w, src0.y, src1.y, src2.x 16: src0.w = temp[2], src1.xyz = temp[1] MAD temp[1].x, src0.w__, src0.1__, src0.H__ MAD temp[2].w, src0.H, src0.1, -src1.x 17: src0.w = temp[2], src1.xyz = temp[1], src1.w = temp[3] CMP temp[1].x, src0.1__, src0.0__, src0.w__ MAD temp[2].w, src1.x, src1.w, src0.0 18: src0.w = temp[2] MAD temp[2].y, src0._w_, src0.11_, src0.00_ 19: src0.xyz = temp[4], src0.w = const[2], src1.xyz = temp[2] MAD temp[3].xy, src0.ww_, src0.xy_, src1.xy_ 20: BEGIN_TEX; 21: TEX temp[2], temp[2].xy__, 2D[0]; 22: TEX temp[3], temp[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 23: src0.xyz = temp[0], src0.w = temp[4], src1.xyz = temp[3], src1.w = temp[3] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src1.w, src0.0 24: src0.xyz = temp[0], src0.w = temp[3], src1.w = temp[1] MAD temp[3].x, src0.x__, src0.1__, src0.y__ CMP temp[1].w, src0.1, src0.w, -src1.w 25: src0.xyz = temp[0], src0.w = temp[0], src1.w = temp[1] CMP temp[0].x, src0.z__, src1.w__, -src0.w__ 26: src0.xyz = const[4], src1.xyz = temp[3], srcp.xyz = (src1 - src0) CMP temp[0].w, src0.1, src0.0, srcp.x 27: src0.w = temp[0], src1.xyz = temp[0] MAD temp[0].x, src0.w__, src1.x__, src0.0__ 28: src0.xyz = temp[0], src1.xyz = temp[1] MAD temp[0].x, src0.x__, src1.x__, src0.0__ 29: src0.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, -|src0.x__| 30: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 31: src0.xyz = temp[0] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 32: BEGIN_TEX; 33: KIL temp[0]; 34: 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 pc=6************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 19, tex_end: 0 (code_addr: 000004c0) 0: xyz: t2 t0 t0 bias-> t0.z (02000002) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t2.xxx 1.0 0.5 op: 00058a81 w: 0.5 1.0 -t2.x op: 00080892 1: xyz: t0 t0 t0 bias-> t0.xy (01800000) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.xyz 1.0 -0.5 op: 000d8a80 w: 0.0 1.0 t0.z op: 03014890 2: xyz: t0 t0 t0 bias-> t2.z (02080000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 0.0 1.0 0.0 op: 00050a94 w: 0.0 1.0 t0.w op: 03024890 3: xyz: t0 t0 t0 bias-> t3.z (020c0000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 0.0 1.0 0.0 op: 00050a94 w: -t0.w 1.0 1.0 op: 000448a9 4: xyz: t0 t0 t0 bias-> t3.xy (018c0000) w: t0 t1 t0 bias-> t1.w (00840040) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w t1.w 0.0 op: 00040509 5: xyz: t0 t0 t0 bias-> t2.xy (01880000) w: t0 t1 t0 bias-> t1.w (00840040) xyz: t0.xyz 1.0 0.0 op: 00050a80 w: t0.w -t1.w t0.w op: 00025509 6: xyz: c3 c1 t0 bias-> t0.z (02000863) w: t0 t0 t0 bias-> t2.w (00880000) xyz: c3.yyy 1.0 0.0 op: 00050a82 w: c1.y c3.x c3.x op: 05000004 7: xyz: c1 t0 t0 bias-> t4.x (00900021) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: 0.0 1.0 0.0 op: 00050a94 w: c1.y c1.x c1.x op: 05000001 8: xyz: t1 c1 t0 bias-> t1.x (00840841) w: t0 t0 t0 bias-> t4.w (00900000) xyz: t1.yyy 1.0 0.5 op: 00058a82 w: c1.x t1.x t1.x op: 05000003 9: xyz: t2 t3 t1 bias-> t1.x (008410c2) w: t4 t0 t0 bias-> t4.w (00900004) xyz: t2.xyz t3.xyz t2.xxx op: 00804200 w: t1.x t4.w 0.0 op: 00040486 10: xyz: t0 t1 t0 bias-> t4.y (01100040) w: t2 t0 t0 bias-> t2.w (00880002) xyz: t2.www 1.0 0.0 op: 00050a8c w: |t1.x| t0.x t0.x op: 05800043 11: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t4 t0 t0 bias-> t5.w (00940004) xyz: t4.www t0.xxx t0.xxx op: 0480408c w: t4.w t0.x t0.x op: 03800009 12: xyz: t0 t0 t1 bias-> t1.y (01041000) w: t4 t5 t2 bias-> t2.w (00882144) xyz: t4.www 1.0 -t5.www op: 000b4a8c w: t2.w t1.x 0.0 op: 0004030b 13: xyz: c3 t0 t0 bias-> t0.xy (01800023) w: t0 t0 t0 bias-> t4.w (00900000) xyz: c3.xxx 1.0 0.0 op: 00050a81 w: c3.y 1.0 0.0 op: 00040881 14: xyz: t32 t1 t0 bias-> t1.x (00840040) w: t2 t0 t0 bias-> (00000002) xyz: 0.0 t2.www -t1.xyz op: 04090614 w: t32.x t32.x t32.x op: 00000000 15: xyz: c2 t1 c0 bias-> (00020062) w: t0 t0 t0 bias-> t2.w (00880000) xyz: c2.xxx c2.xxx c2.xxx op: 00004081 w: c2.y t1.y c0.x op: 00018201 16: xyz: t0 t1 t0 bias-> t1.x (00840040) w: t2 t0 t0 bias-> t2.w (00880002) xyz: t2.www 1.0 0.5 op: 00058a8c w: 0.5 1.0 -t1.x op: 0008c892 17: xyz: t32 t1 t0 bias-> t1.x (00840040) w: t2 t3 t0 bias-> t2.w (008800c2) xyz: 1.0 0.0 t2.www op: 04030a15 w: t1.x t3.w 0.0 op: 00040503 18: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t2 t0 t0 bias-> (00000002) xyz: t2.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 19: xyz: t4 t2 t0 bias-> t3.xy (018c0084) w: c2 t0 t0 bias-> (00000022) xyz: c2.www t4.xyz t2.xyz op: 0001000c w: t4.x t4.x t4.x op: 00000000 NODE 1: alu_offset: 20, tex_offset: 0, alu_end: 8, tex_end: 1 (code_addr: 00020214) TEX: TEX t2, t2, texture[0] (00008082) TEX t3, t3, texture[0] (000080c3) 20: xyz: t0 t3 t0 bias-> t0.xyz (038000c0) w: t4 t3 t0 bias-> t3.w (008c00c4) xyz: t0.xyz t3.xyz 0.0 op: 00050200 w: t4.w t3.w 0.0 op: 00040509 21: xyz: t0 t0 t0 bias-> t3.x (008c0000) w: t3 t1 t0 bias-> t1.w (00840043) xyz: t0.xyz 1.0 t0.yyy op: 00008a80 w: 1.0 t3.w -t1.w op: 030a8491 22: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t1 t0 bias-> (00000040) xyz: t0.zzz t1.www -t0.www op: 040b0683 w: t0.x t0.x t0.x op: 00000000 23: xyz: c4 t3 t0 sub-> (000000e4) w: t0 t0 t0 bias-> t0.w (00800000) xyz: c4.xxx c4.xxx c4.xxx op: 00204081 w: 1.0 0.0 srcp.x op: 03030811 24: xyz: t32 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www t0.xyz 0.0 op: 0005020c w: t32.x t32.x t32.x op: 00000000 25: xyz: t0 t1 t0 bias-> t0.x (00800040) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz t1.xyz 0.0 op: 00050200 w: t0.x t0.x t0.x op: 00000000 26: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 -|t0.xyz| op: 04180a15 w: t0.x t0.x t0.x op: 00000000 27: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t0.xyz op: 04080a94 w: t0.x t0.x t0.x op: 00000000 28: xyz: t0 t0 t0 bias-> t0.xyz (03800000) w: t0 t0 t0 bias-> t0.w (00800000) xyz: -t0.xxx 1.0 0.0 op: 00050aa1 w: -t0.x 1.0 0.0 op: 000408a0 NODE 2: alu_offset: 29, tex_offset: 2, alu_end: 0, tex_end: 0 (code_addr: 0040201d) TEX: KIL t0, t0, texture[0] (00010000) 29: xyz: t2 t0 t0 bias-> o0.xyz (1c000002) w: t2 t0 t0 bias-> o0.w (01000002) xyz: t2.xyz 1.0 0.0 op: 00050a80 w: t2.w 1.0 0.0 op: 00040889 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], COLOR 0: MOV OUT[0], IN[0] 1: MOV OUT[1], IN[1] 2: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MOV output[1], input[1]; 2: MOV output[0], temp[0]; 3: MOV output[2], temp[0]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[1], input[1]; 1: MOV output[0], input[0]; 2: MOV output[2], input[0]; Final vertex program code: 0: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10021 reg: 1i swiz: X/ Y/ Z/ W src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10001 reg: 0i swiz: X/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 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=7************************************* 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL IN[5] DCL IN[6] DCL IN[7] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL OUT[2], GENERIC[13] DCL OUT[3], GENERIC[14] DCL CONST[0..6] 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 FLT32 { 4.0000, 0.5000, 1.0000, -4.0000} IMM FLT32 { -2.0000, -0.0000, 1.0000, -1.0000} 0: MOV TEMP[0].y, IN[7].yyyy 1: ADD TEMP[0].x, IN[7].xxxx, IMM[0].xxxx 2: MUL TEMP[1].x, IN[6].xxxx, IMM[0].yyyy 3: FLR TEMP[1].x, TEMP[1].xxxx 4: ADD TEMP[2].x, IN[6].xxxx, IMM[0].zzzz 5: MUL TEMP[2].x, TEMP[2].xxxx, IMM[0].yyyy 6: FLR TEMP[2].x, TEMP[2].xxxx 7: MUL TEMP[2].x, TEMP[2].xxxx, IMM[0].yyyy 8: FRC TEMP[2].x, TEMP[2].xxxx 9: MAD TEMP[2].x, TEMP[2].xxxx, IMM[0].wwww, IMM[0].zzzz 10: MOV TEMP[1].y, TEMP[2].xxxx 11: MAD TEMP[2].xy, TEMP[1].xyyy, TEMP[0].xyyy, IN[4].xyyy 12: MOV TEMP[3].y, TEMP[2].yyyy 13: ADD TEMP[3].x, TEMP[2].xxxx, IMM[1].xxxx 14: MUL TEMP[2], CONST[2], IN[3].xxxx 15: MAD TEMP[2], CONST[3], IN[3].yyyy, TEMP[2] 16: MAD TEMP[2], CONST[4], IN[3].zzzz, TEMP[2] 17: ADD TEMP[2], TEMP[2], CONST[5] 18: RCP TEMP[4].x, TEMP[2].wwww 19: MUL TEMP[2].xyw, TEMP[2], TEMP[4].xxxx 20: MUL TEMP[4].xy, CONST[6].xyyy, IMM[0].yyyy 21: MUL TEMP[5].xy, CONST[6].xyyy, IMM[0].yyyy 22: FRC TEMP[5].xy, TEMP[5].xyyy 23: MUL TEMP[6].xy, CONST[0].xyyy, IN[2].xxxx 24: MAD TEMP[6].xy, CONST[1].xyyy, IN[2].yyyy, TEMP[6].xyyy 25: ADD TEMP[6].xy, TEMP[6].xyyy, IN[0].xyyy 26: MAD TEMP[0].xy, TEMP[1].xyyy, TEMP[0].xyyy, TEMP[6].xyyy 27: ADD TEMP[0].xy, TEMP[0].xyyy, IMM[1].xyyy 28: MUL TEMP[1].xy, TEMP[4].xyyy, TEMP[2].xyyy 29: RCP TEMP[6].x, TEMP[2].wwww 30: MUL TEMP[1].xy, TEMP[1].xyyy, TEMP[6].xxxx 31: MAD TEMP[0].xy, TEMP[0].xyyy, IMM[1].zwww, TEMP[1].xyyy 32: ADD TEMP[1].xy, TEMP[0].xyyy, IMM[0].yyyy 33: ADD TEMP[1].xy, TEMP[1].xyyy, -TEMP[5].xyyy 34: FLR TEMP[1].xy, TEMP[1].xyyy 35: ADD TEMP[1].xy, TEMP[1].xyyy, TEMP[5].xyyy 36: MOV TEMP[5].w, IMM[0].zzzz 37: ADD TEMP[0].xy, TEMP[0].xyyy, -TEMP[1].xyyy 38: ADD TEMP[0].xy, TEMP[1].xyyy, TEMP[0].xyyy 39: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[2].wwww 40: RCP TEMP[1].x, TEMP[4].xxxx 41: RCP TEMP[1].y, TEMP[4].yyyy 42: MUL TEMP[5].xy, TEMP[0].xyyy, TEMP[1].xyyy 43: MOV TEMP[5].z, IN[5].xxxx 44: MOV OUT[1].xy, IN[0].xyxx 45: MOV OUT[0], TEMP[5] 46: MOV OUT[3].xy, TEMP[3].xyxx 47: MOV OUT[2].xyz, IN[1].xyzx 48: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FRC temp[8].x, temp[1].xxxx; 4: ADD temp[1].x, temp[1].xxxx, -temp[8]; 5: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 6: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 7: FRC temp[9].x, temp[2].xxxx; 8: ADD temp[2].x, temp[2].xxxx, -temp[9]; 9: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 10: FRC temp[2].x, temp[2].xxxx; 11: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 12: MOV temp[1].y, temp[2].xxxx; 13: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 14: MOV temp[3].y, temp[2].yyyy; 15: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 16: MUL temp[2], const[2], input[3].xxxx; 17: MAD temp[2], const[3], input[3].yyyy, temp[2]; 18: MAD temp[2], const[4], input[3].zzzz, temp[2]; 19: ADD temp[2], temp[2], const[5]; 20: RCP temp[4].x, temp[2].wwww; 21: MUL temp[2].xyw, temp[2], temp[4].xxxx; 22: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 23: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 24: FRC temp[5].xy, temp[5].xyyy; 25: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 26: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 27: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 28: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 29: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 30: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 31: RCP temp[6].x, temp[2].wwww; 32: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 33: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 34: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 35: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 36: FRC temp[10].xy, temp[1].xyyy; 37: ADD temp[1].xy, temp[1].xyyy, -temp[10]; 38: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 39: MOV temp[5].w, const[7].zzzz; 40: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 41: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 42: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 43: RCP temp[1].x, temp[4].xxxx; 44: RCP temp[1].y, temp[4].yyyy; 45: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 46: MOV temp[5].z, input[5].xxxx; 47: MOV output[1].xy, input[0].xyxx; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xyxx; 50: MOV output[2].xyz, input[1].xyzx; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FRC temp[8].x, temp[1].xxxx; 4: ADD temp[1].x, temp[1].xxxx, -temp[8]; 5: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 6: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 7: FRC temp[9].x, temp[2].xxxx; 8: ADD temp[2].x, temp[2].xxxx, -temp[9]; 9: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 10: FRC temp[2].x, temp[2].xxxx; 11: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 12: MOV temp[1].y, temp[2].xxxx; 13: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 14: MOV temp[3].y, temp[2].yyyy; 15: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 16: MUL temp[2], const[2], input[3].xxxx; 17: MAD temp[2], const[3], input[3].yyyy, temp[2]; 18: MAD temp[2], const[4], input[3].zzzz, temp[2]; 19: ADD temp[2], temp[2], const[5]; 20: RCP temp[4].x, temp[2].wwww; 21: MUL temp[2].xyw, temp[2], temp[4].xxxx; 22: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 23: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 24: FRC temp[5].xy, temp[5].xyyy; 25: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 26: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 27: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 28: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 29: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 30: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 31: RCP temp[6].x, temp[2].wwww; 32: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 33: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 34: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 35: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 36: FRC temp[10].xy, temp[1].xyyy; 37: ADD temp[1].xy, temp[1].xyyy, -temp[10]; 38: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 39: MOV temp[5].w, const[7].zzzz; 40: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 41: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 42: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 43: RCP temp[1].x, temp[4].xxxx; 44: RCP temp[1].y, temp[4].yyyy; 45: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 46: MOV temp[5].z, input[5].xxxx; 47: MOV output[1].xy, input[0].xyxx; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xyxx; 50: MOV output[2].xyz, input[1].xyzx; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, const[7].z___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, const[7].z___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MUL temp[4].xy, const[6].xy__, const[7].yy__; 23: MUL temp[5].xy, const[6].xy__, const[7].yy__; 24: FRC temp[5].xy, temp[5].xy__; 25: MUL temp[6].xy, const[0].xy__, input[2].xx__; 26: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 27: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 28: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 29: ADD temp[0].xy, temp[0].xy__, const[8].xy__; 30: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 31: RCP temp[6].x, temp[2].w___; 32: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 33: MAD temp[0].xy, temp[0].xy__, const[8].zw__, temp[1].xy__; 34: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 35: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 36: FRC temp[10].xy, temp[1].xy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 38: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 39: MOV temp[5].w, const[7].___z; 40: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 41: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 42: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 43: RCP temp[1].x, temp[4].x___; 44: RCP temp[1].y, temp[4]._y__; 45: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 46: MOV temp[5].z, input[5].__x_; 47: MOV output[1].xy, input[0].xy__; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xy__; 50: MOV output[2].xyz, input[1].xyz_; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MUL temp[4].xy, const[6].xy__, const[7].yy__; 23: MUL temp[5].xy, const[6].xy__, const[7].yy__; 24: FRC temp[5].xy, temp[5].xy__; 25: MUL temp[6].xy, const[0].xy__, input[2].xx__; 26: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 27: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 28: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 29: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 30: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 31: RCP temp[6].x, temp[2].w___; 32: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 33: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 34: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 35: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 36: FRC temp[10].xy, temp[1].xy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 38: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 39: MOV temp[5].w, none.___1; 40: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 41: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 42: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 43: RCP temp[1].x, temp[4].x___; 44: RCP temp[1].y, temp[4]._y__; 45: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 46: MOV temp[5].z, input[5].__x_; 47: MOV output[1].xy, input[0].xy__; 48: MOV output[3].xy, temp[3].xy__; 49: MOV output[2].xyz, input[1].xyz_; 50: MOV output[0], temp[5]; 51: MOV output[4], temp[5]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[7], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[7]; 24: MOV temp[11], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[11]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[10].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[2].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[2].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[3].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[3].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[5], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[5]; 24: MOV temp[5], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[5]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[6].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[6].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; CONST[7] = { 4.0000 0.5000 1.0000 -4.0000 } CONST[8] = { -2.0000 -0.0000 1.0000 -1.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[2].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[2].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[3].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[3].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[5], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[5]; 24: MOV temp[5], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[5]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[6].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[6].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; Final vertex program code: 0: op: 0x00200003 dst: 0t op: VE_ADD src0: 0x01f9e0e1 reg: 7i swiz: U/ Y/ U/ U src1: 0x012480e1 reg: 7i swiz: 0/ 0/ 0/ 0 src2: 0x012480e1 reg: 7i swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff00e1 reg: 7i swiz: X/ U/ U/ U src1: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 2: op: 0x00102002 dst: 1t op: VE_MULTIPLY src0: 0x01ff00c1 reg: 6i swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 3: op: 0x00104006 dst: 2t op: VE_FRACTION src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 4: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x1fff0040 reg: 2t swiz: -X/-U/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 5: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff00c1 reg: 6i swiz: X/ U/ U/ U src1: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 6: op: 0x00104002 dst: 2t op: VE_MULTIPLY src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 7: op: 0x00106006 dst: 3t op: VE_FRACTION src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 8: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x1fff0060 reg: 3t swiz: -X/-U/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 9: op: 0x00104002 dst: 2t op: VE_MULTIPLY src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 10: op: 0x00104006 dst: 2t op: VE_FRACTION src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 11: op: 0x00104004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff60e2 reg: 7c swiz: W/ U/ U/ U src2: 0x01ffa040 reg: 2t swiz: 1/ U/ U/ U 12: op: 0x00202003 dst: 1t op: VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 13: op: 0x00304004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01f90081 reg: 4i swiz: X/ Y/ U/ U 14: op: 0x00206003 dst: 3t op: VE_ADD src0: 0x01f9e040 reg: 2t swiz: U/ Y/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 15: op: 0x00106003 dst: 3t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0102 reg: 8c swiz: X/ U/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 16: op: 0x00b04002 dst: 2t op: VE_MULTIPLY src0: 0x00f90042 reg: 2c swiz: X/ Y/ U/ W src1: 0x00380061 reg: 3i swiz: X/ X/ U/ X src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 17: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src1: 0x00792061 reg: 3i swiz: Y/ Y/ U/ Y src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 18: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90082 reg: 4c swiz: X/ Y/ U/ W src1: 0x00ba4061 reg: 3i swiz: Z/ Z/ U/ Z src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 19: op: 0x00b04003 dst: 2t op: VE_ADD src0: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W src1: 0x00f900a2 reg: 5c swiz: X/ Y/ U/ W src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 20: op: 0x00108046 dst: 4t op: ME_RECIP_DX src0: 0x00db6040 reg: 2t swiz: W/ W/ W/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 21: op: 0x00b04002 dst: 2t op: VE_MULTIPLY src0: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W src1: 0x00380080 reg: 4t swiz: X/ X/ U/ X src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 22: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src1: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 23: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 24: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src1: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 25: op: 0x0030a002 dst: 5t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 26: op: 0x0030a006 dst: 5t op: VE_FRACTION src0: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 27: op: 0x0030c002 dst: 6t op: VE_MULTIPLY src0: 0x01f90002 reg: 0c swiz: X/ Y/ U/ U src1: 0x01f80041 reg: 2i swiz: X/ X/ U/ U src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 28: op: 0x0030c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01f90022 reg: 1c swiz: X/ Y/ U/ U src1: 0x01f92041 reg: 2i swiz: Y/ Y/ U/ U src2: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U 29: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 30: op: 0x00300080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U 31: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fc0102 reg: 8c swiz: X/ 0/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 32: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 33: op: 0x0010c046 dst: 6t op: ME_RECIP_DX src0: 0x00db6040 reg: 2t swiz: W/ W/ W/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 34: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f800c0 reg: 6t swiz: X/ X/ U/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x00300004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x05fda000 reg: 0t swiz: 1/-1/ U/ U src2: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U 36: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 37: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x1ff900a0 reg: 5t swiz: -X/-Y/-U/-U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 38: op: 0x0030c006 dst: 6t op: VE_FRACTION src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 39: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x1ff900c0 reg: 6t swiz: -X/-Y/-U/-U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 40: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 41: op: 0x0080a003 dst: 5t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 42: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x1ff90020 reg: 1t swiz: -X/-Y/-U/-U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 43: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 44: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fb6040 reg: 2t swiz: W/ W/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 45: op: 0x00102046 dst: 1t op: ME_RECIP_DX src0: 0x00000080 reg: 4t swiz: X/ X/ X/ X src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 46: op: 0x00202046 dst: 1t op: ME_RECIP_DX src0: 0x00492080 reg: 4t swiz: Y/ Y/ Y/ Y src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 47: op: 0x0030a002 dst: 5t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 48: op: 0x0040a003 dst: 5t op: VE_ADD src0: 0x01c7e0a1 reg: 5i swiz: U/ U/ X/ U src1: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 src2: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 49: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 50: op: 0x00306203 dst: 3o op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 51: op: 0x00704203 dst: 2o op: VE_ADD src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 52: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 53: op: 0x00f08203 dst: 4o op: VE_ADD src0: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0] DCL CONST[4..6] 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 DCL TEMP[7], LOCAL DCL TEMP[8], LOCAL DCL TEMP[9], LOCAL DCL TEMP[10], LOCAL DCL TEMP[11], LOCAL IMM FLT32 { 0.5000, 255.0000, 16.0000, 0.0625} IMM FLT32 {-1023.0000, 1.0323, 0.0312, 0.0000} IMM FLT32 { 1.0000, 0.6000, 0.0000, 0.5454} IMM FLT32 { 0.9717, 26.0000, 0.0000, 0.0000} 0: ADD TEMP[0].x, IN[1].zzzz, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[5].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: ADD TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 6: RCP TEMP[2].x, CONST[5].yyyy 7: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 8: MOV TEMP[1].y, TEMP[0].xxxx 9: TEX TEMP[0], TEMP[1].xyyy, SAMP[1], 2D 10: MAD TEMP[0], IMM[0].yyyy, TEMP[0], IMM[0].xxxx 11: FLR TEMP[0], TEMP[0] 12: MUL TEMP[1].x, TEMP[0].wwww, IMM[0].wwww 13: FLR TEMP[1].x, TEMP[1].xxxx 14: MAD TEMP[1].x, TEMP[0].yyyy, IMM[0].zzzz, TEMP[1].xxxx 15: MAD TEMP[1].x, TEMP[1].xxxx, IMM[0].xxxx, IMM[1].xxxx 16: MUL TEMP[2].x, TEMP[0].wwww, IMM[0].wwww 17: FRC TEMP[2].x, TEMP[2].xxxx 18: MUL TEMP[3].x, TEMP[0].zzzz, IMM[0].zzzz 19: MAD TEMP[2].x, IMM[0].zzzz, TEMP[2].xxxx, TEMP[3].xxxx 20: MAD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx, IMM[1].xxxx 21: MOV TEMP[1].y, TEMP[2].xxxx 22: MUL TEMP[0].x, TEMP[0].xxxx, IMM[1].zzzz 23: FRC TEMP[0].x, TEMP[0].xxxx 24: MUL TEMP[0].x, IMM[1].yyyy, TEMP[0].xxxx 25: ADD TEMP[1].xy, IN[0].xyyy, -TEMP[1].xyyy 26: SEQ TEMP[2].x, TEMP[0].xxxx, IMM[1].wwww 27: DP2 TEMP[3].x, TEMP[1].xyyy, TEMP[1].xyyy 28: SGE TEMP[3].x, TEMP[3].xxxx, IMM[2].yyyy 29: ADD TEMP[2].x, -TEMP[2].xxxx, IMM[2].xxxx 30: CMP TEMP[1].x, -TEMP[2].xxxx, TEMP[3].xxxx, IMM[2].xxxx 31: CMP TEMP[1].x, -TEMP[1].xxxx, IMM[2].xxxx, IMM[1].wwww 32: KIL -TEMP[1].xxxx 33: RCP TEMP[1].x, CONST[4].xxxx 34: RCP TEMP[1].y, CONST[4].yyyy 35: MUL TEMP[1].xy, IN[2].xyyy, TEMP[1].xyyy 36: RCP TEMP[2].x, CONST[4].xxxx 37: RCP TEMP[2].y, CONST[4].yyyy 38: MUL TEMP[2].xy, IMM[2].xzzz, TEMP[2].xyyy 39: RCP TEMP[3].x, CONST[4].xxxx 40: RCP TEMP[3].y, CONST[4].yyyy 41: MUL TEMP[3].xy, IMM[2].zxxx, TEMP[3].xyyy 42: RCP TEMP[4].x, CONST[4].xxxx 43: RCP TEMP[4].y, CONST[4].yyyy 44: MUL TEMP[4].xy, IN[2].xyyy, TEMP[4].xyyy 45: TEX TEMP[4].w, TEMP[4].xyyy, SAMP[0], 2D 46: ADD TEMP[5].xy, TEMP[1].xyyy, TEMP[2].xyyy 47: ADD TEMP[5].xy, TEMP[5].xyyy, TEMP[3].xyyy 48: TEX TEMP[5].w, TEMP[5].xyyy, SAMP[0], 2D 49: ADD TEMP[6].xy, TEMP[1].xyyy, TEMP[2].xyyy 50: TEX TEMP[6].w, TEMP[6].xyyy, SAMP[0], 2D 51: ADD TEMP[7].xy, TEMP[1].xyyy, TEMP[2].xyyy 52: ADD TEMP[7].xy, TEMP[7].xyyy, -TEMP[3].xyyy 53: TEX TEMP[7].w, TEMP[7].xyyy, SAMP[0], 2D 54: ADD TEMP[8].xy, TEMP[1].xyyy, TEMP[3].xyyy 55: TEX TEMP[8].w, TEMP[8].xyyy, SAMP[0], 2D 56: ADD TEMP[9].xy, TEMP[1].xyyy, -TEMP[3].xyyy 57: TEX TEMP[9].w, TEMP[9].xyyy, SAMP[0], 2D 58: ADD TEMP[10].xy, TEMP[1].xyyy, -TEMP[2].xyyy 59: ADD TEMP[10].xy, TEMP[10].xyyy, TEMP[3].xyyy 60: TEX TEMP[10].w, TEMP[10].xyyy, SAMP[0], 2D 61: ADD TEMP[11].xy, TEMP[1].xyyy, -TEMP[2].xyyy 62: TEX TEMP[11].w, TEMP[11].xyyy, SAMP[0], 2D 63: ADD TEMP[1].xy, TEMP[1].xyyy, -TEMP[2].xyyy 64: ADD TEMP[1].xy, TEMP[1].xyyy, -TEMP[3].xyyy 65: TEX TEMP[1].w, TEMP[1].xyyy, SAMP[0], 2D 66: MUL TEMP[1].x, IMM[2].wwww, TEMP[1].wwww 67: MAD TEMP[1].x, IMM[3].xxxx, TEMP[11].wwww, TEMP[1].xxxx 68: MAD TEMP[1].x, IMM[2].wwww, TEMP[10].wwww, TEMP[1].xxxx 69: MAD TEMP[1].x, IMM[3].xxxx, TEMP[9].wwww, TEMP[1].xxxx 70: MAD TEMP[1].x, IMM[3].xxxx, TEMP[8].wwww, TEMP[1].xxxx 71: MAD TEMP[1].x, IMM[2].wwww, TEMP[7].wwww, TEMP[1].xxxx 72: MAD TEMP[1].x, IMM[3].xxxx, TEMP[6].wwww, TEMP[1].xxxx 73: MAD TEMP[1].x, IMM[2].wwww, TEMP[5].wwww, TEMP[1].xxxx 74: ADD TEMP[1].x, TEMP[4].wwww, TEMP[1].xxxx 75: MIN TEMP[1].x, TEMP[1].xxxx, IMM[2].xxxx 76: SEQ TEMP[3].x, TEMP[1].xxxx, IMM[1].wwww 77: CMP TEMP[2].x, -TEMP[3].xxxx, IMM[2].xxxx, IMM[1].wwww 78: KIL -TEMP[2].xxxx 79: ADD TEMP[2].x, IN[1].yyyy, IMM[0].xxxx 80: RCP TEMP[3].x, CONST[6].xxxx 81: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 82: FRC TEMP[3].x, TEMP[2].xxxx 83: FLR TEMP[2].x, TEMP[2].xxxx 84: MAD TEMP[2].x, IMM[3].yyyy, TEMP[2].xxxx, CONST[0].xxxx 85: ADD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 86: RCP TEMP[4].x, CONST[6].yyyy 87: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[4].xxxx 88: MOV TEMP[3].y, TEMP[2].xxxx 89: TEX TEMP[2], TEMP[3].xyyy, SAMP[2], 2D 90: MOV TEMP[3].xyz, TEMP[2].xyzx 91: MUL TEMP[0].x, TEMP[2].wwww, TEMP[0].xxxx 92: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 93: MOV TEMP[3].w, TEMP[0].xxxx 94: MOV OUT[0], TEMP[3] 95: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[4].w, temp[4].xyyy, 2D[0]; 46: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 47: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 48: TEX temp[5].w, temp[5].xyyy, 2D[0]; 49: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 50: TEX temp[6].w, temp[6].xyyy, 2D[0]; 51: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 52: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 53: TEX temp[7].w, temp[7].xyyy, 2D[0]; 54: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 55: TEX temp[8].w, temp[8].xyyy, 2D[0]; 56: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 57: TEX temp[9].w, temp[9].xyyy, 2D[0]; 58: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 59: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 60: TEX temp[10].w, temp[10].xyyy, 2D[0]; 61: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 62: TEX temp[11].w, temp[11].xyyy, 2D[0]; 63: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 64: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 65: TEX temp[1].w, temp[1].xyyy, 2D[0]; 66: MUL temp[1].x, const[9].wwww, temp[1].wwww; 67: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 68: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 69: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 70: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 71: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 72: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 73: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 74: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 75: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 76: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 77: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 78: KIL -temp[2].xxxx; 79: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 80: RCP temp[3].x, const[6].xxxx; 81: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 82: FRC temp[3].x, temp[2].xxxx; 83: FLR temp[2].x, temp[2].xxxx; 84: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 85: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 86: RCP temp[4].x, const[6].yyyy; 87: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 88: MOV temp[3].y, temp[2].xxxx; 89: TEX temp[2], temp[3].xyyy, 2D[2]; 90: MOV temp[3].xyz, temp[2].xyzx; 91: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 92: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 93: MOV temp[3].w, temp[0].xxxx; 94: MOV output[0], temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[4].w, temp[4].xyyy, 2D[0]; 46: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 47: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 48: TEX temp[5].w, temp[5].xyyy, 2D[0]; 49: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 50: TEX temp[6].w, temp[6].xyyy, 2D[0]; 51: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 52: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 53: TEX temp[7].w, temp[7].xyyy, 2D[0]; 54: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 55: TEX temp[8].w, temp[8].xyyy, 2D[0]; 56: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 57: TEX temp[9].w, temp[9].xyyy, 2D[0]; 58: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 59: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 60: TEX temp[10].w, temp[10].xyyy, 2D[0]; 61: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 62: TEX temp[11].w, temp[11].xyyy, 2D[0]; 63: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 64: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 65: TEX temp[1].w, temp[1].xyyy, 2D[0]; 66: MUL temp[1].x, const[9].wwww, temp[1].wwww; 67: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 68: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 69: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 70: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 71: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 72: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 73: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 74: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 75: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 76: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 77: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 78: KIL -temp[2].xxxx; 79: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 80: RCP temp[3].x, const[6].xxxx; 81: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 82: FRC temp[3].x, temp[2].xxxx; 83: FLR temp[2].x, temp[2].xxxx; 84: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 85: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 86: RCP temp[4].x, const[6].yyyy; 87: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 88: MOV temp[3].y, temp[2].xxxx; 89: TEX temp[2], temp[3].xyyy, 2D[2]; 90: MOV temp[3].xyz, temp[2].xyzx; 91: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 92: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 93: MOV temp[3].w, temp[0].xxxx; 94: MOV output[0], temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[4].w, temp[4].xyyy, 2D[0]; 46: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 47: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 48: TEX temp[5].w, temp[5].xyyy, 2D[0]; 49: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 50: TEX temp[6].w, temp[6].xyyy, 2D[0]; 51: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 52: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 53: TEX temp[7].w, temp[7].xyyy, 2D[0]; 54: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 55: TEX temp[8].w, temp[8].xyyy, 2D[0]; 56: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 57: TEX temp[9].w, temp[9].xyyy, 2D[0]; 58: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 59: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 60: TEX temp[10].w, temp[10].xyyy, 2D[0]; 61: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 62: TEX temp[11].w, temp[11].xyyy, 2D[0]; 63: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 64: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 65: TEX temp[1].w, temp[1].xyyy, 2D[0]; 66: MUL temp[1].x, const[9].wwww, temp[1].wwww; 67: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 68: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 69: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 70: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 71: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 72: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 73: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 74: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 75: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 76: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 77: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 78: KIL -temp[2].xxxx; 79: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 80: RCP temp[3].x, const[6].xxxx; 81: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 82: FRC temp[3].x, temp[2].xxxx; 83: FLR temp[2].x, temp[2].xxxx; 84: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 85: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 86: RCP temp[4].x, const[6].yyyy; 87: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 88: MOV temp[3].y, temp[2].xxxx; 89: TEX temp[2], temp[3].xyyy, 2D[2]; 90: MOV temp[3].xyz, temp[2].xyzx; 91: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 92: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 93: MOV temp[3].w, temp[0].xxxx; 94: MOV output[0], temp[3]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[4].w, temp[4].xyyy, 2D[0]; 46: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 47: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 48: TEX temp[5].w, temp[5].xyyy, 2D[0]; 49: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 50: TEX temp[6].w, temp[6].xyyy, 2D[0]; 51: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 52: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 53: TEX temp[7].w, temp[7].xyyy, 2D[0]; 54: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 55: TEX temp[8].w, temp[8].xyyy, 2D[0]; 56: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 57: TEX temp[9].w, temp[9].xyyy, 2D[0]; 58: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 59: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 60: TEX temp[10].w, temp[10].xyyy, 2D[0]; 61: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 62: TEX temp[11].w, temp[11].xyyy, 2D[0]; 63: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 64: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 65: TEX temp[1].w, temp[1].xyyy, 2D[0]; 66: MUL temp[1].x, const[9].wwww, temp[1].wwww; 67: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 68: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 69: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 70: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 71: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 72: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 73: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 74: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 75: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 76: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 77: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 78: KIL -temp[2].xxxx; 79: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 80: RCP temp[3].x, const[6].xxxx; 81: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 82: FRC temp[3].x, temp[2].xxxx; 83: FLR temp[2].x, temp[2].xxxx; 84: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 85: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 86: RCP temp[4].x, const[6].yyyy; 87: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 88: MOV temp[3].y, temp[2].xxxx; 89: TEX temp[2], temp[3].xyyy, 2D[2]; 90: MOV temp[3].xyz, temp[2].xyzx; 91: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 92: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 93: MOV temp[3].w, temp[0].xxxx; 94: MOV output[0], temp[3]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[4].w, temp[4].xyyy, 2D[0]; 46: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 47: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 48: TEX temp[5].w, temp[5].xyyy, 2D[0]; 49: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 50: TEX temp[6].w, temp[6].xyyy, 2D[0]; 51: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 52: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 53: TEX temp[7].w, temp[7].xyyy, 2D[0]; 54: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 55: TEX temp[8].w, temp[8].xyyy, 2D[0]; 56: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 57: TEX temp[9].w, temp[9].xyyy, 2D[0]; 58: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 59: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 60: TEX temp[10].w, temp[10].xyyy, 2D[0]; 61: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 62: TEX temp[11].w, temp[11].xyyy, 2D[0]; 63: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 64: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 65: TEX temp[1].w, temp[1].xyyy, 2D[0]; 66: MUL temp[1].x, const[9].wwww, temp[1].wwww; 67: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 68: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 69: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 70: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 71: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 72: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 73: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 74: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 75: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 76: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 77: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 78: KIL -temp[2].xxxx; 79: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 80: RCP temp[3].x, const[6].xxxx; 81: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 82: FRC temp[3].x, temp[2].xxxx; 83: FLR temp[2].x, temp[2].xxxx; 84: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 85: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 86: RCP temp[4].x, const[6].yyyy; 87: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 88: MOV temp[3].y, temp[2].xxxx; 89: TEX temp[2], temp[3].xyyy, 2D[2]; 90: MOV temp[3].xyz, temp[2].xyzx; 91: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 92: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 93: MOV temp[3].w, temp[0].xxxx; 94: MOV output[0], temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: RCP temp[2].x, const[4].xxxx; 37: RCP temp[2].y, const[4].yyyy; 38: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 39: RCP temp[3].x, const[4].xxxx; 40: RCP temp[3].y, const[4].yyyy; 41: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 42: RCP temp[4].x, const[4].xxxx; 43: RCP temp[4].y, const[4].yyyy; 44: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 45: TEX temp[12], temp[4].xyyy, 2D[0]; 46: MOV temp[4].w, temp[12]; 47: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 48: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 49: TEX temp[13], temp[5].xyyy, 2D[0]; 50: MOV temp[5].w, temp[13]; 51: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 52: TEX temp[14], temp[6].xyyy, 2D[0]; 53: MOV temp[6].w, temp[14]; 54: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 55: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 56: TEX temp[15], temp[7].xyyy, 2D[0]; 57: MOV temp[7].w, temp[15]; 58: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 59: TEX temp[16], temp[8].xyyy, 2D[0]; 60: MOV temp[8].w, temp[16]; 61: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 62: TEX temp[17], temp[9].xyyy, 2D[0]; 63: MOV temp[9].w, temp[17]; 64: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 65: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 66: TEX temp[18], temp[10].xyyy, 2D[0]; 67: MOV temp[10].w, temp[18]; 68: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 69: TEX temp[19], temp[11].xyyy, 2D[0]; 70: MOV temp[11].w, temp[19]; 71: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 72: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 73: TEX temp[20], temp[1].xyyy, 2D[0]; 74: MOV temp[1].w, temp[20]; 75: MUL temp[1].x, const[9].wwww, temp[1].wwww; 76: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 77: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 78: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 79: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 80: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 81: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 82: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 83: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 84: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 85: SEQ temp[3].x, temp[1].xxxx, const[8].wwww; 86: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 87: KIL -temp[2].xxxx; 88: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 89: RCP temp[3].x, const[6].xxxx; 90: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 91: FRC temp[3].x, temp[2].xxxx; 92: FLR temp[2].x, temp[2].xxxx; 93: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 94: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 95: RCP temp[4].x, const[6].yyyy; 96: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 97: MOV temp[3].y, temp[2].xxxx; 98: TEX temp[2], temp[3].xyyy, 2D[2]; 99: MOV temp[3].xyz, temp[2].xyzx; 100: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 101: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 102: MOV temp[3].w, temp[0].xxxx; 103: MOV output[0], temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[21].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[21]; 6: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 7: RCP temp[2].x, const[5].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[22], temp[0]; 13: ADD temp[0], temp[0], -temp[22]; 14: MUL temp[1].x, temp[0].wwww, const[7].wwww; 15: FRC temp[23].x, temp[1].xxxx; 16: ADD temp[1].x, temp[1].xxxx, -temp[23]; 17: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 18: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 19: MUL temp[2].x, temp[0].wwww, const[7].wwww; 20: FRC temp[2].x, temp[2].xxxx; 21: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 22: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 23: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 24: MOV temp[1].y, temp[2].xxxx; 25: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 26: FRC temp[0].x, temp[0].xxxx; 27: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 28: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 29: ADD temp[2].x, temp[0].xxxx, -const[8].wwww; 30: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 31: DP3 temp[3].x, temp[1].xy00, temp[1].xy00; 32: ADD temp[24].x, temp[3].xxxx, -const[9].yyyy; 33: CMP temp[3].x, temp[24], none.0000, none.1111; 34: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 35: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 36: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].xxxx; 39: RCP temp[1].y, const[4].yyyy; 40: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 41: RCP temp[2].x, const[4].xxxx; 42: RCP temp[2].y, const[4].yyyy; 43: MUL temp[2].xy, const[9].xzzz, temp[2].xyyy; 44: RCP temp[3].x, const[4].xxxx; 45: RCP temp[3].y, const[4].yyyy; 46: MUL temp[3].xy, const[9].zxxx, temp[3].xyyy; 47: RCP temp[4].x, const[4].xxxx; 48: RCP temp[4].y, const[4].yyyy; 49: MUL temp[4].xy, input[2].xyyy, temp[4].xyyy; 50: TEX temp[12], temp[4].xyyy, 2D[0]; 51: MOV temp[4].w, temp[12]; 52: ADD temp[5].xy, temp[1].xyyy, temp[2].xyyy; 53: ADD temp[5].xy, temp[5].xyyy, temp[3].xyyy; 54: TEX temp[13], temp[5].xyyy, 2D[0]; 55: MOV temp[5].w, temp[13]; 56: ADD temp[6].xy, temp[1].xyyy, temp[2].xyyy; 57: TEX temp[14], temp[6].xyyy, 2D[0]; 58: MOV temp[6].w, temp[14]; 59: ADD temp[7].xy, temp[1].xyyy, temp[2].xyyy; 60: ADD temp[7].xy, temp[7].xyyy, -temp[3].xyyy; 61: TEX temp[15], temp[7].xyyy, 2D[0]; 62: MOV temp[7].w, temp[15]; 63: ADD temp[8].xy, temp[1].xyyy, temp[3].xyyy; 64: TEX temp[16], temp[8].xyyy, 2D[0]; 65: MOV temp[8].w, temp[16]; 66: ADD temp[9].xy, temp[1].xyyy, -temp[3].xyyy; 67: TEX temp[17], temp[9].xyyy, 2D[0]; 68: MOV temp[9].w, temp[17]; 69: ADD temp[10].xy, temp[1].xyyy, -temp[2].xyyy; 70: ADD temp[10].xy, temp[10].xyyy, temp[3].xyyy; 71: TEX temp[18], temp[10].xyyy, 2D[0]; 72: MOV temp[10].w, temp[18]; 73: ADD temp[11].xy, temp[1].xyyy, -temp[2].xyyy; 74: TEX temp[19], temp[11].xyyy, 2D[0]; 75: MOV temp[11].w, temp[19]; 76: ADD temp[1].xy, temp[1].xyyy, -temp[2].xyyy; 77: ADD temp[1].xy, temp[1].xyyy, -temp[3].xyyy; 78: TEX temp[20], temp[1].xyyy, 2D[0]; 79: MOV temp[1].w, temp[20]; 80: MUL temp[1].x, const[9].wwww, temp[1].wwww; 81: MAD temp[1].x, const[10].xxxx, temp[11].wwww, temp[1].xxxx; 82: MAD temp[1].x, const[9].wwww, temp[10].wwww, temp[1].xxxx; 83: MAD temp[1].x, const[10].xxxx, temp[9].wwww, temp[1].xxxx; 84: MAD temp[1].x, const[10].xxxx, temp[8].wwww, temp[1].xxxx; 85: MAD temp[1].x, const[9].wwww, temp[7].wwww, temp[1].xxxx; 86: MAD temp[1].x, const[10].xxxx, temp[6].wwww, temp[1].xxxx; 87: MAD temp[1].x, const[9].wwww, temp[5].wwww, temp[1].xxxx; 88: ADD temp[1].x, temp[4].wwww, temp[1].xxxx; 89: MIN temp[1].x, temp[1].xxxx, const[9].xxxx; 90: ADD temp[3].x, temp[1].xxxx, -const[8].wwww; 91: CMP temp[3].x, -|temp[3]|, none.0000, none.1111; 92: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 93: KIL -temp[2].xxxx; 94: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 95: RCP temp[3].x, const[6].xxxx; 96: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 97: FRC temp[3].x, temp[2].xxxx; 98: FRC temp[25].x, temp[2].xxxx; 99: ADD temp[2].x, temp[2].xxxx, -temp[25]; 100: MAD temp[2].x, const[10].yyyy, temp[2].xxxx, const[0].xxxx; 101: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 102: RCP temp[4].x, const[6].yyyy; 103: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 104: MOV temp[3].y, temp[2].xxxx; 105: TEX temp[2], temp[3].xyyy, 2D[2]; 106: MOV temp[3].xyz, temp[2].xyzx; 107: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 108: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 109: MOV temp[3].w, temp[0].xxxx; 110: MOV output[0], temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[1].z___, const[7].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[21].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[21].x___; 6: ADD temp[0].x, temp[0].x___, const[7].x___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[0], temp[1].xy__, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[22], temp[0]; 13: ADD temp[0], temp[0], -temp[22]; 14: MUL temp[1].x, temp[0].w___, const[7].w___; 15: FRC temp[23].x, temp[1].x___; 16: ADD temp[1].x, temp[1].x___, -temp[23].x___; 17: MAD temp[1].x, temp[0].y___, const[7].z___, temp[1].x___; 18: MAD temp[1].x, temp[1].x___, const[7].x___, const[8].x___; 19: MUL temp[2].x, temp[0].w___, const[7].w___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[3].x, temp[0].z___, const[7].z___; 22: MAD temp[2].x, const[7].z___, temp[2].x___, temp[3].x___; 23: MAD temp[2].x, temp[2].x___, const[7].x___, const[8].x___; 24: MOV temp[1].y, temp[2]._x__; 25: MUL temp[0].x, temp[0].x___, const[8].z___; 26: FRC temp[0].x, temp[0].x___; 27: MUL temp[0].x, const[8].y___, temp[0].x___; 28: ADD temp[1].xy, input[0].xy__, -temp[1].xy__; 29: ADD temp[2].x, temp[0].x___, -const[8].w___; 30: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 31: DP3 temp[3].x, temp[1].xy0_, temp[1].xy0_; 32: ADD temp[24].x, temp[3].x___, -const[9].y___; 33: CMP temp[3].x, temp[24].x___, none.0___, none.1___; 34: ADD temp[2].x, -temp[2].x___, const[9].x___; 35: CMP temp[1].x, -temp[2].x___, temp[3].x___, const[9].x___; 36: CMP temp[1].x, -temp[1].x___, const[9].x___, const[8].w___; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].x___; 39: RCP temp[1].y, const[4]._y__; 40: MUL temp[1].xy, input[2].xy__, temp[1].xy__; 41: RCP temp[2].x, const[4].x___; 42: RCP temp[2].y, const[4]._y__; 43: MUL temp[2].xy, const[9].xz__, temp[2].xy__; 44: RCP temp[3].x, const[4].x___; 45: RCP temp[3].y, const[4]._y__; 46: MUL temp[3].xy, const[9].zx__, temp[3].xy__; 47: RCP temp[4].x, const[4].x___; 48: RCP temp[4].y, const[4]._y__; 49: MUL temp[4].xy, input[2].xy__, temp[4].xy__; 50: TEX temp[12].w, temp[4].xy__, 2D[0]; 51: MOV temp[4].w, temp[12].___w; 52: ADD temp[5].xy, temp[1].xy__, temp[2].xy__; 53: ADD temp[5].xy, temp[5].xy__, temp[3].xy__; 54: TEX temp[13].w, temp[5].xy__, 2D[0]; 55: MOV temp[5].w, temp[13].___w; 56: ADD temp[6].xy, temp[1].xy__, temp[2].xy__; 57: TEX temp[14].w, temp[6].xy__, 2D[0]; 58: MOV temp[6].w, temp[14].___w; 59: ADD temp[7].xy, temp[1].xy__, temp[2].xy__; 60: ADD temp[7].xy, temp[7].xy__, -temp[3].xy__; 61: TEX temp[15].w, temp[7].xy__, 2D[0]; 62: MOV temp[7].w, temp[15].___w; 63: ADD temp[8].xy, temp[1].xy__, temp[3].xy__; 64: TEX temp[16].w, temp[8].xy__, 2D[0]; 65: MOV temp[8].w, temp[16].___w; 66: ADD temp[9].xy, temp[1].xy__, -temp[3].xy__; 67: TEX temp[17].w, temp[9].xy__, 2D[0]; 68: MOV temp[9].w, temp[17].___w; 69: ADD temp[10].xy, temp[1].xy__, -temp[2].xy__; 70: ADD temp[10].xy, temp[10].xy__, temp[3].xy__; 71: TEX temp[18].w, temp[10].xy__, 2D[0]; 72: MOV temp[10].w, temp[18].___w; 73: ADD temp[11].xy, temp[1].xy__, -temp[2].xy__; 74: TEX temp[19].w, temp[11].xy__, 2D[0]; 75: MOV temp[11].w, temp[19].___w; 76: ADD temp[1].xy, temp[1].xy__, -temp[2].xy__; 77: ADD temp[1].xy, temp[1].xy__, -temp[3].xy__; 78: TEX temp[20].w, temp[1].xy__, 2D[0]; 79: MOV temp[1].w, temp[20].___w; 80: MUL temp[1].x, const[9].w___, temp[1].w___; 81: MAD temp[1].x, const[10].x___, temp[11].w___, temp[1].x___; 82: MAD temp[1].x, const[9].w___, temp[10].w___, temp[1].x___; 83: MAD temp[1].x, const[10].x___, temp[9].w___, temp[1].x___; 84: MAD temp[1].x, const[10].x___, temp[8].w___, temp[1].x___; 85: MAD temp[1].x, const[9].w___, temp[7].w___, temp[1].x___; 86: MAD temp[1].x, const[10].x___, temp[6].w___, temp[1].x___; 87: MAD temp[1].x, const[9].w___, temp[5].w___, temp[1].x___; 88: ADD temp[1].x, temp[4].w___, temp[1].x___; 89: MIN temp[1].x, temp[1].x___, const[9].x___; 90: ADD temp[3].x, temp[1].x___, -const[8].w___; 91: CMP temp[3].x, -|temp[3].x___|, none.0___, none.1___; 92: CMP temp[2].x, -temp[3].x___, const[9].x___, const[8].w___; 93: KIL -temp[2].xxxx; 94: ADD temp[2].x, input[1].y___, const[7].x___; 95: RCP temp[3].x, const[6].x___; 96: MUL temp[2].x, temp[2].x___, temp[3].x___; 97: FRC temp[3].x, temp[2].x___; 98: FRC temp[25].x, temp[2].x___; 99: ADD temp[2].x, temp[2].x___, -temp[25].x___; 100: MAD temp[2].x, const[10].y___, temp[2].x___, const[0].x___; 101: ADD temp[2].x, temp[2].x___, const[7].x___; 102: RCP temp[4].x, const[6].y___; 103: MUL temp[2].x, temp[2].x___, temp[4].x___; 104: MOV temp[3].y, temp[2]._x__; 105: TEX temp[2], temp[3].xy__, 2D[2]; 106: MOV temp[3].xyz, temp[2].xyz_; 107: MUL temp[0].x, temp[2].w___, temp[0].x___; 108: MUL temp[0].x, temp[0].x___, temp[1].x___; 109: MOV temp[3].w, temp[0].___x; 110: MOV output[0], temp[3]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].z___, const[7].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[21].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[21].x___; 6: ADD temp[0].x, temp[0].x___, const[7].x___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[0], temp[1].xy__, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[22], temp[0]; 13: ADD temp[0], temp[0], -temp[22]; 14: MUL temp[1].x, temp[0].w___, const[7].w___; 15: FRC temp[23].x, temp[1].x___; 16: ADD temp[1].x, temp[1].x___, -temp[23].x___; 17: MAD temp[1].x, temp[0].y___, const[7].z___, temp[1].x___; 18: MAD temp[1].x, temp[1].x___, const[7].x___, const[8].x___; 19: MUL temp[2].x, temp[0].w___, const[7].w___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[3].x, temp[0].z___, const[7].z___; 22: MAD temp[2].x, const[7].z___, temp[2].x___, temp[3].x___; 23: MAD temp[2].x, temp[2].x___, const[7].x___, const[8].x___; 24: MOV temp[1].y, temp[2]._x__; 25: MUL temp[0].x, temp[0].x___, const[8].z___; 26: FRC temp[0].x, temp[0].x___; 27: MUL temp[0].x, const[8].y___, temp[0].x___; 28: ADD temp[1].xy, input[0].xy__, -temp[1].xy__; 29: ADD temp[2].x, temp[0].x___, -const[8].w___; 30: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 31: DP3 temp[3].x, temp[1].xy0_, temp[1].xy0_; 32: ADD temp[24].x, temp[3].x___, -const[9].y___; 33: CMP temp[3].x, temp[24].x___, none.0___, none.1___; 34: ADD temp[2].x, -temp[2].x___, const[9].x___; 35: CMP temp[1].x, -temp[2].x___, temp[3].x___, const[9].x___; 36: CMP temp[1].x, -temp[1].x___, const[9].x___, const[8].w___; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].x___; 39: RCP temp[1].y, const[4]._y__; 40: MUL temp[1].xy, input[2].xy__, temp[1].xy__; 41: RCP temp[2].x, const[4].x___; 42: RCP temp[2].y, const[4]._y__; 43: MUL temp[2].xy, const[9].xz__, temp[2].xy__; 44: RCP temp[3].x, const[4].x___; 45: RCP temp[3].y, const[4]._y__; 46: MUL temp[3].xy, const[9].zx__, temp[3].xy__; 47: RCP temp[4].x, const[4].x___; 48: RCP temp[4].y, const[4]._y__; 49: MUL temp[4].xy, input[2].xy__, temp[4].xy__; 50: TEX temp[12].w, temp[4].xy__, 2D[0]; 51: MOV temp[4].w, temp[12].___w; 52: ADD temp[5].xy, temp[1].xy__, temp[2].xy__; 53: ADD temp[5].xy, temp[5].xy__, temp[3].xy__; 54: TEX temp[13].w, temp[5].xy__, 2D[0]; 55: MOV temp[5].w, temp[13].___w; 56: ADD temp[6].xy, temp[1].xy__, temp[2].xy__; 57: TEX temp[14].w, temp[6].xy__, 2D[0]; 58: MOV temp[6].w, temp[14].___w; 59: ADD temp[7].xy, temp[1].xy__, temp[2].xy__; 60: ADD temp[7].xy, temp[7].xy__, -temp[3].xy__; 61: TEX temp[15].w, temp[7].xy__, 2D[0]; 62: MOV temp[7].w, temp[15].___w; 63: ADD temp[8].xy, temp[1].xy__, temp[3].xy__; 64: TEX temp[16].w, temp[8].xy__, 2D[0]; 65: MOV temp[8].w, temp[16].___w; 66: ADD temp[9].xy, temp[1].xy__, -temp[3].xy__; 67: TEX temp[17].w, temp[9].xy__, 2D[0]; 68: MOV temp[9].w, temp[17].___w; 69: ADD temp[10].xy, temp[1].xy__, -temp[2].xy__; 70: ADD temp[10].xy, temp[10].xy__, temp[3].xy__; 71: TEX temp[18].w, temp[10].xy__, 2D[0]; 72: MOV temp[10].w, temp[18].___w; 73: ADD temp[11].xy, temp[1].xy__, -temp[2].xy__; 74: TEX temp[19].w, temp[11].xy__, 2D[0]; 75: MOV temp[11].w, temp[19].___w; 76: ADD temp[1].xy, temp[1].xy__, -temp[2].xy__; 77: ADD temp[1].xy, temp[1].xy__, -temp[3].xy__; 78: TEX temp[20].w, temp[1].xy__, 2D[0]; 79: MOV temp[1].w, temp[20].___w; 80: MUL temp[1].x, const[9].w___, temp[1].w___; 81: MAD temp[1].x, const[10].x___, temp[11].w___, temp[1].x___; 82: MAD temp[1].x, const[9].w___, temp[10].w___, temp[1].x___; 83: MAD temp[1].x, const[10].x___, temp[9].w___, temp[1].x___; 84: MAD temp[1].x, const[10].x___, temp[8].w___, temp[1].x___; 85: MAD temp[1].x, const[9].w___, temp[7].w___, temp[1].x___; 86: MAD temp[1].x, const[10].x___, temp[6].w___, temp[1].x___; 87: MAD temp[1].x, const[9].w___, temp[5].w___, temp[1].x___; 88: ADD temp[1].x, temp[4].w___, temp[1].x___; 89: MIN temp[1].x, temp[1].x___, const[9].x___; 90: ADD temp[3].x, temp[1].x___, -const[8].w___; 91: CMP temp[3].x, -|temp[3].x___|, none.0___, none.1___; 92: CMP temp[2].x, -temp[3].x___, const[9].x___, const[8].w___; 93: KIL -temp[2].xxxx; 94: ADD temp[2].x, input[1].y___, const[7].x___; 95: RCP temp[3].x, const[6].x___; 96: MUL temp[2].x, temp[2].x___, temp[3].x___; 97: FRC temp[3].x, temp[2].x___; 98: FRC temp[25].x, temp[2].x___; 99: ADD temp[2].x, temp[2].x___, -temp[25].x___; 100: MAD temp[2].x, const[10].y___, temp[2].x___, const[0].x___; 101: ADD temp[2].x, temp[2].x___, const[7].x___; 102: RCP temp[4].x, const[6].y___; 103: MUL temp[2].x, temp[2].x___, temp[4].x___; 104: MOV temp[3].y, temp[2]._x__; 105: TEX temp[2], temp[3].xy__, 2D[2]; 106: MOV temp[3].xyz, temp[2].xyz_; 107: MUL temp[0].x, temp[2].w___, temp[0].x___; 108: MUL temp[0].x, temp[0].x___, temp[1].x___; 109: MOV temp[3].w, temp[0].___x; 110: MOV output[0], temp[3]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[26].x, input[1].z___, const[7].x___; 1: RCP temp[27].x, const[5].x___; 2: MUL temp[28].x, temp[26].x___, temp[27].x___; 3: FRC temp[29].x, temp[28].x___; 4: FRC temp[30].x, temp[28].x___; 5: ADD temp[31].x, temp[28].x___, -temp[30].x___; 6: ADD temp[32].x, temp[31].x___, const[7].x___; 7: RCP temp[33].x, const[5].y___; 8: MUL temp[34].x, temp[32].x___, temp[33].x___; 9: MOV temp[29].y, temp[34]._x__; 10: TEX temp[35], temp[29].xy__, 2D[1]; 11: MAD temp[36], const[7].yyyy, temp[35], const[7].xxxx; 12: FRC temp[37], temp[36]; 13: ADD temp[38], temp[36], -temp[37]; 14: MUL temp[39].x, temp[38].w___, const[7].w___; 15: FRC temp[40].x, temp[39].x___; 16: ADD temp[41].x, temp[39].x___, -temp[40].x___; 17: MAD temp[42].x, temp[38].y___, const[7].z___, temp[41].x___; 18: MAD temp[43].x, temp[42].x___, const[7].x___, const[8].x___; 19: MUL temp[44].x, temp[38].w___, const[7].w___; 20: FRC temp[45].x, temp[44].x___; 21: MUL temp[46].x, temp[38].z___, const[7].z___; 22: MAD temp[47].x, const[7].z___, temp[45].x___, temp[46].x___; 23: MAD temp[48].x, temp[47].x___, const[7].x___, const[8].x___; 24: MOV temp[43].y, temp[48]._x__; 25: MUL temp[49].x, temp[38].x___, const[8].z___; 26: FRC temp[50].x, temp[49].x___; 27: MUL temp[51].x, const[8].y___, temp[50].x___; 28: ADD temp[52].xy, input[0].xy__, -temp[43].xy__; 29: ADD temp[53].x, temp[51].x___, -const[8].w___; 30: CMP temp[54].x, -|temp[53].x___|, none.0___, none.1___; 31: DP3 temp[55].x, temp[52].xy0_, temp[52].xy0_; 32: ADD temp[56].x, temp[55].x___, -const[9].y___; 33: CMP temp[57].x, temp[56].x___, none.0___, none.1___; 34: ADD temp[58].x, -temp[54].x___, const[9].x___; 35: CMP temp[59].x, -temp[58].x___, temp[57].x___, const[9].x___; 36: CMP temp[60].x, -temp[59].x___, const[9].x___, const[8].w___; 37: KIL -temp[60].xxxx; 38: RCP temp[61].x, const[4].x___; 39: RCP temp[61].y, const[4]._y__; 40: MUL temp[62].xy, input[2].xy__, temp[61].xy__; 41: RCP temp[63].x, const[4].x___; 42: RCP temp[63].y, const[4]._y__; 43: MUL temp[64].xy, const[9].xz__, temp[63].xy__; 44: RCP temp[65].x, const[4].x___; 45: RCP temp[65].y, const[4]._y__; 46: MUL temp[66].xy, const[9].zx__, temp[65].xy__; 47: RCP temp[67].x, const[4].x___; 48: RCP temp[67].y, const[4]._y__; 49: MUL temp[68].xy, input[2].xy__, temp[67].xy__; 50: TEX temp[69].w, temp[68].xy__, 2D[0]; 51: MOV temp[70].w, temp[69].___w; 52: ADD temp[71].xy, temp[62].xy__, temp[64].xy__; 53: ADD temp[72].xy, temp[71].xy__, temp[66].xy__; 54: TEX temp[73].w, temp[72].xy__, 2D[0]; 55: MOV temp[74].w, temp[73].___w; 56: ADD temp[75].xy, temp[62].xy__, temp[64].xy__; 57: TEX temp[76].w, temp[75].xy__, 2D[0]; 58: MOV temp[77].w, temp[76].___w; 59: ADD temp[78].xy, temp[62].xy__, temp[64].xy__; 60: ADD temp[79].xy, temp[78].xy__, -temp[66].xy__; 61: TEX temp[80].w, temp[79].xy__, 2D[0]; 62: MOV temp[81].w, temp[80].___w; 63: ADD temp[82].xy, temp[62].xy__, temp[66].xy__; 64: TEX temp[83].w, temp[82].xy__, 2D[0]; 65: MOV temp[84].w, temp[83].___w; 66: ADD temp[85].xy, temp[62].xy__, -temp[66].xy__; 67: TEX temp[86].w, temp[85].xy__, 2D[0]; 68: MOV temp[87].w, temp[86].___w; 69: ADD temp[88].xy, temp[62].xy__, -temp[64].xy__; 70: ADD temp[89].xy, temp[88].xy__, temp[66].xy__; 71: TEX temp[90].w, temp[89].xy__, 2D[0]; 72: MOV temp[91].w, temp[90].___w; 73: ADD temp[92].xy, temp[62].xy__, -temp[64].xy__; 74: TEX temp[93].w, temp[92].xy__, 2D[0]; 75: MOV temp[94].w, temp[93].___w; 76: ADD temp[95].xy, temp[62].xy__, -temp[64].xy__; 77: ADD temp[96].xy, temp[95].xy__, -temp[66].xy__; 78: TEX temp[97].w, temp[96].xy__, 2D[0]; 79: MOV temp[98].w, temp[97].___w; 80: MUL temp[99].x, const[9].w___, temp[98].w___; 81: MAD temp[100].x, const[10].x___, temp[94].w___, temp[99].x___; 82: MAD temp[101].x, const[9].w___, temp[91].w___, temp[100].x___; 83: MAD temp[102].x, const[10].x___, temp[87].w___, temp[101].x___; 84: MAD temp[103].x, const[10].x___, temp[84].w___, temp[102].x___; 85: MAD temp[104].x, const[9].w___, temp[81].w___, temp[103].x___; 86: MAD temp[105].x, const[10].x___, temp[77].w___, temp[104].x___; 87: MAD temp[106].x, const[9].w___, temp[74].w___, temp[105].x___; 88: ADD temp[107].x, temp[70].w___, temp[106].x___; 89: MIN temp[108].x, temp[107].x___, const[9].x___; 90: ADD temp[109].x, temp[108].x___, -const[8].w___; 91: CMP temp[110].x, -|temp[109].x___|, none.0___, none.1___; 92: CMP temp[111].x, -temp[110].x___, const[9].x___, const[8].w___; 93: KIL -temp[111].xxxx; 94: ADD temp[112].x, input[1].y___, const[7].x___; 95: RCP temp[113].x, const[6].x___; 96: MUL temp[114].x, temp[112].x___, temp[113].x___; 97: FRC temp[115].x, temp[114].x___; 98: FRC temp[116].x, temp[114].x___; 99: ADD temp[117].x, temp[114].x___, -temp[116].x___; 100: MAD temp[118].x, const[10].y___, temp[117].x___, const[0].x___; 101: ADD temp[119].x, temp[118].x___, const[7].x___; 102: RCP temp[120].x, const[6].y___; 103: MUL temp[121].x, temp[119].x___, temp[120].x___; 104: MOV temp[115].y, temp[121]._x__; 105: TEX temp[122], temp[115].xy__, 2D[2]; 106: MOV temp[123].xyz, temp[122].xyz_; 107: MUL temp[124].x, temp[122].w___, temp[51].x___; 108: MUL temp[125].x, temp[124].x___, temp[108].x___; 109: MOV temp[123].w, temp[125].___x; 110: MOV output[0], temp[123]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[26].x, input[1].z___, none.H___; 1: RCP temp[27].x, const[5].x___; 2: MUL temp[28].x, temp[26].x___, temp[27].x___; 3: FRC temp[29].x, temp[28].x___; 4: FRC temp[30].x, temp[28].x___; 5: ADD temp[32].x, (temp[28] - temp[30]).x___, none.H___; 6: RCP temp[33].x, const[5].y___; 7: MUL temp[34].x, temp[32].x___, temp[33].x___; 8: MOV temp[29].y, temp[34]._x__; 9: TEX temp[35], temp[29].xy__, 2D[1]; 10: MAD temp[36], const[7].yyyy, temp[35], none.HHHH; 11: FRC temp[37], temp[36]; 12: ADD temp[38], temp[36], -temp[37]; 13: MUL temp[39].x, temp[38].w___, const[7].w___; 14: FRC temp[40].x, temp[39].x___; 15: ADD temp[41].x, temp[39].x___, -temp[40].x___; 16: MAD temp[42].x, temp[38].y___, const[7].z___, temp[41].x___; 17: MAD temp[43].x, temp[42].x___, none.H___, const[8].x___; 18: MUL temp[44].x, temp[38].w___, const[7].w___; 19: FRC temp[45].x, temp[44].x___; 20: MUL temp[46].x, temp[38].z___, const[7].z___; 21: MAD temp[47].x, const[7].z___, temp[45].x___, temp[46].x___; 22: MAD temp[48].x, temp[47].x___, none.H___, const[8].x___; 23: MOV temp[43].y, temp[48]._x__; 24: MUL temp[49].x, temp[38].x___, const[8].z___; 25: FRC temp[50].x, temp[49].x___; 26: MUL temp[51].x, const[8].y___, temp[50].x___; 27: CMP temp[54].x, -|temp[51].x___|, none.0___, none.1___; 28: DP3 temp[55].x, (input[0] - temp[43]).xy0_, (input[0] - temp[43]).xy0_; 29: ADD temp[56].x, temp[55].x___, -const[9].y___; 30: CMP temp[57].x, temp[56].x___, none.0___, none.1___; 31: ADD temp[58].x, -temp[54].x___, none.1___; 32: CMP temp[59].x, -temp[58].x___, temp[57].x___, none.1___; 33: CMP temp[60].x, -temp[59].x___, none.1___, none.0___; 34: KIL -temp[60].xxxx; 35: RCP temp[61].x, const[4].x___; 36: RCP temp[61].y, const[4]._y__; 37: MUL temp[62].xy, input[2].xy__, temp[61].xy__; 38: RCP temp[63].x, const[4].x___; 39: RCP temp[63].y, const[4]._y__; 40: MUL temp[64].xy, none.10__, temp[63].xy__; 41: RCP temp[65].x, const[4].x___; 42: RCP temp[65].y, const[4]._y__; 43: MUL temp[66].xy, const[9].zx__, temp[65].xy__; 44: RCP temp[67].x, const[4].x___; 45: RCP temp[67].y, const[4]._y__; 46: MUL temp[68].xy, input[2].xy__, temp[67].xy__; 47: TEX temp[69].w, temp[68].xy__, 2D[0]; 48: ADD temp[72].xy, (temp[64] + temp[62]).xy__, temp[66].xy__; 49: TEX temp[73].w, temp[72].xy__, 2D[0]; 50: ADD temp[75].xy, temp[62].xy__, temp[64].xy__; 51: TEX temp[76].w, temp[75].xy__, 2D[0]; 52: ADD temp[79].xy, (temp[64] + temp[62]).xy__, -temp[66].xy__; 53: TEX temp[80].w, temp[79].xy__, 2D[0]; 54: ADD temp[82].xy, temp[62].xy__, temp[66].xy__; 55: TEX temp[83].w, temp[82].xy__, 2D[0]; 56: ADD temp[85].xy, temp[62].xy__, -temp[66].xy__; 57: TEX temp[86].w, temp[85].xy__, 2D[0]; 58: ADD temp[89].xy, (temp[62] - temp[64]).xy__, temp[66].xy__; 59: TEX temp[90].w, temp[89].xy__, 2D[0]; 60: ADD temp[92].xy, temp[62].xy__, -temp[64].xy__; 61: TEX temp[93].w, temp[92].xy__, 2D[0]; 62: ADD temp[96].xy, (temp[62] - temp[64]).xy__, -temp[66].xy__; 63: TEX temp[97].w, temp[96].xy__, 2D[0]; 64: MUL temp[99].x, const[9].w___, temp[97].w___; 65: MAD temp[100].x, const[10].x___, temp[93].w___, temp[99].x___; 66: MAD temp[101].x, const[9].w___, temp[90].w___, temp[100].x___; 67: MAD temp[102].x, const[10].x___, temp[86].w___, temp[101].x___; 68: MAD temp[103].x, const[10].x___, temp[83].w___, temp[102].x___; 69: MAD temp[104].x, const[9].w___, temp[80].w___, temp[103].x___; 70: MAD temp[105].x, const[10].x___, temp[76].w___, temp[104].x___; 71: MAD temp[106].x, const[9].w___, temp[73].w___, temp[105].x___; 72: ADD temp[107].x, temp[69].w___, temp[106].x___; 73: MIN temp[108].x, temp[107].x___, none.1___; 74: CMP temp[110].x, -|temp[108].x___|, none.0___, none.1___; 75: CMP temp[111].x, -temp[110].x___, none.1___, none.0___; 76: KIL -temp[111].xxxx; 77: ADD temp[112].x, input[1].y___, none.H___; 78: RCP temp[113].x, const[6].x___; 79: MUL temp[114].x, temp[112].x___, temp[113].x___; 80: FRC temp[115].x, temp[114].x___; 81: FRC temp[116].x, temp[114].x___; 82: ADD temp[117].x, temp[114].x___, -temp[116].x___; 83: MAD temp[118].x, const[10].y___, temp[117].x___, const[0].x___; 84: ADD temp[119].x, temp[118].x___, none.H___; 85: RCP temp[120].x, const[6].y___; 86: MUL temp[121].x, temp[119].x___, temp[120].x___; 87: MOV temp[115].y, temp[121]._x__; 88: TEX temp[122], temp[115].xy__, 2D[2]; 89: MOV temp[123].xyz, temp[122].xyz_; 90: MUL temp[124].x, temp[122].w___, temp[51].x___; 91: MUL temp[125].x, temp[124].x___, temp[108].x___; 92: MOV temp[123].w, temp[125].___x; 93: MOV output[0], temp[123]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[26].x, input[1].z___, none.H___; 1: RCP temp[27].x, const[5].x___; 2: MUL temp[28].x, temp[26].x___, temp[27].x___; 3: FRC temp[29].x, temp[28].x___; 4: FRC temp[30].x, temp[28].x___; 5: ADD temp[32].x, (temp[28] - temp[30]).x___, none.H___; 6: RCP temp[33].x, const[5].y___; 7: MUL temp[34].x, temp[32].x___, temp[33].x___; 8: MOV temp[29].y, temp[34]._x__; 9: TEX temp[35], temp[29].xy__, 2D[1]; 10: MAD temp[36], const[7].yyyy, temp[35], none.HHHH; 11: FRC temp[37], temp[36]; 12: ADD temp[38], temp[36], -temp[37]; 13: MUL temp[39].x, temp[38].w___, const[7].w___; 14: FRC temp[40].x, temp[39].x___; 15: ADD temp[41].x, temp[39].x___, -temp[40].x___; 16: MAD temp[42].x, temp[38].y___, const[7].z___, temp[41].x___; 17: MAD temp[43].x, temp[42].x___, none.H___, const[8].x___; 18: MUL temp[44].x, temp[38].w___, const[7].w___; 19: FRC temp[45].x, temp[44].x___; 20: MUL temp[46].x, temp[38].z___, const[7].z___; 21: MAD temp[47].x, const[7].z___, temp[45].x___, temp[46].x___; 22: MAD temp[48].x, temp[47].x___, none.H___, const[8].x___; 23: MOV temp[43].y, temp[48]._x__; 24: MUL temp[49].x, temp[38].x___, const[8].z___; 25: FRC temp[50].x, temp[49].x___; 26: MUL temp[51].x, const[8].y___, temp[50].x___; 27: CMP temp[54].x, -|temp[51].x___|, none.0___, none.1___; 28: MOV temp[0].xy, (input[0] - temp[43]).xy__; 29: MOV temp[0].z, (input[0] - temp[43]).__0_; 30: MOV temp[1].xy, (input[0] - temp[43]).xy__; 31: MOV temp[1].z, (input[0] - temp[43]).__0_; 32: DP3 temp[55].x, temp[0].xyz_, temp[1].xyz_; 33: ADD temp[56].x, temp[55].x___, -const[9].y___; 34: CMP temp[57].x, temp[56].x___, none.0___, none.1___; 35: ADD temp[58].x, -temp[54].x___, none.1___; 36: CMP temp[59].x, -temp[58].x___, temp[57].x___, none.1___; 37: CMP temp[60].x, -temp[59].x___, none.1___, none.0___; 38: MOV temp[2], -temp[60].xxxx; 39: KIL temp[2]; 40: RCP temp[61].x, const[4].x___; 41: RCP temp[61].y, const[4]._y__; 42: MUL temp[62].xy, input[2].xy__, temp[61].xy__; 43: RCP temp[63].x, const[4].x___; 44: RCP temp[63].y, const[4]._y__; 45: MOV temp[3].x, none.1___; 46: MOV temp[3].y, none._0__; 47: MUL temp[64].xy, temp[3].xy__, temp[63].xy__; 48: RCP temp[65].x, const[4].x___; 49: RCP temp[65].y, const[4]._y__; 50: MUL temp[66].xy, const[9].zx__, temp[65].xy__; 51: RCP temp[67].x, const[4].x___; 52: RCP temp[67].y, const[4]._y__; 53: MUL temp[68].xy, input[2].xy__, temp[67].xy__; 54: TEX temp[69].w, temp[68].xy__, 2D[0]; 55: ADD temp[72].xy, (temp[64] + temp[62]).xy__, temp[66].xy__; 56: TEX temp[73].w, temp[72].xy__, 2D[0]; 57: ADD temp[75].xy, temp[62].xy__, temp[64].xy__; 58: TEX temp[76].w, temp[75].xy__, 2D[0]; 59: ADD temp[79].xy, (temp[64] + temp[62]).xy__, -temp[66].xy__; 60: TEX temp[80].w, temp[79].xy__, 2D[0]; 61: ADD temp[82].xy, temp[62].xy__, temp[66].xy__; 62: TEX temp[83].w, temp[82].xy__, 2D[0]; 63: ADD temp[85].xy, temp[62].xy__, -temp[66].xy__; 64: TEX temp[86].w, temp[85].xy__, 2D[0]; 65: ADD temp[89].xy, (temp[62] - temp[64]).xy__, temp[66].xy__; 66: TEX temp[90].w, temp[89].xy__, 2D[0]; 67: ADD temp[92].xy, temp[62].xy__, -temp[64].xy__; 68: TEX temp[93].w, temp[92].xy__, 2D[0]; 69: ADD temp[96].xy, (temp[62] - temp[64]).xy__, -temp[66].xy__; 70: TEX temp[97].w, temp[96].xy__, 2D[0]; 71: MUL temp[99].x, const[9].w___, temp[97].w___; 72: MAD temp[100].x, const[10].x___, temp[93].w___, temp[99].x___; 73: MAD temp[101].x, const[9].w___, temp[90].w___, temp[100].x___; 74: MAD temp[102].x, const[10].x___, temp[86].w___, temp[101].x___; 75: MAD temp[103].x, const[10].x___, temp[83].w___, temp[102].x___; 76: MAD temp[104].x, const[9].w___, temp[80].w___, temp[103].x___; 77: MAD temp[105].x, const[10].x___, temp[76].w___, temp[104].x___; 78: MAD temp[106].x, const[9].w___, temp[73].w___, temp[105].x___; 79: ADD temp[107].x, temp[69].w___, temp[106].x___; 80: MIN temp[108].x, temp[107].x___, none.1___; 81: CMP temp[110].x, -|temp[108].x___|, none.0___, none.1___; 82: CMP temp[111].x, -temp[110].x___, none.1___, none.0___; 83: MOV temp[4], -temp[111].xxxx; 84: KIL temp[4]; 85: ADD temp[112].x, input[1].y___, none.H___; 86: RCP temp[113].x, const[6].x___; 87: MUL temp[114].x, temp[112].x___, temp[113].x___; 88: FRC temp[115].x, temp[114].x___; 89: FRC temp[116].x, temp[114].x___; 90: ADD temp[117].x, temp[114].x___, -temp[116].x___; 91: MAD temp[118].x, const[10].y___, temp[117].x___, const[0].x___; 92: ADD temp[119].x, temp[118].x___, none.H___; 93: RCP temp[120].x, const[6].y___; 94: MUL temp[121].x, temp[119].x___, temp[120].x___; 95: MOV temp[115].y, temp[121]._x__; 96: TEX temp[122], temp[115].xy__, 2D[2]; 97: MOV temp[123].xyz, temp[122].xyz_; 98: MUL temp[124].x, temp[122].w___, temp[51].x___; 99: MUL temp[125].x, temp[124].x___, temp[108].x___; 100: MOV temp[123].w, temp[125].___x; 101: MOV output[0], temp[123]; CONST[4] = { 0.5000 255.0000 16.0000 0.0625 } CONST[5] = { -1023.0000 1.0323 0.0312 0.0000 } CONST[6] = { 1.0000 0.6000 0.0000 0.5454 } CONST[7] = { 0.9717 26.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[26].x, input[1].z___, none.H___; 1: RCP temp[27].x, const[2].x___; 2: MUL temp[28].x, temp[26].x___, temp[27].x___; 3: FRC temp[29].x, temp[28].x___; 4: FRC temp[30].x, temp[28].x___; 5: ADD temp[32].x, (temp[28] - temp[30]).x___, none.H___; 6: RCP temp[33].x, const[2].y___; 7: MUL temp[34].x, temp[32].x___, temp[33].x___; 8: MOV temp[29].y, temp[34]._x__; 9: TEX temp[35], temp[29].xy__, 2D[1]; 10: MAD temp[36], const[4].yyyy, temp[35], none.HHHH; 11: FRC temp[37], temp[36]; 12: ADD temp[38], temp[36], -temp[37]; 13: MUL temp[39].x, temp[38].w___, const[4].w___; 14: FRC temp[40].x, temp[39].x___; 15: ADD temp[41].x, temp[39].x___, -temp[40].x___; 16: MAD temp[42].x, temp[38].y___, const[4].z___, temp[41].x___; 17: MAD temp[43].x, temp[42].x___, none.H___, const[5].x___; 18: MUL temp[44].x, temp[38].w___, const[4].w___; 19: FRC temp[45].x, temp[44].x___; 20: MUL temp[46].x, temp[38].z___, const[4].z___; 21: MAD temp[47].x, const[4].z___, temp[45].x___, temp[46].x___; 22: MAD temp[48].x, temp[47].x___, none.H___, const[5].x___; 23: MOV temp[43].y, temp[48]._x__; 24: MUL temp[49].x, temp[38].x___, const[5].z___; 25: FRC temp[50].x, temp[49].x___; 26: MUL temp[51].x, const[5].y___, temp[50].x___; 27: CMP temp[54].x, -|temp[51].x___|, none.0___, none.1___; 28: MOV temp[0].xy, (input[0] - temp[43]).xy__; 29: MOV temp[0].z, (input[0] - temp[43]).__0_; 30: MOV temp[1].xy, (input[0] - temp[43]).xy__; 31: MOV temp[1].z, (input[0] - temp[43]).__0_; 32: DP3 temp[55].x, temp[0].xyz_, temp[1].xyz_; 33: ADD temp[56].x, temp[55].x___, -const[6].y___; 34: CMP temp[57].x, temp[56].x___, none.0___, none.1___; 35: ADD temp[58].x, -temp[54].x___, none.1___; 36: CMP temp[59].x, -temp[58].x___, temp[57].x___, none.1___; 37: CMP temp[60].x, -temp[59].x___, none.1___, none.0___; 38: MOV temp[2], -temp[60].xxxx; 39: KIL temp[2]; 40: RCP temp[61].x, const[1].x___; 41: RCP temp[61].y, const[1]._y__; 42: MUL temp[62].xy, input[2].xy__, temp[61].xy__; 43: RCP temp[63].x, const[1].x___; 44: RCP temp[63].y, const[1]._y__; 45: MOV temp[3].x, none.1___; 46: MOV temp[3].y, none._0__; 47: MUL temp[64].xy, temp[3].xy__, temp[63].xy__; 48: RCP temp[65].x, const[1].x___; 49: RCP temp[65].y, const[1]._y__; 50: MUL temp[66].xy, const[6].zx__, temp[65].xy__; 51: RCP temp[67].x, const[1].x___; 52: RCP temp[67].y, const[1]._y__; 53: MUL temp[68].xy, input[2].xy__, temp[67].xy__; 54: TEX temp[69].w, temp[68].xy__, 2D[0]; 55: ADD temp[72].xy, (temp[64] + temp[62]).xy__, temp[66].xy__; 56: TEX temp[73].w, temp[72].xy__, 2D[0]; 57: ADD temp[75].xy, temp[62].xy__, temp[64].xy__; 58: TEX temp[76].w, temp[75].xy__, 2D[0]; 59: ADD temp[79].xy, (temp[64] + temp[62]).xy__, -temp[66].xy__; 60: TEX temp[80].w, temp[79].xy__, 2D[0]; 61: ADD temp[82].xy, temp[62].xy__, temp[66].xy__; 62: TEX temp[83].w, temp[82].xy__, 2D[0]; 63: ADD temp[85].xy, temp[62].xy__, -temp[66].xy__; 64: TEX temp[86].w, temp[85].xy__, 2D[0]; 65: ADD temp[89].xy, (temp[62] - temp[64]).xy__, temp[66].xy__; 66: TEX temp[90].w, temp[89].xy__, 2D[0]; 67: ADD temp[92].xy, temp[62].xy__, -temp[64].xy__; 68: TEX temp[93].w, temp[92].xy__, 2D[0]; 69: ADD temp[96].xy, (temp[62] - temp[64]).xy__, -temp[66].xy__; 70: TEX temp[97].w, temp[96].xy__, 2D[0]; 71: MUL temp[99].x, const[6].w___, temp[97].w___; 72: MAD temp[100].x, const[7].x___, temp[93].w___, temp[99].x___; 73: MAD temp[101].x, const[6].w___, temp[90].w___, temp[100].x___; 74: MAD temp[102].x, const[7].x___, temp[86].w___, temp[101].x___; 75: MAD temp[103].x, const[7].x___, temp[83].w___, temp[102].x___; 76: MAD temp[104].x, const[6].w___, temp[80].w___, temp[103].x___; 77: MAD temp[105].x, const[7].x___, temp[76].w___, temp[104].x___; 78: MAD temp[106].x, const[6].w___, temp[73].w___, temp[105].x___; 79: ADD temp[107].x, temp[69].w___, temp[106].x___; 80: MIN temp[108].x, temp[107].x___, none.1___; 81: CMP temp[110].x, -|temp[108].x___|, none.0___, none.1___; 82: CMP temp[111].x, -temp[110].x___, none.1___, none.0___; 83: MOV temp[4], -temp[111].xxxx; 84: KIL temp[4]; 85: ADD temp[112].x, input[1].y___, none.H___; 86: RCP temp[113].x, const[3].x___; 87: MUL temp[114].x, temp[112].x___, temp[113].x___; 88: FRC temp[115].x, temp[114].x___; 89: FRC temp[116].x, temp[114].x___; 90: ADD temp[117].x, temp[114].x___, -temp[116].x___; 91: MAD temp[118].x, const[7].y___, temp[117].x___, const[0].x___; 92: ADD temp[119].x, temp[118].x___, none.H___; 93: RCP temp[120].x, const[3].y___; 94: MUL temp[121].x, temp[119].x___, temp[120].x___; 95: MOV temp[115].y, temp[121]._x__; 96: TEX temp[122], temp[115].xy__, 2D[2]; 97: MOV temp[123].xyz, temp[122].xyz_; 98: MUL temp[124].x, temp[122].w___, temp[51].x___; 99: MUL temp[125].x, temp[124].x___, temp[108].x___; 100: MOV temp[123].w, temp[125].___x; 101: MOV output[0], temp[123]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] MAD temp[26].x, src0.z__, src0.111, src0.H__ 1: src0.xyz = const[2] REPL_ALPHA temp[27].x RCP, src0.x 2: src0.xyz = temp[26], src1.xyz = temp[27] MAD temp[28].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[28] FRC temp[29].x, src0.x__ 4: src0.xyz = temp[28] FRC temp[30].x, src0.x__ 5: src0.xyz = temp[30], src1.xyz = temp[28], srcp.xyz = (src1 - src0) MAD temp[32].x, srcp.x__, src0.111, src0.H__ 6: src0.xyz = const[2] REPL_ALPHA temp[33].x RCP, src0.y 7: src0.xyz = temp[32], src1.xyz = temp[33] MAD temp[34].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[34] MAD temp[29].y, src0._x_, src0.111, src0.000 9: TEX temp[35], temp[29].xy__, 2D[1]; 10: src0.xyz = const[4], src0.w = temp[35], src1.xyz = temp[35] MAD temp[36].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[36].w, src0.y, src0.w, src0.H 11: src0.xyz = temp[36], src0.w = temp[36] FRC temp[37].xyz, src0.xyz FRC temp[37].w, src0.w 12: src0.xyz = temp[36], src0.w = temp[36], src1.xyz = temp[37], src1.w = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[38].w, src0.w, src0.1, -src1.w 13: src0.w = temp[38], src1.w = const[4] MAD temp[39].x, src0.w__, src1.w__, src0.000 14: src0.xyz = temp[39] FRC temp[40].x, src0.x__ 15: src0.xyz = temp[39], src1.xyz = temp[40] MAD temp[41].x, src0.x__, src0.111, -src1.x__ 16: src0.xyz = temp[38], src1.xyz = const[4], src2.xyz = temp[41] MAD temp[42].x, src0.y__, src1.z__, src2.x__ 17: src0.xyz = temp[42], src1.xyz = const[5] MAD temp[43].x, src0.x__, src0.H__, src1.x__ 18: src0.w = temp[38], src1.w = const[4] MAD temp[44].x, src0.w__, src1.w__, src0.000 19: src0.xyz = temp[44] FRC temp[45].x, src0.x__ 20: src0.xyz = temp[38], src1.xyz = const[4] MAD temp[46].x, src0.z__, src1.z__, src0.000 21: src0.xyz = const[4], src1.xyz = temp[45], src2.xyz = temp[46] MAD temp[47].x, src0.z__, src1.x__, src2.x__ 22: src0.xyz = temp[47], src1.xyz = const[5] MAD temp[48].x, src0.x__, src0.H__, src1.x__ 23: src0.xyz = temp[48] MAD temp[43].y, src0._x_, src0.111, src0.000 24: src0.xyz = temp[38], src1.xyz = const[5] MAD temp[49].x, src0.x__, src1.z__, src0.000 25: src0.xyz = temp[49] FRC temp[50].x, src0.x__ 26: src0.xyz = const[5], src1.xyz = temp[50] MAD temp[51].x, src0.y__, src1.x__, src0.000 27: src0.xyz = temp[51] CMP temp[54].x, src0.1__, src0.0__, -|src0.x__| 28: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 29: MAD temp[0].z, src0.__0, src0.111, src0.000 30: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 31: MAD temp[1].z, src0.__0, src0.111, src0.000 32: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[55].x, src0.xyz, src1.xyz 33: src0.xyz = temp[55], src1.xyz = const[6] MAD temp[56].x, src0.x__, src0.111, -src1.y__ 34: src0.xyz = temp[56] CMP temp[57].x, src0.1__, src0.0__, src0.x__ 35: src0.xyz = temp[54] MAD temp[58].x, -src0.x__, src0.111, src0.1__ 36: src0.xyz = temp[57], src1.xyz = temp[58] CMP temp[59].x, src0.1__, src0.x__, -src1.x__ 37: src0.xyz = temp[59] CMP temp[60].x, src0.0__, src0.1__, -src0.x__ 38: src0.xyz = temp[60] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 39: KIL temp[2]; 40: src0.xyz = const[1] REPL_ALPHA temp[61].x RCP, src0.x 41: src0.xyz = const[1] REPL_ALPHA temp[61].y RCP, src0.y 42: src0.xyz = input[2], src1.xyz = temp[61] MAD temp[62].xy, src0.xy_, src1.xy_, src0.000 43: src0.xyz = const[1] REPL_ALPHA temp[63].x RCP, src0.x 44: src0.xyz = const[1] REPL_ALPHA temp[63].y RCP, src0.y 45: MAD temp[3].x, src0.1__, src0.111, src0.000 46: MAD temp[3].y, src0._0_, src0.111, src0.000 47: src0.xyz = temp[3], src1.xyz = temp[63] MAD temp[64].xy, src0.xy_, src1.xy_, src0.000 48: src0.xyz = const[1] REPL_ALPHA temp[65].x RCP, src0.x 49: src0.xyz = const[1] REPL_ALPHA temp[65].y RCP, src0.y 50: src0.xyz = const[6], src1.xyz = temp[65] MAD temp[66].xy, src0.zx_, src1.xy_, src0.000 51: src0.xyz = const[1] REPL_ALPHA temp[67].x RCP, src0.x 52: src0.xyz = const[1] REPL_ALPHA temp[67].y RCP, src0.y 53: src0.xyz = input[2], src1.xyz = temp[67] MAD temp[68].xy, src0.xy_, src1.xy_, src0.000 54: TEX temp[69].w, temp[68].xy__, 2D[0]; 55: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[72].xy, srcp.xy_, src0.111, src2.xy_ 56: TEX temp[73].w, temp[72].xy__, 2D[0]; 57: src0.xyz = temp[62], src1.xyz = temp[64] MAD temp[75].xy, src0.xy_, src0.111, src1.xy_ 58: TEX temp[76].w, temp[75].xy__, 2D[0]; 59: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[79].xy, srcp.xy_, src0.111, -src2.xy_ 60: TEX temp[80].w, temp[79].xy__, 2D[0]; 61: src0.xyz = temp[62], src1.xyz = temp[66] MAD temp[82].xy, src0.xy_, src0.111, src1.xy_ 62: TEX temp[83].w, temp[82].xy__, 2D[0]; 63: src0.xyz = temp[62], src1.xyz = temp[66] MAD temp[85].xy, src0.xy_, src0.111, -src1.xy_ 64: TEX temp[86].w, temp[85].xy__, 2D[0]; 65: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[89].xy, srcp.xy_, src0.111, src2.xy_ 66: TEX temp[90].w, temp[89].xy__, 2D[0]; 67: src0.xyz = temp[62], src1.xyz = temp[64] MAD temp[92].xy, src0.xy_, src0.111, -src1.xy_ 68: TEX temp[93].w, temp[92].xy__, 2D[0]; 69: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[96].xy, srcp.xy_, src0.111, -src2.xy_ 70: TEX temp[97].w, temp[96].xy__, 2D[0]; 71: src0.w = const[6], src1.w = temp[97] MAD temp[99].x, src0.w__, src1.w__, src0.000 72: src0.xyz = const[7], src0.w = temp[93], src1.xyz = temp[99] MAD temp[100].x, src0.x__, src0.w__, src1.x__ 73: src0.xyz = temp[100], src0.w = const[6], src1.w = temp[90] MAD temp[101].x, src0.w__, src1.w__, src0.x__ 74: src0.xyz = const[7], src0.w = temp[86], src1.xyz = temp[101] MAD temp[102].x, src0.x__, src0.w__, src1.x__ 75: src0.xyz = const[7], src0.w = temp[83], src1.xyz = temp[102] MAD temp[103].x, src0.x__, src0.w__, src1.x__ 76: src0.xyz = temp[103], src0.w = const[6], src1.w = temp[80] MAD temp[104].x, src0.w__, src1.w__, src0.x__ 77: src0.xyz = const[7], src0.w = temp[76], src1.xyz = temp[104] MAD temp[105].x, src0.x__, src0.w__, src1.x__ 78: src0.xyz = temp[105], src0.w = const[6], src1.w = temp[73] MAD temp[106].x, src0.w__, src1.w__, src0.x__ 79: src0.xyz = temp[106], src0.w = temp[69] MAD temp[107].x, src0.w__, src0.111, src0.x__ 80: src0.xyz = temp[107] MIN temp[108].x, src0.x__, src0.1__ 81: src0.xyz = temp[108] CMP temp[110].x, src0.1__, src0.0__, -|src0.x__| 82: src0.xyz = temp[110] CMP temp[111].x, src0.0__, src0.1__, -src0.x__ 83: src0.xyz = temp[111] MAD temp[4].xyz, -src0.xxx, src0.111, src0.000 MAD temp[4].w, -src0.x, src0.1, src0.0 84: KIL temp[4]; 85: src0.xyz = input[1] MAD temp[112].x, src0.y__, src0.111, src0.H__ 86: src0.xyz = const[3] REPL_ALPHA temp[113].x RCP, src0.x 87: src0.xyz = temp[112], src1.xyz = temp[113] MAD temp[114].x, src0.x__, src1.x__, src0.000 88: src0.xyz = temp[114] FRC temp[115].x, src0.x__ 89: src0.xyz = temp[114] FRC temp[116].x, src0.x__ 90: src0.xyz = temp[114], src1.xyz = temp[116] MAD temp[117].x, src0.x__, src0.111, -src1.x__ 91: src0.xyz = const[7], src1.xyz = temp[117], src2.xyz = const[0] MAD temp[118].x, src0.y__, src1.x__, src2.x__ 92: src0.xyz = temp[118] MAD temp[119].x, src0.x__, src0.111, src0.H__ 93: src0.xyz = const[3] REPL_ALPHA temp[120].x RCP, src0.y 94: src0.xyz = temp[119], src1.xyz = temp[120] MAD temp[121].x, src0.x__, src1.x__, src0.000 95: src0.xyz = temp[121] MAD temp[115].y, src0._x_, src0.111, src0.000 96: TEX temp[122], temp[115].xy__, 2D[2]; 97: src0.xyz = temp[122] MAD temp[123].xyz, src0.xyz, src0.111, src0.000 98: src0.xyz = temp[51], src0.w = temp[122] MAD temp[124].x, src0.w__, src0.x__, src0.000 99: src0.xyz = temp[124], src1.xyz = temp[108] MAD temp[125].x, src0.x__, src1.x__, src0.000 100: src0.xyz = temp[125] MAD temp[123].w, src0.x, src0.1, src0.0 101: src0.xyz = temp[123], src0.w = temp[123] 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] MAD temp[3].y, src0._0_, src0.111, src0.000 MAD temp[112].w, src0.y, src0.1, src0.H 1: src0.xyz = const[3] MAD temp[3].x, src0.1__, src0.111, src0.000 RCP temp[120].w, src0.y 2: src0.xyz = const[3] MAD temp[1].z, src0.__0, src0.111, src0.000 RCP temp[113].w, src0.x 3: src0.xyz = const[2] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[33].w, src0.y 4: src0.xyz = input[1], src1.xyz = const[2] MAD temp[26].x, src0.z__, src0.111, src0.H__ RCP temp[27].w, src1.x 5: src0.xyz = temp[26], src0.w = temp[27], src1.xyz = temp[27], src1.w = temp[112], src2.w = temp[113] MAD temp[28].x, src0.x__, src0.w__, src0.000 MAD temp[114].w, src1.w, src2.w, src0.0 6: src0.xyz = temp[28], src0.w = temp[114] FRC temp[30].x, src0.x__ FRC temp[116].w, src0.w 7: src0.xyz = temp[114], src0.w = temp[114], src1.w = temp[116] FRC temp[115].x, src0.w__ MAD temp[117].w, src0.w, src0.1, -src1.w 8: src0.xyz = temp[30], src1.xyz = temp[28], srcp.xyz = (src1 - src0) FRC temp[29].x, src1.x__ MAD temp[32].w, srcp.x, src0.1, src0.H 9: src0.xyz = const[1] REPL_ALPHA temp[61].x RCP, src0.x 10: src0.xyz = const[7], src0.w = temp[117], src1.xyz = temp[117], src2.xyz = const[0] MAD temp[118].w, src0.y, src0.w, src2.x 11: src0.xyz = temp[118], src0.w = temp[118], src1.w = temp[32], src2.w = temp[33] MAD temp[119].x, src0.w__, src0.111, src0.H__ MAD temp[34].w, src1.w, src2.w, src0.0 12: src0.xyz = temp[34], src0.w = temp[34], src1.xyz = temp[119], src1.w = temp[120] MAD temp[29].y, src0._w_, src0.111, src0.000 MAD temp[121].w, src1.x, src1.w, src0.0 13: src0.xyz = const[1] REPL_ALPHA temp[61].y RCP, src0.y 14: src0.xyz = const[1] REPL_ALPHA temp[63].x RCP, src0.x 15: src0.xyz = const[1] REPL_ALPHA temp[63].y RCP, src0.y 16: src0.xyz = const[1] REPL_ALPHA temp[65].x RCP, src0.x 17: src0.xyz = const[1] REPL_ALPHA temp[65].y RCP, src0.y 18: src0.xyz = const[1] REPL_ALPHA temp[67].x RCP, src0.x 19: src0.xyz = const[1] REPL_ALPHA temp[67].y RCP, src0.y 20: src0.xyz = temp[121], src0.w = temp[121] MAD temp[115].y, src0._w_, src0.111, src0.000 21: src0.xyz = input[2], src1.xyz = temp[61] MAD temp[62].xy, src0.xy_, src1.xy_, src0.000 22: src0.xyz = temp[3], src1.xyz = temp[63] MAD temp[64].xy, src0.xy_, src1.xy_, src0.000 23: src0.xyz = const[6], src1.xyz = temp[65] MAD temp[66].xy, src0.zx_, src1.xy_, src0.000 24: src0.xyz = input[2], src1.xyz = temp[67] MAD temp[68].xy, src0.xy_, src1.xy_, src0.000 25: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[96].xy, srcp.xy_, src0.111, -src2.xy_ 26: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[89].xy, srcp.xy_, src0.111, src2.xy_ 27: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[79].xy, srcp.xy_, src0.111, -src2.xy_ 28: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[72].xy, srcp.xy_, src0.111, src2.xy_ 29: src0.xyz = temp[62], src1.xyz = temp[64] MAD temp[92].xy, src0.xy_, src0.111, -src1.xy_ 30: BEGIN_TEX; 31: TEX temp[35], temp[29].xy__, 2D[1]; 32: TEX temp[122], temp[115].xy__, 2D[2]; 33: TEX temp[69].w, temp[68].xy__, 2D[0]; 34: TEX temp[97].w, temp[96].xy__, 2D[0]; 35: TEX temp[90].w, temp[89].xy__, 2D[0]; 36: TEX temp[80].w, temp[79].xy__, 2D[0]; 37: TEX temp[73].w, temp[72].xy__, 2D[0]; 38: TEX temp[93].w, temp[92].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[62], src0.w = const[6], src1.xyz = temp[64], src1.w = temp[97] SEM_WAIT MAD temp[75].xy, src0.xy_, src0.111, src1.xy_ MAD temp[99].w, src0.w, src1.w, src0.0 40: src0.xyz = temp[62], src0.w = temp[93], src1.xyz = temp[66], src1.w = temp[99], src2.xyz = const[7] MAD temp[85].xy, src0.xy_, src0.111, -src1.xy_ MAD temp[100].w, src2.x, src0.w, src1.w 41: src0.xyz = temp[62], src0.w = const[6], src1.xyz = temp[66], src1.w = temp[90], src2.w = temp[100] MAD temp[82].xy, src0.xy_, src0.111, src1.xy_ MAD temp[101].w, src0.w, src1.w, src2.w 42: src0.xyz = const[4], src0.w = temp[35], src1.xyz = temp[35] MAD temp[36].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[36].w, src0.y, src0.w, src0.H 43: src0.xyz = temp[122] MAD temp[123].xyz, src0.xyz, src0.111, src0.000 44: src0.xyz = temp[36], src0.w = temp[36] FRC temp[37].xyz, src0.xyz FRC temp[37].w, src0.w 45: src0.xyz = temp[36], src0.w = temp[36], src1.xyz = temp[37], src1.w = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[38].w, src0.w, src0.1, -src1.w 46: src0.w = temp[38], src1.w = const[4] MAD temp[39].x, src0.w__, src1.w__, src0.000 MAD temp[44].w, src0.w, src1.w, src0.0 47: src0.xyz = temp[44], src0.w = temp[44], src1.xyz = temp[39] FRC temp[45].x, src0.w__ FRC temp[40].w, src1.x 48: src0.xyz = temp[38], src1.xyz = const[4], src2.xyz = const[5] MAD temp[46].x, src0.z__, src1.z__, src0.000 MAD temp[49].w, src0.x, src2.z, src0.0 49: src0.xyz = temp[49], src0.w = temp[49], src1.xyz = temp[39], src1.w = temp[40] FRC temp[50].x, src0.w__ MAD temp[41].w, src1.x, src0.1, -src1.w 50: src0.xyz = const[4], src1.xyz = temp[45], src2.xyz = temp[46] MAD temp[47].w, src0.z, src1.x, src2.x 51: src0.xyz = temp[47], src0.w = temp[47], src1.xyz = const[5], src2.xyz = temp[50] MAD temp[48].x, src0.w__, src0.H__, src1.x__ MAD temp[51].w, src1.y, src2.x, src0.0 52: src0.xyz = temp[51], src0.w = temp[51], src1.w = temp[122] CMP temp[54].x, src0.1__, src0.0__, -|src0.w__| MAD temp[124].w, src1.w, src0.w, src0.0 53: src0.xyz = temp[48], src0.w = temp[41], src1.xyz = temp[38], src2.xyz = const[4] MAD temp[43].y, src0._x_, src0.111, src0.000 MAD temp[42].w, src1.y, src2.z, src0.w 54: src0.xyz = temp[42], src0.w = temp[42], src1.xyz = const[5], src2.xyz = temp[54] MAD temp[43].x, src0.w__, src0.H__, src1.x__ MAD temp[58].w, -src2.x, src0.1, src0.1 55: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 56: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 57: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[55].x, src0.xyz, src1.xyz 58: src0.xyz = temp[55], src1.xyz = const[6] MAD temp[56].x, src0.x__, src0.111, -src1.y__ 59: src0.xyz = temp[56] CMP temp[57].x, src0.1__, src0.0__, src0.x__ 60: src0.xyz = temp[57], src0.w = temp[58], src1.xyz = temp[58] CMP temp[59].x, src0.1__, src0.x__, -src0.w__ 61: src0.xyz = temp[59] CMP temp[60].x, src0.0__, src0.1__, -src0.x__ 62: src0.xyz = temp[60] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 63: BEGIN_TEX; 64: TEX temp[76].w, temp[75].xy__, 2D[0]; 65: TEX temp[86].w, temp[85].xy__, 2D[0]; 66: TEX temp[83].w, temp[82].xy__, 2D[0]; 67: KIL temp[2]; 68: src0.xyz = const[7], src0.w = temp[86], src1.xyz = temp[101], src1.w = temp[101] SEM_WAIT MAD temp[102].x, src0.x__, src0.w__, src1.w__ 69: src0.xyz = const[7], src0.w = temp[83], src1.xyz = temp[102] MAD temp[103].x, src0.x__, src0.w__, src1.x__ 70: src0.xyz = temp[103], src0.w = const[6], src1.w = temp[80] MAD temp[104].x, src0.w__, src1.w__, src0.x__ 71: src0.xyz = const[7], src0.w = temp[76], src1.xyz = temp[104] MAD temp[105].x, src0.x__, src0.w__, src1.x__ 72: src0.xyz = temp[105], src0.w = const[6], src1.w = temp[73] MAD temp[106].x, src0.w__, src1.w__, src0.x__ 73: src0.xyz = temp[106], src0.w = temp[69] MAD temp[107].x, src0.w__, src0.111, src0.x__ 74: src0.xyz = temp[107] MIN temp[108].x, src0.x__, src0.1__ 75: src0.xyz = temp[108], src0.w = temp[124] CMP temp[110].x, src0.1__, src0.0__, -|src0.x__| MAD temp[125].w, src0.w, src0.x, src0.0 76: src0.xyz = temp[110], src0.w = temp[125] CMP temp[111].x, src0.0__, src0.1__, -src0.x__ MAD temp[123].w, src0.w, src0.1, src0.0 77: src0.xyz = temp[111] MAD temp[4].xyz, -src0.xxx, src0.111, src0.000 MAD temp[4].w, -src0.x, src0.1, src0.0 78: BEGIN_TEX; 79: KIL temp[4]; 80: src0.xyz = temp[123], src0.w = temp[123] 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] MAD temp[3].y, src0._0_, src0.111, src0.000 MAD temp[112].w, src0.y, src0.1, src0.H 1: src0.xyz = const[3] MAD temp[3].x, src0.1__, src0.111, src0.000 RCP temp[120].w, src0.y 2: src0.xyz = const[3] MAD temp[1].z, src0.__0, src0.111, src0.000 RCP temp[113].w, src0.x 3: src0.xyz = const[2] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[33].w, src0.y 4: src0.xyz = input[1], src1.xyz = const[2] MAD temp[26].x, src0.z__, src0.111, src0.H__ RCP temp[27].w, src1.x 5: src0.xyz = temp[26], src0.w = temp[27], src1.w = temp[112], src2.w = temp[113] MAD temp[28].x, src0.x__, src0.w__, src0.000 MAD temp[114].w, src1.w, src2.w, src0.0 6: src0.xyz = temp[28], src0.w = temp[114] FRC temp[30].x, src0.x__ FRC temp[116].w, src0.w 7: src0.w = temp[114], src1.w = temp[116] FRC temp[115].x, src0.w__ MAD temp[117].w, src0.w, src0.1, -src1.w 8: src0.xyz = temp[30], src1.xyz = temp[28], srcp.xyz = (src1 - src0) FRC temp[29].x, src1.x__ MAD temp[32].w, srcp.x, src0.1, src0.H 9: src0.xyz = const[1] REPL_ALPHA temp[61].x RCP, src0.x 10: src0.xyz = const[7], src0.w = temp[117], src2.xyz = const[0] MAD temp[118].w, src0.y, src0.w, src2.x 11: src0.w = temp[118], src1.w = temp[32], src2.w = temp[33] MAD temp[119].x, src0.w__, src0.111, src0.H__ MAD temp[34].w, src1.w, src2.w, src0.0 12: src0.w = temp[34], src1.xyz = temp[119], src1.w = temp[120] MAD temp[29].y, src0._w_, src0.111, src0.000 MAD temp[121].w, src1.x, src1.w, src0.0 13: src0.xyz = const[1] REPL_ALPHA temp[61].y RCP, src0.y 14: src0.xyz = const[1] REPL_ALPHA temp[63].x RCP, src0.x 15: src0.xyz = const[1] REPL_ALPHA temp[63].y RCP, src0.y 16: src0.xyz = const[1] REPL_ALPHA temp[65].x RCP, src0.x 17: src0.xyz = const[1] REPL_ALPHA temp[65].y RCP, src0.y 18: src0.xyz = const[1] REPL_ALPHA temp[67].x RCP, src0.x 19: src0.xyz = const[1] REPL_ALPHA temp[67].y RCP, src0.y 20: src0.w = temp[121] MAD temp[115].y, src0._w_, src0.111, src0.000 21: src0.xyz = input[2], src1.xyz = temp[61] MAD temp[62].xy, src0.xy_, src1.xy_, src0.000 22: src0.xyz = temp[3], src1.xyz = temp[63] MAD temp[64].xy, src0.xy_, src1.xy_, src0.000 23: src0.xyz = const[6], src1.xyz = temp[65] MAD temp[66].xy, src0.zx_, src1.xy_, src0.000 24: src0.xyz = input[2], src1.xyz = temp[67] MAD temp[68].xy, src0.xy_, src1.xy_, src0.000 25: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[96].xy, srcp.xy_, src0.111, -src2.xy_ 26: src0.xyz = temp[64], src1.xyz = temp[62], src2.xyz = temp[66], srcp.xyz = (src1 - src0) MAD temp[89].xy, srcp.xy_, src0.111, src2.xy_ 27: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[79].xy, srcp.xy_, src0.111, -src2.xy_ 28: src0.xyz = temp[62], src1.xyz = temp[64], src2.xyz = temp[66], srcp.xyz = (src1 + src0) MAD temp[72].xy, srcp.xy_, src0.111, src2.xy_ 29: src0.xyz = temp[62], src1.xyz = temp[64] MAD temp[92].xy, src0.xy_, src0.111, -src1.xy_ 30: BEGIN_TEX; 31: TEX temp[35], temp[29].xy__, 2D[1]; 32: TEX temp[122], temp[115].xy__, 2D[2]; 33: TEX temp[69].w, temp[68].xy__, 2D[0]; 34: TEX temp[97].w, temp[96].xy__, 2D[0]; 35: TEX temp[90].w, temp[89].xy__, 2D[0]; 36: TEX temp[80].w, temp[79].xy__, 2D[0]; 37: TEX temp[73].w, temp[72].xy__, 2D[0]; 38: TEX temp[93].w, temp[92].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[62], src0.w = const[6], src1.xyz = temp[64], src1.w = temp[97] SEM_WAIT MAD temp[75].xy, src0.xy_, src0.111, src1.xy_ MAD temp[99].w, src0.w, src1.w, src0.0 40: src0.xyz = temp[62], src0.w = temp[93], src1.xyz = temp[66], src1.w = temp[99], src2.xyz = const[7] MAD temp[85].xy, src0.xy_, src0.111, -src1.xy_ MAD temp[100].w, src2.x, src0.w, src1.w 41: src0.xyz = temp[62], src0.w = const[6], src1.xyz = temp[66], src1.w = temp[90], src2.w = temp[100] MAD temp[82].xy, src0.xy_, src0.111, src1.xy_ MAD temp[101].w, src0.w, src1.w, src2.w 42: src0.xyz = const[4], src0.w = temp[35], src1.xyz = temp[35] MAD temp[36].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[36].w, src0.y, src0.w, src0.H 43: src0.xyz = temp[122] MAD temp[123].xyz, src0.xyz, src0.111, src0.000 44: src0.xyz = temp[36], src0.w = temp[36] FRC temp[37].xyz, src0.xyz FRC temp[37].w, src0.w 45: src0.xyz = temp[36], src0.w = temp[36], src1.xyz = temp[37], src1.w = temp[37] MAD temp[38].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[38].w, src0.w, src0.1, -src1.w 46: src0.w = temp[38], src1.w = const[4] MAD temp[39].x, src0.w__, src1.w__, src0.000 MAD temp[44].w, src0.w, src1.w, src0.0 47: src0.w = temp[44], src1.xyz = temp[39] FRC temp[45].x, src0.w__ FRC temp[40].w, src1.x 48: src0.xyz = temp[38], src1.xyz = const[4], src2.xyz = const[5] MAD temp[46].x, src0.z__, src1.z__, src0.000 MAD temp[49].w, src0.x, src2.z, src0.0 49: src0.w = temp[49], src1.xyz = temp[39], src1.w = temp[40] FRC temp[50].x, src0.w__ MAD temp[41].w, src1.x, src0.1, -src1.w 50: src0.xyz = const[4], src1.xyz = temp[45], src2.xyz = temp[46] MAD temp[47].w, src0.z, src1.x, src2.x 51: src0.w = temp[47], src1.xyz = const[5], src2.xyz = temp[50] MAD temp[48].x, src0.w__, src0.H__, src1.x__ MAD temp[51].w, src1.y, src2.x, src0.0 52: src0.w = temp[51], src1.w = temp[122] CMP temp[54].x, src0.1__, src0.0__, -|src0.w__| MAD temp[124].w, src1.w, src0.w, src0.0 53: src0.xyz = temp[48], src0.w = temp[41], src1.xyz = temp[38], src2.xyz = const[4] MAD temp[43].y, src0._x_, src0.111, src0.000 MAD temp[42].w, src1.y, src2.z, src0.w 54: src0.w = temp[42], src1.xyz = const[5], src2.xyz = temp[54] MAD temp[43].x, src0.w__, src0.H__, src1.x__ MAD temp[58].w, -src2.x, src0.1, src0.1 55: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 56: src0.xyz = temp[43], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 57: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[55].x, src0.xyz, src1.xyz 58: src0.xyz = temp[55], src1.xyz = const[6] MAD temp[56].x, src0.x__, src0.111, -src1.y__ 59: src0.xyz = temp[56] CMP temp[57].x, src0.1__, src0.0__, src0.x__ 60: src0.xyz = temp[57], src0.w = temp[58] CMP temp[59].x, src0.1__, src0.x__, -src0.w__ 61: src0.xyz = temp[59] CMP temp[60].x, src0.0__, src0.1__, -src0.x__ 62: src0.xyz = temp[60] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 63: BEGIN_TEX; 64: TEX temp[76].w, temp[75].xy__, 2D[0]; 65: TEX temp[86].w, temp[85].xy__, 2D[0]; 66: TEX temp[83].w, temp[82].xy__, 2D[0]; 67: KIL temp[2]; 68: src0.xyz = const[7], src0.w = temp[86], src1.w = temp[101] SEM_WAIT MAD temp[102].x, src0.x__, src0.w__, src1.w__ 69: src0.xyz = const[7], src0.w = temp[83], src1.xyz = temp[102] MAD temp[103].x, src0.x__, src0.w__, src1.x__ 70: src0.xyz = temp[103], src0.w = const[6], src1.w = temp[80] MAD temp[104].x, src0.w__, src1.w__, src0.x__ 71: src0.xyz = const[7], src0.w = temp[76], src1.xyz = temp[104] MAD temp[105].x, src0.x__, src0.w__, src1.x__ 72: src0.xyz = temp[105], src0.w = const[6], src1.w = temp[73] MAD temp[106].x, src0.w__, src1.w__, src0.x__ 73: src0.xyz = temp[106], src0.w = temp[69] MAD temp[107].x, src0.w__, src0.111, src0.x__ 74: src0.xyz = temp[107] MIN temp[108].x, src0.x__, src0.1__ 75: src0.xyz = temp[108], src0.w = temp[124] CMP temp[110].x, src0.1__, src0.0__, -|src0.x__| MAD temp[125].w, src0.w, src0.x, src0.0 76: src0.xyz = temp[110], src0.w = temp[125] CMP temp[111].x, src0.0__, src0.1__, -src0.x__ MAD temp[123].w, src0.w, src0.1, src0.0 77: src0.xyz = temp[111] MAD temp[4].xyz, -src0.xxx, src0.111, src0.000 MAD temp[4].w, -src0.x, src0.1, src0.0 78: BEGIN_TEX; 79: KIL temp[4]; 80: src0.xyz = temp[123], src0.w = temp[123] 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] MAD temp[3].y, src0._0_, src0.11_, src0.00_ MAD temp[0].w, src0.y, src0.1, src0.H 1: src0.xyz = const[3] MAD temp[3].x, src0.1__, src0.11_, src0.00_ RCP temp[1].w, src0.y 2: src0.xyz = const[3] MAD temp[4].z, src0.__0, src0.111, src0.000 RCP temp[2].w, src0.x 3: src0.xyz = const[2] MAD temp[5].z, src0.__0, src0.111, src0.000 RCP temp[3].w, src0.y 4: src0.xyz = input[1], src1.xyz = const[2] MAD temp[0].z, src0.__z, src0.__1, src0.__H RCP temp[4].w, src1.x 5: src0.xyz = temp[0], src0.w = temp[4], src1.w = temp[0], src2.w = temp[2] MAD temp[1].x, src0.z__, src0.w__, src0.0__ MAD temp[0].w, src1.w, src2.w, src0.0 6: src0.xyz = temp[1], src0.w = temp[0] FRC temp[6].x, src0.x__ FRC temp[2].w, src0.w 7: src0.w = temp[0], src1.w = temp[2] FRC temp[7].x, src0.w__ MAD temp[0].w, src0.w, src0.1, -src1.w 8: src0.xyz = temp[6], src1.xyz = temp[1], srcp.xyz = (src1 - src0) FRC temp[1].x, src1.x__ MAD temp[2].w, srcp.x, src0.1, src0.H 9: src0.xyz = const[1] REPL_ALPHA temp[6].x RCP, src0.x 10: src0.xyz = const[7], src0.w = temp[0], src2.xyz = const[0] MAD temp[0].w, src0.y, src0.w, src2.x 11: src0.w = temp[0], src1.w = temp[2], src2.w = temp[3] MAD temp[0].z, src0.__w, src0.__1, src0.__H MAD temp[0].w, src1.w, src2.w, src0.0 12: src0.w = temp[0], src1.xyz = temp[0], src1.w = temp[1] MAD temp[1].y, src0._w_, src0.11_, src0.00_ MAD temp[0].w, src1.z, src1.w, src0.0 13: src0.xyz = const[1] REPL_ALPHA temp[6].y RCP, src0.y 14: src0.xyz = const[1] REPL_ALPHA temp[8].x RCP, src0.x 15: src0.xyz = const[1] REPL_ALPHA temp[8].y RCP, src0.y 16: src0.xyz = const[1] REPL_ALPHA temp[9].x RCP, src0.x 17: src0.xyz = const[1] REPL_ALPHA temp[9].y RCP, src0.y 18: src0.xyz = const[1] REPL_ALPHA temp[10].x RCP, src0.x 19: src0.xyz = const[1] REPL_ALPHA temp[10].y RCP, src0.y 20: src0.w = temp[0] MAD temp[7].y, src0._w_, src0.11_, src0.00_ 21: src0.xyz = input[2], src1.xyz = temp[6] MAD temp[6].xy, src0.xy_, src1.xy_, src0.00_ 22: src0.xyz = temp[3], src1.xyz = temp[8] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 23: src0.xyz = const[6], src1.xyz = temp[9] MAD temp[8].xy, src0.zx_, src1.xy_, src0.00_ 24: src0.xyz = input[2], src1.xyz = temp[10] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 25: src0.xyz = temp[3], src1.xyz = temp[6], src2.xyz = temp[8], srcp.xyz = (src1 - src0) MAD temp[9].xy, srcp.xy_, src0.11_, -src2.xy_ 26: src0.xyz = temp[3], src1.xyz = temp[6], src2.xyz = temp[8], srcp.xyz = (src1 - src0) MAD temp[10].xy, srcp.xy_, src0.11_, src2.xy_ 27: src0.xyz = temp[6], src1.xyz = temp[3], src2.xyz = temp[8], srcp.xyz = (src1 + src0) MAD temp[11].xy, srcp.xy_, src0.11_, -src2.xy_ 28: src0.xyz = temp[6], src1.xyz = temp[3], src2.xyz = temp[8], srcp.xyz = (src1 + src0) MAD temp[12].xy, srcp.xy_, src0.11_, src2.xy_ 29: src0.xyz = temp[6], src1.xyz = temp[3] MAD temp[13].xy, src0.xy_, src0.11_, -src1.xy_ 30: BEGIN_TEX; 31: TEX temp[1], temp[1].xy__, 2D[1]; 32: TEX temp[7], temp[7].xy__, 2D[2]; 33: TEX temp[2].w, temp[2].xy__, 2D[0]; 34: TEX temp[9].w, temp[9].xy__, 2D[0]; 35: TEX temp[10].w, temp[10].xy__, 2D[0]; 36: TEX temp[11].w, temp[11].xy__, 2D[0]; 37: TEX temp[12].w, temp[12].xy__, 2D[0]; 38: TEX temp[13].w, temp[13].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 39: src0.xyz = temp[6], src0.w = const[6], src1.xyz = temp[3], src1.w = temp[9] SEM_WAIT MAD temp[3].xy, src0.xy_, src0.11_, src1.xy_ MAD temp[0].w, src0.w, src1.w, src0.0 40: src0.xyz = temp[6], src0.w = temp[13], src1.xyz = temp[8], src1.w = temp[0], src2.xyz = const[7] MAD temp[9].xy, src0.xy_, src0.11_, -src1.xy_ MAD temp[0].w, src2.x, src0.w, src1.w 41: src0.xyz = temp[6], src0.w = const[6], src1.xyz = temp[8], src1.w = temp[10], src2.w = temp[0] MAD temp[6].xy, src0.xy_, src0.11_, src1.xy_ MAD temp[0].w, src0.w, src1.w, src2.w 42: src0.xyz = const[4], src0.w = temp[1], src1.xyz = temp[1] MAD temp[1].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[1].w, src0.y, src0.w, src0.H 43: src0.xyz = temp[7] MAD temp[8].xyz, src0.xyz, src0.111, src0.000 44: src0.xyz = temp[1], src0.w = temp[1] FRC temp[10].xyz, src0.xyz FRC temp[3].w, src0.w 45: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[10], src1.w = temp[3] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[1].w, src0.w, src0.1, -src1.w 46: src0.w = temp[1], src1.w = const[4] MAD temp[0].z, src0.__w, src1.__w, src0.__0 MAD temp[1].w, src0.w, src1.w, src0.0 47: src0.w = temp[1], src1.xyz = temp[0] FRC temp[3].z, src0.__w FRC temp[1].w, src1.z 48: src0.xyz = temp[1], src1.xyz = const[4], src2.xyz = const[5] MAD temp[6].z, src0.__z, src1.__z, src0.__0 MAD temp[3].w, src0.x, src2.z, src0.0 49: src0.w = temp[3], src1.xyz = temp[0], src1.w = temp[1] FRC temp[0].z, src0.__w MAD temp[1].w, src1.z, src0.1, -src1.w 50: src0.xyz = const[4], src1.xyz = temp[3], src2.xyz = temp[6] MAD temp[3].w, src0.z, src1.z, src2.z 51: src0.w = temp[3], src1.xyz = const[5], src2.xyz = temp[0] MAD temp[0].z, src0.__w, src0.__H, src1.__x MAD temp[3].w, src1.y, src2.z, src0.0 52: src0.w = temp[3], src1.w = temp[7] CMP temp[3].z, src0.__1, src0.__0, -|src0.__w| MAD temp[3].w, src1.w, src0.w, src0.0 53: src0.xyz = temp[0], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[4] MAD temp[1].y, src0._z_, src0.11_, src0.00_ MAD temp[1].w, src1.y, src2.z, src0.w 54: src0.w = temp[1], src1.xyz = const[5], src2.xyz = temp[3] MAD temp[1].x, src0.w__, src0.H__, src1.x__ MAD temp[1].w, -src2.z, src0.1, src0.1 55: src0.xyz = temp[1], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[4].xy, srcp.xy_, src0.111, src0.000 56: src0.xyz = temp[1], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[5].xy, srcp.xy_, src0.111, src0.000 57: src0.xyz = temp[5], src1.xyz = temp[4] DP3 temp[0].x, src0.xyz, src1.xyz 58: src0.xyz = temp[0], src1.xyz = const[6] MAD temp[0].x, src0.x__, src0.1__, -src1.y__ 59: src0.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, src0.x__ 60: src0.xyz = temp[0], src0.w = temp[1] CMP temp[0].x, src0.1__, src0.x__, -src0.w__ 61: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 62: src0.xyz = temp[0] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 63: BEGIN_TEX; 64: TEX temp[4].w, temp[3].xy__, 2D[0]; 65: TEX temp[5].w, temp[9].xy__, 2D[0]; 66: TEX temp[6].w, temp[6].xy__, 2D[0]; 67: KIL temp[1]; 68: src0.xyz = const[7], src0.w = temp[5], src1.w = temp[0] SEM_WAIT MAD temp[0].x, src0.x__, src0.w__, src1.w__ 69: src0.xyz = const[7], src0.w = temp[6], src1.xyz = temp[0] MAD temp[0].x, src0.x__, src0.w__, src1.x__ 70: src0.xyz = temp[0], src0.w = const[6], src1.w = temp[11] MAD temp[0].x, src0.w__, src1.w__, src0.x__ 71: src0.xyz = const[7], src0.w = temp[4], src1.xyz = temp[0] MAD temp[0].x, src0.x__, src0.w__, src1.x__ 72: src0.xyz = temp[0], src0.w = const[6], src1.w = temp[12] MAD temp[0].x, src0.w__, src1.w__, src0.x__ 73: src0.xyz = temp[0], src0.w = temp[2] MAD temp[0].x, src0.w__, src0.1__, src0.x__ 74: src0.xyz = temp[0] MIN temp[0].x, src0.x__, src0.1__ 75: src0.xyz = temp[0], src0.w = temp[3] CMP temp[0].x, src0.1__, src0.0__, -|src0.x__| MAD temp[0].w, src0.w, src0.x, src0.0 76: src0.xyz = temp[0], src0.w = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ MAD temp[0].w, src0.w, src0.1, src0.0 77: src0.xyz = temp[0] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 78: BEGIN_TEX; 79: KIL temp[1]; 80: src0.xyz = temp[8], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 r300compiler error: compiler/r300_fragprog_emit.c::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 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=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: 0.0 1.0 0.0 op: 00050a94 w: 1.0 1.0 0.0 op: 00040891 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL IN[5] DCL IN[6] DCL IN[7] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL OUT[2], GENERIC[13] DCL OUT[3], GENERIC[14] DCL CONST[0..6] 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 FLT32 { 4.0000, 0.5000, 1.0000, -4.0000} IMM FLT32 { -2.0000, -0.0000, 1.0000, -1.0000} 0: MOV TEMP[0].y, IN[7].yyyy 1: ADD TEMP[0].x, IN[7].xxxx, IMM[0].xxxx 2: MUL TEMP[1].x, IN[6].xxxx, IMM[0].yyyy 3: FLR TEMP[1].x, TEMP[1].xxxx 4: ADD TEMP[2].x, IN[6].xxxx, IMM[0].zzzz 5: MUL TEMP[2].x, TEMP[2].xxxx, IMM[0].yyyy 6: FLR TEMP[2].x, TEMP[2].xxxx 7: MUL TEMP[2].x, TEMP[2].xxxx, IMM[0].yyyy 8: FRC TEMP[2].x, TEMP[2].xxxx 9: MAD TEMP[2].x, TEMP[2].xxxx, IMM[0].wwww, IMM[0].zzzz 10: MOV TEMP[1].y, TEMP[2].xxxx 11: MAD TEMP[2].xy, TEMP[1].xyyy, TEMP[0].xyyy, IN[4].xyyy 12: MOV TEMP[3].y, TEMP[2].yyyy 13: ADD TEMP[3].x, TEMP[2].xxxx, IMM[1].xxxx 14: MUL TEMP[2], CONST[2], IN[3].xxxx 15: MAD TEMP[2], CONST[3], IN[3].yyyy, TEMP[2] 16: MAD TEMP[2], CONST[4], IN[3].zzzz, TEMP[2] 17: ADD TEMP[2], TEMP[2], CONST[5] 18: RCP TEMP[4].x, TEMP[2].wwww 19: MUL TEMP[2].xyw, TEMP[2], TEMP[4].xxxx 20: MUL TEMP[4].xy, CONST[6].xyyy, IMM[0].yyyy 21: MUL TEMP[5].xy, CONST[6].xyyy, IMM[0].yyyy 22: FRC TEMP[5].xy, TEMP[5].xyyy 23: MUL TEMP[6].xy, CONST[0].xyyy, IN[2].xxxx 24: MAD TEMP[6].xy, CONST[1].xyyy, IN[2].yyyy, TEMP[6].xyyy 25: ADD TEMP[6].xy, TEMP[6].xyyy, IN[0].xyyy 26: MAD TEMP[0].xy, TEMP[1].xyyy, TEMP[0].xyyy, TEMP[6].xyyy 27: ADD TEMP[0].xy, TEMP[0].xyyy, IMM[1].xyyy 28: MUL TEMP[1].xy, TEMP[4].xyyy, TEMP[2].xyyy 29: RCP TEMP[6].x, TEMP[2].wwww 30: MUL TEMP[1].xy, TEMP[1].xyyy, TEMP[6].xxxx 31: MAD TEMP[0].xy, TEMP[0].xyyy, IMM[1].zwww, TEMP[1].xyyy 32: ADD TEMP[1].xy, TEMP[0].xyyy, IMM[0].yyyy 33: ADD TEMP[1].xy, TEMP[1].xyyy, -TEMP[5].xyyy 34: FLR TEMP[1].xy, TEMP[1].xyyy 35: ADD TEMP[1].xy, TEMP[1].xyyy, TEMP[5].xyyy 36: MOV TEMP[5].w, IMM[0].zzzz 37: ADD TEMP[0].xy, TEMP[0].xyyy, -TEMP[1].xyyy 38: ADD TEMP[0].xy, TEMP[1].xyyy, TEMP[0].xyyy 39: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[2].wwww 40: RCP TEMP[1].x, TEMP[4].xxxx 41: RCP TEMP[1].y, TEMP[4].yyyy 42: MUL TEMP[5].xy, TEMP[0].xyyy, TEMP[1].xyyy 43: MOV TEMP[5].z, IN[5].xxxx 44: MOV OUT[1].xy, IN[0].xyxx 45: MOV OUT[0], TEMP[5] 46: MOV OUT[3].xy, TEMP[3].xyxx 47: MOV OUT[2].xyz, IN[1].xyzx 48: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FLR temp[1].x, temp[1].xxxx; 4: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 5: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 6: FLR temp[2].x, temp[2].xxxx; 7: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 8: FRC temp[2].x, temp[2].xxxx; 9: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 10: MOV temp[1].y, temp[2].xxxx; 11: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 12: MOV temp[3].y, temp[2].yyyy; 13: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 14: MUL temp[2], const[2], input[3].xxxx; 15: MAD temp[2], const[3], input[3].yyyy, temp[2]; 16: MAD temp[2], const[4], input[3].zzzz, temp[2]; 17: ADD temp[2], temp[2], const[5]; 18: RCP temp[4].x, temp[2].wwww; 19: MUL temp[2].xyw, temp[2], temp[4].xxxx; 20: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 21: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 22: FRC temp[5].xy, temp[5].xyyy; 23: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 24: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 25: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 26: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 27: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 28: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 29: RCP temp[6].x, temp[2].wwww; 30: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 31: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 32: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 33: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 34: FLR temp[1].xy, temp[1].xyyy; 35: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 36: MOV temp[5].w, const[7].zzzz; 37: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 38: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 39: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 40: RCP temp[1].x, temp[4].xxxx; 41: RCP temp[1].y, temp[4].yyyy; 42: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 43: MOV temp[5].z, input[5].xxxx; 44: MOV output[1].xy, input[0].xyxx; 45: MOV temp[7], temp[5]; 46: MOV output[3].xy, temp[3].xyxx; 47: MOV output[2].xyz, input[1].xyzx; 48: MOV output[0], temp[7]; 49: MOV output[4], temp[7]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FRC temp[8].x, temp[1].xxxx; 4: ADD temp[1].x, temp[1].xxxx, -temp[8]; 5: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 6: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 7: FRC temp[9].x, temp[2].xxxx; 8: ADD temp[2].x, temp[2].xxxx, -temp[9]; 9: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 10: FRC temp[2].x, temp[2].xxxx; 11: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 12: MOV temp[1].y, temp[2].xxxx; 13: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 14: MOV temp[3].y, temp[2].yyyy; 15: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 16: MUL temp[2], const[2], input[3].xxxx; 17: MAD temp[2], const[3], input[3].yyyy, temp[2]; 18: MAD temp[2], const[4], input[3].zzzz, temp[2]; 19: ADD temp[2], temp[2], const[5]; 20: RCP temp[4].x, temp[2].wwww; 21: MUL temp[2].xyw, temp[2], temp[4].xxxx; 22: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 23: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 24: FRC temp[5].xy, temp[5].xyyy; 25: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 26: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 27: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 28: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 29: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 30: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 31: RCP temp[6].x, temp[2].wwww; 32: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 33: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 34: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 35: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 36: FRC temp[10].xy, temp[1].xyyy; 37: ADD temp[1].xy, temp[1].xyyy, -temp[10]; 38: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 39: MOV temp[5].w, const[7].zzzz; 40: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 41: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 42: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 43: RCP temp[1].x, temp[4].xxxx; 44: RCP temp[1].y, temp[4].yyyy; 45: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 46: MOV temp[5].z, input[5].xxxx; 47: MOV output[1].xy, input[0].xyxx; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xyxx; 50: MOV output[2].xyz, input[1].xyzx; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MOV temp[0].y, input[7].yyyy; 1: ADD temp[0].x, input[7].xxxx, const[7].xxxx; 2: MUL temp[1].x, input[6].xxxx, const[7].yyyy; 3: FRC temp[8].x, temp[1].xxxx; 4: ADD temp[1].x, temp[1].xxxx, -temp[8]; 5: ADD temp[2].x, input[6].xxxx, const[7].zzzz; 6: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 7: FRC temp[9].x, temp[2].xxxx; 8: ADD temp[2].x, temp[2].xxxx, -temp[9]; 9: MUL temp[2].x, temp[2].xxxx, const[7].yyyy; 10: FRC temp[2].x, temp[2].xxxx; 11: MAD temp[2].x, temp[2].xxxx, const[7].wwww, const[7].zzzz; 12: MOV temp[1].y, temp[2].xxxx; 13: MAD temp[2].xy, temp[1].xyyy, temp[0].xyyy, input[4].xyyy; 14: MOV temp[3].y, temp[2].yyyy; 15: ADD temp[3].x, temp[2].xxxx, const[8].xxxx; 16: MUL temp[2], const[2], input[3].xxxx; 17: MAD temp[2], const[3], input[3].yyyy, temp[2]; 18: MAD temp[2], const[4], input[3].zzzz, temp[2]; 19: ADD temp[2], temp[2], const[5]; 20: RCP temp[4].x, temp[2].wwww; 21: MUL temp[2].xyw, temp[2], temp[4].xxxx; 22: MUL temp[4].xy, const[6].xyyy, const[7].yyyy; 23: MUL temp[5].xy, const[6].xyyy, const[7].yyyy; 24: FRC temp[5].xy, temp[5].xyyy; 25: MUL temp[6].xy, const[0].xyyy, input[2].xxxx; 26: MAD temp[6].xy, const[1].xyyy, input[2].yyyy, temp[6].xyyy; 27: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 28: MAD temp[0].xy, temp[1].xyyy, temp[0].xyyy, temp[6].xyyy; 29: ADD temp[0].xy, temp[0].xyyy, const[8].xyyy; 30: MUL temp[1].xy, temp[4].xyyy, temp[2].xyyy; 31: RCP temp[6].x, temp[2].wwww; 32: MUL temp[1].xy, temp[1].xyyy, temp[6].xxxx; 33: MAD temp[0].xy, temp[0].xyyy, const[8].zwww, temp[1].xyyy; 34: ADD temp[1].xy, temp[0].xyyy, const[7].yyyy; 35: ADD temp[1].xy, temp[1].xyyy, -temp[5].xyyy; 36: FRC temp[10].xy, temp[1].xyyy; 37: ADD temp[1].xy, temp[1].xyyy, -temp[10]; 38: ADD temp[1].xy, temp[1].xyyy, temp[5].xyyy; 39: MOV temp[5].w, const[7].zzzz; 40: ADD temp[0].xy, temp[0].xyyy, -temp[1].xyyy; 41: ADD temp[0].xy, temp[1].xyyy, temp[0].xyyy; 42: MUL temp[0].xy, temp[0].xyyy, temp[2].wwww; 43: RCP temp[1].x, temp[4].xxxx; 44: RCP temp[1].y, temp[4].yyyy; 45: MUL temp[5].xy, temp[0].xyyy, temp[1].xyyy; 46: MOV temp[5].z, input[5].xxxx; 47: MOV output[1].xy, input[0].xyxx; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xyxx; 50: MOV output[2].xyz, input[1].xyzx; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, const[7].z___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, const[7].z___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MUL temp[4].xy, const[6].xy__, const[7].yy__; 23: MUL temp[5].xy, const[6].xy__, const[7].yy__; 24: FRC temp[5].xy, temp[5].xy__; 25: MUL temp[6].xy, const[0].xy__, input[2].xx__; 26: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 27: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 28: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 29: ADD temp[0].xy, temp[0].xy__, const[8].xy__; 30: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 31: RCP temp[6].x, temp[2].w___; 32: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 33: MAD temp[0].xy, temp[0].xy__, const[8].zw__, temp[1].xy__; 34: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 35: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 36: FRC temp[10].xy, temp[1].xy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 38: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 39: MOV temp[5].w, const[7].___z; 40: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 41: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 42: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 43: RCP temp[1].x, temp[4].x___; 44: RCP temp[1].y, temp[4]._y__; 45: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 46: MOV temp[5].z, input[5].__x_; 47: MOV output[1].xy, input[0].xy__; 48: MOV temp[7], temp[5]; 49: MOV output[3].xy, temp[3].xy__; 50: MOV output[2].xyz, input[1].xyz_; 51: MOV output[0], temp[7]; 52: MOV output[4], temp[7]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MUL temp[4].xy, const[6].xy__, const[7].yy__; 23: MUL temp[5].xy, const[6].xy__, const[7].yy__; 24: FRC temp[5].xy, temp[5].xy__; 25: MUL temp[6].xy, const[0].xy__, input[2].xx__; 26: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 27: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 28: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 29: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 30: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 31: RCP temp[6].x, temp[2].w___; 32: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 33: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 34: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 35: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 36: FRC temp[10].xy, temp[1].xy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 38: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 39: MOV temp[5].w, none.___1; 40: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 41: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 42: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 43: RCP temp[1].x, temp[4].x___; 44: RCP temp[1].y, temp[4]._y__; 45: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 46: MOV temp[5].z, input[5].__x_; 47: MOV output[1].xy, input[0].xy__; 48: MOV output[3].xy, temp[3].xy__; 49: MOV output[2].xyz, input[1].xyz_; 50: MOV output[0], temp[5]; 51: MOV output[4], temp[5]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[8].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[8].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[9].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[9].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[7], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[7]; 24: MOV temp[11], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[11]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[10].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[10].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[2].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[2].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[3].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[3].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[5], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[5]; 24: MOV temp[5], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[5]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[6].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[6].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; CONST[7] = { 4.0000 0.5000 1.0000 -4.0000 } CONST[8] = { -2.0000 -0.0000 1.0000 -1.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV temp[0].y, input[7]._y__; 1: ADD temp[0].x, input[7].x___, const[7].x___; 2: MUL temp[1].x, input[6].x___, const[7].y___; 3: FRC temp[2].x, temp[1].x___; 4: ADD temp[1].x, temp[1].x___, -temp[2].x___; 5: ADD temp[2].x, input[6].x___, none.1___; 6: MUL temp[2].x, temp[2].x___, const[7].y___; 7: FRC temp[3].x, temp[2].x___; 8: ADD temp[2].x, temp[2].x___, -temp[3].x___; 9: MUL temp[2].x, temp[2].x___, const[7].y___; 10: FRC temp[2].x, temp[2].x___; 11: MAD temp[2].x, temp[2].x___, const[7].w___, none.1___; 12: MOV temp[1].y, temp[2]._x__; 13: MAD temp[2].xy, temp[1].xy__, temp[0].xy__, input[4].xy__; 14: MOV temp[3].y, temp[2]._y__; 15: ADD temp[3].x, temp[2].x___, const[8].x___; 16: MUL temp[2].xyw, const[2].xy_w, input[3].xx_x; 17: MAD temp[2].xyw, const[3].xy_w, input[3].yy_y, temp[2].xy_w; 18: MAD temp[2].xyw, const[4].xy_w, input[3].zz_z, temp[2].xy_w; 19: ADD temp[2].xyw, temp[2].xy_w, const[5].xy_w; 20: RCP temp[4].x, temp[2].w___; 21: MUL temp[2].xyw, temp[2].xy_w, temp[4].xx_x; 22: MOV temp[5], const[7].yy__; 23: MUL temp[4].xy, const[6].xy__, temp[5]; 24: MOV temp[5], const[7].yy__; 25: MUL temp[5].xy, const[6].xy__, temp[5]; 26: FRC temp[5].xy, temp[5].xy__; 27: MUL temp[6].xy, const[0].xy__, input[2].xx__; 28: MAD temp[6].xy, const[1].xy__, input[2].yy__, temp[6].xy__; 29: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 30: MAD temp[0].xy, temp[1].xy__, temp[0].xy__, temp[6].xy__; 31: ADD temp[0].xy, temp[0].xy__, const[8].x0__; 32: MUL temp[1].xy, temp[4].xy__, temp[2].xy__; 33: RCP temp[6].x, temp[2].w___; 34: MUL temp[1].xy, temp[1].xy__, temp[6].xx__; 35: MAD temp[0].xy, temp[0].xy__, none.1-1__, temp[1].xy__; 36: ADD temp[1].xy, temp[0].xy__, const[7].yy__; 37: ADD temp[1].xy, temp[1].xy__, -temp[5].xy__; 38: FRC temp[6].xy, temp[1].xy__; 39: ADD temp[1].xy, temp[1].xy__, -temp[6].xy__; 40: ADD temp[1].xy, temp[1].xy__, temp[5].xy__; 41: MOV temp[5].w, none.___1; 42: ADD temp[0].xy, temp[0].xy__, -temp[1].xy__; 43: ADD temp[0].xy, temp[1].xy__, temp[0].xy__; 44: MUL temp[0].xy, temp[0].xy__, temp[2].ww__; 45: RCP temp[1].x, temp[4].x___; 46: RCP temp[1].y, temp[4]._y__; 47: MUL temp[5].xy, temp[0].xy__, temp[1].xy__; 48: MOV temp[5].z, input[5].__x_; 49: MOV output[1].xy, input[0].xy__; 50: MOV output[3].xy, temp[3].xy__; 51: MOV output[2].xyz, input[1].xyz_; 52: MOV output[0], temp[5]; 53: MOV output[4], temp[5]; Final vertex program code: 0: op: 0x00200003 dst: 0t op: VE_ADD src0: 0x01f9e0e1 reg: 7i swiz: U/ Y/ U/ U src1: 0x012480e1 reg: 7i swiz: 0/ 0/ 0/ 0 src2: 0x012480e1 reg: 7i swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff00e1 reg: 7i swiz: X/ U/ U/ U src1: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 2: op: 0x00102002 dst: 1t op: VE_MULTIPLY src0: 0x01ff00c1 reg: 6i swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 3: op: 0x00104006 dst: 2t op: VE_FRACTION src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 4: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src1: 0x1fff0040 reg: 2t swiz: -X/-U/-U/-U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 5: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff00c1 reg: 6i swiz: X/ U/ U/ U src1: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 6: op: 0x00104002 dst: 2t op: VE_MULTIPLY src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 7: op: 0x00106006 dst: 3t op: VE_FRACTION src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 8: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x1fff0060 reg: 3t swiz: -X/-U/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 9: op: 0x00104002 dst: 2t op: VE_MULTIPLY src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff20e2 reg: 7c swiz: Y/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 10: op: 0x00104006 dst: 2t op: VE_FRACTION src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 11: op: 0x00104004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff60e2 reg: 7c swiz: W/ U/ U/ U src2: 0x01ffa040 reg: 2t swiz: 1/ U/ U/ U 12: op: 0x00202003 dst: 1t op: VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 13: op: 0x00304004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01f90081 reg: 4i swiz: X/ Y/ U/ U 14: op: 0x00206003 dst: 3t op: VE_ADD src0: 0x01f9e040 reg: 2t swiz: U/ Y/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 15: op: 0x00106003 dst: 3t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0102 reg: 8c swiz: X/ U/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 16: op: 0x00b04002 dst: 2t op: VE_MULTIPLY src0: 0x00f90042 reg: 2c swiz: X/ Y/ U/ W src1: 0x00380061 reg: 3i swiz: X/ X/ U/ X src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 17: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src1: 0x00792061 reg: 3i swiz: Y/ Y/ U/ Y src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 18: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90082 reg: 4c swiz: X/ Y/ U/ W src1: 0x00ba4061 reg: 3i swiz: Z/ Z/ U/ Z src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 19: op: 0x00b04003 dst: 2t op: VE_ADD src0: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W src1: 0x00f900a2 reg: 5c swiz: X/ Y/ U/ W src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 20: op: 0x00108046 dst: 4t op: ME_RECIP_DX src0: 0x00db6040 reg: 2t swiz: W/ W/ W/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 21: op: 0x00b04002 dst: 2t op: VE_MULTIPLY src0: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W src1: 0x00380080 reg: 4t swiz: X/ X/ U/ X src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 22: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src1: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 23: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 24: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src1: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 25: op: 0x0030a002 dst: 5t op: VE_MULTIPLY src0: 0x01f900c2 reg: 6c swiz: X/ Y/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 26: op: 0x0030a006 dst: 5t op: VE_FRACTION src0: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 27: op: 0x0030c002 dst: 6t op: VE_MULTIPLY src0: 0x01f90002 reg: 0c swiz: X/ Y/ U/ U src1: 0x01f80041 reg: 2i swiz: X/ X/ U/ U src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 28: op: 0x0030c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01f90022 reg: 1c swiz: X/ Y/ U/ U src1: 0x01f92041 reg: 2i swiz: Y/ Y/ U/ U src2: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U 29: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 30: op: 0x00300080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U 31: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fc0102 reg: 8c swiz: X/ 0/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 32: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 33: op: 0x0010c046 dst: 6t op: ME_RECIP_DX src0: 0x00db6040 reg: 2t swiz: W/ W/ W/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 34: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f800c0 reg: 6t swiz: X/ X/ U/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x00300004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x05fda000 reg: 0t swiz: 1/-1/ U/ U src2: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U 36: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f920e2 reg: 7c swiz: Y/ Y/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 37: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x1ff900a0 reg: 5t swiz: -X/-Y/-U/-U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 38: op: 0x0030c006 dst: 6t op: VE_FRACTION src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 39: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x1ff900c0 reg: 6t swiz: -X/-Y/-U/-U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 40: op: 0x00302003 dst: 1t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 41: op: 0x0080a003 dst: 5t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 42: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x1ff90020 reg: 1t swiz: -X/-Y/-U/-U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 43: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 44: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fb6040 reg: 2t swiz: W/ W/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 45: op: 0x00102046 dst: 1t op: ME_RECIP_DX src0: 0x00000080 reg: 4t swiz: X/ X/ X/ X src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 46: op: 0x00202046 dst: 1t op: ME_RECIP_DX src0: 0x00492080 reg: 4t swiz: Y/ Y/ Y/ Y src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 47: op: 0x0030a002 dst: 5t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 48: op: 0x0040a003 dst: 5t op: VE_ADD src0: 0x01c7e0a1 reg: 5i swiz: U/ U/ X/ U src1: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 src2: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 49: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 50: op: 0x00306203 dst: 3o op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 51: op: 0x00704203 dst: 2o op: VE_ADD src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 52: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 53: op: 0x00f08203 dst: 4o op: VE_ADD src0: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0] DCL CONST[4..6] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM FLT32 { 0.5000, 255.0000, 16.0000, 0.0625} IMM FLT32 {-1023.0000, 1.0323, 0.0312, 0.0000} IMM FLT32 { 1.0000, 0.6000, 26.0000, 0.0000} 0: ADD TEMP[0].x, IN[1].zzzz, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[5].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: ADD TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 6: RCP TEMP[2].x, CONST[5].yyyy 7: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 8: MOV TEMP[1].y, TEMP[0].xxxx 9: TEX TEMP[0], TEMP[1].xyyy, SAMP[1], 2D 10: MAD TEMP[0], IMM[0].yyyy, TEMP[0], IMM[0].xxxx 11: FLR TEMP[0], TEMP[0] 12: MUL TEMP[1].x, TEMP[0].wwww, IMM[0].wwww 13: FLR TEMP[1].x, TEMP[1].xxxx 14: MAD TEMP[1].x, TEMP[0].yyyy, IMM[0].zzzz, TEMP[1].xxxx 15: MAD TEMP[1].x, TEMP[1].xxxx, IMM[0].xxxx, IMM[1].xxxx 16: MUL TEMP[2].x, TEMP[0].wwww, IMM[0].wwww 17: FRC TEMP[2].x, TEMP[2].xxxx 18: MUL TEMP[3].x, TEMP[0].zzzz, IMM[0].zzzz 19: MAD TEMP[2].x, IMM[0].zzzz, TEMP[2].xxxx, TEMP[3].xxxx 20: MAD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx, IMM[1].xxxx 21: MOV TEMP[1].y, TEMP[2].xxxx 22: MUL TEMP[0].x, TEMP[0].xxxx, IMM[1].zzzz 23: FRC TEMP[0].x, TEMP[0].xxxx 24: MUL TEMP[0].x, IMM[1].yyyy, TEMP[0].xxxx 25: ADD TEMP[1].xy, IN[0].xyyy, -TEMP[1].xyyy 26: SEQ TEMP[2].x, TEMP[0].xxxx, IMM[1].wwww 27: DP2 TEMP[3].x, TEMP[1].xyyy, TEMP[1].xyyy 28: SGE TEMP[3].x, TEMP[3].xxxx, IMM[2].yyyy 29: ADD TEMP[2].x, -TEMP[2].xxxx, IMM[2].xxxx 30: CMP TEMP[1].x, -TEMP[2].xxxx, TEMP[3].xxxx, IMM[2].xxxx 31: CMP TEMP[1].x, -TEMP[1].xxxx, IMM[2].xxxx, IMM[1].wwww 32: KIL -TEMP[1].xxxx 33: RCP TEMP[1].x, CONST[4].xxxx 34: RCP TEMP[1].y, CONST[4].yyyy 35: MUL TEMP[1].xy, IN[2].xyyy, TEMP[1].xyyy 36: TEX TEMP[1].w, TEMP[1].xyyy, SAMP[0], 2D 37: SEQ TEMP[3].x, TEMP[1].wwww, IMM[1].wwww 38: CMP TEMP[2].x, -TEMP[3].xxxx, IMM[2].xxxx, IMM[1].wwww 39: KIL -TEMP[2].xxxx 40: ADD TEMP[2].x, IN[1].yyyy, IMM[0].xxxx 41: RCP TEMP[3].x, CONST[6].xxxx 42: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 43: FRC TEMP[3].x, TEMP[2].xxxx 44: FLR TEMP[2].x, TEMP[2].xxxx 45: MAD TEMP[2].x, IMM[2].zzzz, TEMP[2].xxxx, CONST[0].xxxx 46: ADD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 47: RCP TEMP[4].x, CONST[6].yyyy 48: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[4].xxxx 49: MOV TEMP[3].y, TEMP[2].xxxx 50: TEX TEMP[2], TEMP[3].xyyy, SAMP[2], 2D 51: MOV TEMP[3].xyz, TEMP[2].xyzx 52: MUL TEMP[0].x, TEMP[2].wwww, TEMP[0].xxxx 53: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].wwww 54: MOV TEMP[3].w, TEMP[0].xxxx 55: MOV OUT[0], TEMP[3] 56: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[1].w, temp[1].xyyy, 2D[0]; 37: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 38: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 39: KIL -temp[2].xxxx; 40: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 41: RCP temp[3].x, const[6].xxxx; 42: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 43: FRC temp[3].x, temp[2].xxxx; 44: FLR temp[2].x, temp[2].xxxx; 45: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 46: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 47: RCP temp[4].x, const[6].yyyy; 48: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 49: MOV temp[3].y, temp[2].xxxx; 50: TEX temp[2], temp[3].xyyy, 2D[2]; 51: MOV temp[3].xyz, temp[2].xyzx; 52: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 54: MOV temp[3].w, temp[0].xxxx; 55: MOV output[0], temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[1].w, temp[1].xyyy, 2D[0]; 37: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 38: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 39: KIL -temp[2].xxxx; 40: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 41: RCP temp[3].x, const[6].xxxx; 42: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 43: FRC temp[3].x, temp[2].xxxx; 44: FLR temp[2].x, temp[2].xxxx; 45: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 46: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 47: RCP temp[4].x, const[6].yyyy; 48: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 49: MOV temp[3].y, temp[2].xxxx; 50: TEX temp[2], temp[3].xyyy, 2D[2]; 51: MOV temp[3].xyz, temp[2].xyzx; 52: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 54: MOV temp[3].w, temp[0].xxxx; 55: MOV output[0], temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[1].w, temp[1].xyyy, 2D[0]; 37: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 38: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 39: KIL -temp[2].xxxx; 40: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 41: RCP temp[3].x, const[6].xxxx; 42: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 43: FRC temp[3].x, temp[2].xxxx; 44: FLR temp[2].x, temp[2].xxxx; 45: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 46: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 47: RCP temp[4].x, const[6].yyyy; 48: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 49: MOV temp[3].y, temp[2].xxxx; 50: TEX temp[2], temp[3].xyyy, 2D[2]; 51: MOV temp[3].xyz, temp[2].xyzx; 52: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 54: MOV temp[3].w, temp[0].xxxx; 55: MOV output[0], temp[3]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[1].w, temp[1].xyyy, 2D[0]; 37: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 38: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 39: KIL -temp[2].xxxx; 40: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 41: RCP temp[3].x, const[6].xxxx; 42: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 43: FRC temp[3].x, temp[2].xxxx; 44: FLR temp[2].x, temp[2].xxxx; 45: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 46: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 47: RCP temp[4].x, const[6].yyyy; 48: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 49: MOV temp[3].y, temp[2].xxxx; 50: TEX temp[2], temp[3].xyyy, 2D[2]; 51: MOV temp[3].xyz, temp[2].xyzx; 52: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 54: MOV temp[3].w, temp[0].xxxx; 55: MOV output[0], temp[3]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[1].w, temp[1].xyyy, 2D[0]; 37: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 38: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 39: KIL -temp[2].xxxx; 40: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 41: RCP temp[3].x, const[6].xxxx; 42: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 43: FRC temp[3].x, temp[2].xxxx; 44: FLR temp[2].x, temp[2].xxxx; 45: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 46: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 47: RCP temp[4].x, const[6].yyyy; 48: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 49: MOV temp[3].y, temp[2].xxxx; 50: TEX temp[2], temp[3].xyyy, 2D[2]; 51: MOV temp[3].xyz, temp[2].xyzx; 52: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 54: MOV temp[3].w, temp[0].xxxx; 55: MOV output[0], temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0], temp[1].xyyy, 2D[1]; 10: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 11: FLR temp[0], temp[0]; 12: MUL temp[1].x, temp[0].wwww, const[7].wwww; 13: FLR temp[1].x, temp[1].xxxx; 14: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 15: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 16: MUL temp[2].x, temp[0].wwww, const[7].wwww; 17: FRC temp[2].x, temp[2].xxxx; 18: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 19: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 20: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 21: MOV temp[1].y, temp[2].xxxx; 22: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 23: FRC temp[0].x, temp[0].xxxx; 24: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 25: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 26: SEQ temp[2].x, temp[0].xxxx, const[8].wwww; 27: DP2 temp[3].x, temp[1].xyyy, temp[1].xyyy; 28: SGE temp[3].x, temp[3].xxxx, const[9].yyyy; 29: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 30: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 31: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 32: KIL -temp[1].xxxx; 33: RCP temp[1].x, const[4].xxxx; 34: RCP temp[1].y, const[4].yyyy; 35: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 36: TEX temp[5], temp[1].xyyy, 2D[0]; 37: MOV temp[1].w, temp[5]; 38: SEQ temp[3].x, temp[1].wwww, const[8].wwww; 39: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 40: KIL -temp[2].xxxx; 41: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 42: RCP temp[3].x, const[6].xxxx; 43: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 44: FRC temp[3].x, temp[2].xxxx; 45: FLR temp[2].x, temp[2].xxxx; 46: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 47: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 48: RCP temp[4].x, const[6].yyyy; 49: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 50: MOV temp[3].y, temp[2].xxxx; 51: TEX temp[2], temp[3].xyyy, 2D[2]; 52: MOV temp[3].xyz, temp[2].xyzx; 53: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 54: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 55: MOV temp[3].w, temp[0].xxxx; 56: MOV output[0], temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[1].zzzz, const[7].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[6].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[6]; 6: ADD temp[0].x, temp[0].xxxx, const[7].xxxx; 7: RCP temp[2].x, const[5].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[7], temp[0]; 13: ADD temp[0], temp[0], -temp[7]; 14: MUL temp[1].x, temp[0].wwww, const[7].wwww; 15: FRC temp[8].x, temp[1].xxxx; 16: ADD temp[1].x, temp[1].xxxx, -temp[8]; 17: MAD temp[1].x, temp[0].yyyy, const[7].zzzz, temp[1].xxxx; 18: MAD temp[1].x, temp[1].xxxx, const[7].xxxx, const[8].xxxx; 19: MUL temp[2].x, temp[0].wwww, const[7].wwww; 20: FRC temp[2].x, temp[2].xxxx; 21: MUL temp[3].x, temp[0].zzzz, const[7].zzzz; 22: MAD temp[2].x, const[7].zzzz, temp[2].xxxx, temp[3].xxxx; 23: MAD temp[2].x, temp[2].xxxx, const[7].xxxx, const[8].xxxx; 24: MOV temp[1].y, temp[2].xxxx; 25: MUL temp[0].x, temp[0].xxxx, const[8].zzzz; 26: FRC temp[0].x, temp[0].xxxx; 27: MUL temp[0].x, const[8].yyyy, temp[0].xxxx; 28: ADD temp[1].xy, input[0].xyyy, -temp[1].xyyy; 29: ADD temp[2].x, temp[0].xxxx, -const[8].wwww; 30: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 31: DP3 temp[3].x, temp[1].xy00, temp[1].xy00; 32: ADD temp[9].x, temp[3].xxxx, -const[9].yyyy; 33: CMP temp[3].x, temp[9], none.0000, none.1111; 34: ADD temp[2].x, -temp[2].xxxx, const[9].xxxx; 35: CMP temp[1].x, -temp[2].xxxx, temp[3].xxxx, const[9].xxxx; 36: CMP temp[1].x, -temp[1].xxxx, const[9].xxxx, const[8].wwww; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].xxxx; 39: RCP temp[1].y, const[4].yyyy; 40: MUL temp[1].xy, input[2].xyyy, temp[1].xyyy; 41: TEX temp[5], temp[1].xyyy, 2D[0]; 42: MOV temp[1].w, temp[5]; 43: ADD temp[3].x, temp[1].wwww, -const[8].wwww; 44: CMP temp[3].x, -|temp[3]|, none.0000, none.1111; 45: CMP temp[2].x, -temp[3].xxxx, const[9].xxxx, const[8].wwww; 46: KIL -temp[2].xxxx; 47: ADD temp[2].x, input[1].yyyy, const[7].xxxx; 48: RCP temp[3].x, const[6].xxxx; 49: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 50: FRC temp[3].x, temp[2].xxxx; 51: FRC temp[10].x, temp[2].xxxx; 52: ADD temp[2].x, temp[2].xxxx, -temp[10]; 53: MAD temp[2].x, const[9].zzzz, temp[2].xxxx, const[0].xxxx; 54: ADD temp[2].x, temp[2].xxxx, const[7].xxxx; 55: RCP temp[4].x, const[6].yyyy; 56: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 57: MOV temp[3].y, temp[2].xxxx; 58: TEX temp[2], temp[3].xyyy, 2D[2]; 59: MOV temp[3].xyz, temp[2].xyzx; 60: MUL temp[0].x, temp[2].wwww, temp[0].xxxx; 61: MUL temp[0].x, temp[0].xxxx, temp[1].wwww; 62: MOV temp[3].w, temp[0].xxxx; 63: MOV output[0], temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[1].z___, const[7].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[6].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[6].x___; 6: ADD temp[0].x, temp[0].x___, const[7].x___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[0], temp[1].xy__, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[7], temp[0]; 13: ADD temp[0], temp[0], -temp[7]; 14: MUL temp[1].x, temp[0].w___, const[7].w___; 15: FRC temp[8].x, temp[1].x___; 16: ADD temp[1].x, temp[1].x___, -temp[8].x___; 17: MAD temp[1].x, temp[0].y___, const[7].z___, temp[1].x___; 18: MAD temp[1].x, temp[1].x___, const[7].x___, const[8].x___; 19: MUL temp[2].x, temp[0].w___, const[7].w___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[3].x, temp[0].z___, const[7].z___; 22: MAD temp[2].x, const[7].z___, temp[2].x___, temp[3].x___; 23: MAD temp[2].x, temp[2].x___, const[7].x___, const[8].x___; 24: MOV temp[1].y, temp[2]._x__; 25: MUL temp[0].x, temp[0].x___, const[8].z___; 26: FRC temp[0].x, temp[0].x___; 27: MUL temp[0].x, const[8].y___, temp[0].x___; 28: ADD temp[1].xy, input[0].xy__, -temp[1].xy__; 29: ADD temp[2].x, temp[0].x___, -const[8].w___; 30: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 31: DP3 temp[3].x, temp[1].xy0_, temp[1].xy0_; 32: ADD temp[9].x, temp[3].x___, -const[9].y___; 33: CMP temp[3].x, temp[9].x___, none.0___, none.1___; 34: ADD temp[2].x, -temp[2].x___, const[9].x___; 35: CMP temp[1].x, -temp[2].x___, temp[3].x___, const[9].x___; 36: CMP temp[1].x, -temp[1].x___, const[9].x___, const[8].w___; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].x___; 39: RCP temp[1].y, const[4]._y__; 40: MUL temp[1].xy, input[2].xy__, temp[1].xy__; 41: TEX temp[5].w, temp[1].xy__, 2D[0]; 42: MOV temp[1].w, temp[5].___w; 43: ADD temp[3].x, temp[1].w___, -const[8].w___; 44: CMP temp[3].x, -|temp[3].x___|, none.0___, none.1___; 45: CMP temp[2].x, -temp[3].x___, const[9].x___, const[8].w___; 46: KIL -temp[2].xxxx; 47: ADD temp[2].x, input[1].y___, const[7].x___; 48: RCP temp[3].x, const[6].x___; 49: MUL temp[2].x, temp[2].x___, temp[3].x___; 50: FRC temp[3].x, temp[2].x___; 51: FRC temp[10].x, temp[2].x___; 52: ADD temp[2].x, temp[2].x___, -temp[10].x___; 53: MAD temp[2].x, const[9].z___, temp[2].x___, const[0].x___; 54: ADD temp[2].x, temp[2].x___, const[7].x___; 55: RCP temp[4].x, const[6].y___; 56: MUL temp[2].x, temp[2].x___, temp[4].x___; 57: MOV temp[3].y, temp[2]._x__; 58: TEX temp[2], temp[3].xy__, 2D[2]; 59: MOV temp[3].xyz, temp[2].xyz_; 60: MUL temp[0].x, temp[2].w___, temp[0].x___; 61: MUL temp[0].x, temp[0].x___, temp[1].w___; 62: MOV temp[3].w, temp[0].___x; 63: MOV output[0], temp[3]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[1].z___, const[7].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[6].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[6].x___; 6: ADD temp[0].x, temp[0].x___, const[7].x___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[0], temp[1].xy__, 2D[1]; 11: MAD temp[0], const[7].yyyy, temp[0], const[7].xxxx; 12: FRC temp[7], temp[0]; 13: ADD temp[0], temp[0], -temp[7]; 14: MUL temp[1].x, temp[0].w___, const[7].w___; 15: FRC temp[8].x, temp[1].x___; 16: ADD temp[1].x, temp[1].x___, -temp[8].x___; 17: MAD temp[1].x, temp[0].y___, const[7].z___, temp[1].x___; 18: MAD temp[1].x, temp[1].x___, const[7].x___, const[8].x___; 19: MUL temp[2].x, temp[0].w___, const[7].w___; 20: FRC temp[2].x, temp[2].x___; 21: MUL temp[3].x, temp[0].z___, const[7].z___; 22: MAD temp[2].x, const[7].z___, temp[2].x___, temp[3].x___; 23: MAD temp[2].x, temp[2].x___, const[7].x___, const[8].x___; 24: MOV temp[1].y, temp[2]._x__; 25: MUL temp[0].x, temp[0].x___, const[8].z___; 26: FRC temp[0].x, temp[0].x___; 27: MUL temp[0].x, const[8].y___, temp[0].x___; 28: ADD temp[1].xy, input[0].xy__, -temp[1].xy__; 29: ADD temp[2].x, temp[0].x___, -const[8].w___; 30: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 31: DP3 temp[3].x, temp[1].xy0_, temp[1].xy0_; 32: ADD temp[9].x, temp[3].x___, -const[9].y___; 33: CMP temp[3].x, temp[9].x___, none.0___, none.1___; 34: ADD temp[2].x, -temp[2].x___, const[9].x___; 35: CMP temp[1].x, -temp[2].x___, temp[3].x___, const[9].x___; 36: CMP temp[1].x, -temp[1].x___, const[9].x___, const[8].w___; 37: KIL -temp[1].xxxx; 38: RCP temp[1].x, const[4].x___; 39: RCP temp[1].y, const[4]._y__; 40: MUL temp[1].xy, input[2].xy__, temp[1].xy__; 41: TEX temp[5].w, temp[1].xy__, 2D[0]; 42: MOV temp[1].w, temp[5].___w; 43: ADD temp[3].x, temp[1].w___, -const[8].w___; 44: CMP temp[3].x, -|temp[3].x___|, none.0___, none.1___; 45: CMP temp[2].x, -temp[3].x___, const[9].x___, const[8].w___; 46: KIL -temp[2].xxxx; 47: ADD temp[2].x, input[1].y___, const[7].x___; 48: RCP temp[3].x, const[6].x___; 49: MUL temp[2].x, temp[2].x___, temp[3].x___; 50: FRC temp[3].x, temp[2].x___; 51: FRC temp[10].x, temp[2].x___; 52: ADD temp[2].x, temp[2].x___, -temp[10].x___; 53: MAD temp[2].x, const[9].z___, temp[2].x___, const[0].x___; 54: ADD temp[2].x, temp[2].x___, const[7].x___; 55: RCP temp[4].x, const[6].y___; 56: MUL temp[2].x, temp[2].x___, temp[4].x___; 57: MOV temp[3].y, temp[2]._x__; 58: TEX temp[2], temp[3].xy__, 2D[2]; 59: MOV temp[3].xyz, temp[2].xyz_; 60: MUL temp[0].x, temp[2].w___, temp[0].x___; 61: MUL temp[0].x, temp[0].x___, temp[1].w___; 62: MOV temp[3].w, temp[0].___x; 63: MOV output[0], temp[3]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[11].x, input[1].z___, const[7].x___; 1: RCP temp[12].x, const[5].x___; 2: MUL temp[13].x, temp[11].x___, temp[12].x___; 3: FRC temp[14].x, temp[13].x___; 4: FRC temp[15].x, temp[13].x___; 5: ADD temp[16].x, temp[13].x___, -temp[15].x___; 6: ADD temp[17].x, temp[16].x___, const[7].x___; 7: RCP temp[18].x, const[5].y___; 8: MUL temp[19].x, temp[17].x___, temp[18].x___; 9: MOV temp[14].y, temp[19]._x__; 10: TEX temp[20], temp[14].xy__, 2D[1]; 11: MAD temp[21], const[7].yyyy, temp[20], const[7].xxxx; 12: FRC temp[22], temp[21]; 13: ADD temp[23], temp[21], -temp[22]; 14: MUL temp[24].x, temp[23].w___, const[7].w___; 15: FRC temp[25].x, temp[24].x___; 16: ADD temp[26].x, temp[24].x___, -temp[25].x___; 17: MAD temp[27].x, temp[23].y___, const[7].z___, temp[26].x___; 18: MAD temp[28].x, temp[27].x___, const[7].x___, const[8].x___; 19: MUL temp[29].x, temp[23].w___, const[7].w___; 20: FRC temp[30].x, temp[29].x___; 21: MUL temp[31].x, temp[23].z___, const[7].z___; 22: MAD temp[32].x, const[7].z___, temp[30].x___, temp[31].x___; 23: MAD temp[33].x, temp[32].x___, const[7].x___, const[8].x___; 24: MOV temp[28].y, temp[33]._x__; 25: MUL temp[34].x, temp[23].x___, const[8].z___; 26: FRC temp[35].x, temp[34].x___; 27: MUL temp[36].x, const[8].y___, temp[35].x___; 28: ADD temp[37].xy, input[0].xy__, -temp[28].xy__; 29: ADD temp[38].x, temp[36].x___, -const[8].w___; 30: CMP temp[39].x, -|temp[38].x___|, none.0___, none.1___; 31: DP3 temp[40].x, temp[37].xy0_, temp[37].xy0_; 32: ADD temp[41].x, temp[40].x___, -const[9].y___; 33: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 34: ADD temp[43].x, -temp[39].x___, const[9].x___; 35: CMP temp[44].x, -temp[43].x___, temp[42].x___, const[9].x___; 36: CMP temp[45].x, -temp[44].x___, const[9].x___, const[8].w___; 37: KIL -temp[45].xxxx; 38: RCP temp[46].x, const[4].x___; 39: RCP temp[46].y, const[4]._y__; 40: MUL temp[47].xy, input[2].xy__, temp[46].xy__; 41: TEX temp[48].w, temp[47].xy__, 2D[0]; 42: MOV temp[49].w, temp[48].___w; 43: ADD temp[50].x, temp[49].w___, -const[8].w___; 44: CMP temp[51].x, -|temp[50].x___|, none.0___, none.1___; 45: CMP temp[52].x, -temp[51].x___, const[9].x___, const[8].w___; 46: KIL -temp[52].xxxx; 47: ADD temp[53].x, input[1].y___, const[7].x___; 48: RCP temp[54].x, const[6].x___; 49: MUL temp[55].x, temp[53].x___, temp[54].x___; 50: FRC temp[56].x, temp[55].x___; 51: FRC temp[57].x, temp[55].x___; 52: ADD temp[58].x, temp[55].x___, -temp[57].x___; 53: MAD temp[59].x, const[9].z___, temp[58].x___, const[0].x___; 54: ADD temp[60].x, temp[59].x___, const[7].x___; 55: RCP temp[61].x, const[6].y___; 56: MUL temp[62].x, temp[60].x___, temp[61].x___; 57: MOV temp[56].y, temp[62]._x__; 58: TEX temp[63], temp[56].xy__, 2D[2]; 59: MOV temp[64].xyz, temp[63].xyz_; 60: MUL temp[65].x, temp[63].w___, temp[36].x___; 61: MUL temp[66].x, temp[65].x___, temp[49].w___; 62: MOV temp[64].w, temp[66].___x; 63: MOV output[0], temp[64]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[11].x, input[1].z___, none.H___; 1: RCP temp[12].x, const[5].x___; 2: MUL temp[13].x, temp[11].x___, temp[12].x___; 3: FRC temp[14].x, temp[13].x___; 4: FRC temp[15].x, temp[13].x___; 5: ADD temp[17].x, (temp[13] - temp[15]).x___, none.H___; 6: RCP temp[18].x, const[5].y___; 7: MUL temp[19].x, temp[17].x___, temp[18].x___; 8: MOV temp[14].y, temp[19]._x__; 9: TEX temp[20], temp[14].xy__, 2D[1]; 10: MAD temp[21], const[7].yyyy, temp[20], none.HHHH; 11: FRC temp[22], temp[21]; 12: ADD temp[23], temp[21], -temp[22]; 13: MUL temp[24].x, temp[23].w___, const[7].w___; 14: FRC temp[25].x, temp[24].x___; 15: ADD temp[26].x, temp[24].x___, -temp[25].x___; 16: MAD temp[27].x, temp[23].y___, const[7].z___, temp[26].x___; 17: MAD temp[28].x, temp[27].x___, none.H___, const[8].x___; 18: MUL temp[29].x, temp[23].w___, const[7].w___; 19: FRC temp[30].x, temp[29].x___; 20: MUL temp[31].x, temp[23].z___, const[7].z___; 21: MAD temp[32].x, const[7].z___, temp[30].x___, temp[31].x___; 22: MAD temp[33].x, temp[32].x___, none.H___, const[8].x___; 23: MOV temp[28].y, temp[33]._x__; 24: MUL temp[34].x, temp[23].x___, const[8].z___; 25: FRC temp[35].x, temp[34].x___; 26: MUL temp[36].x, const[8].y___, temp[35].x___; 27: CMP temp[39].x, -|temp[36].x___|, none.0___, none.1___; 28: DP3 temp[40].x, (input[0] - temp[28]).xy0_, (input[0] - temp[28]).xy0_; 29: ADD temp[41].x, temp[40].x___, -const[9].y___; 30: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 31: ADD temp[43].x, -temp[39].x___, none.1___; 32: CMP temp[44].x, -temp[43].x___, temp[42].x___, none.1___; 33: CMP temp[45].x, -temp[44].x___, none.1___, none.0___; 34: KIL -temp[45].xxxx; 35: RCP temp[46].x, const[4].x___; 36: RCP temp[46].y, const[4]._y__; 37: MUL temp[47].xy, input[2].xy__, temp[46].xy__; 38: TEX temp[48].w, temp[47].xy__, 2D[0]; 39: CMP temp[51].x, -|temp[48].w___|, none.0___, none.1___; 40: CMP temp[52].x, -temp[51].x___, none.1___, none.0___; 41: KIL -temp[52].xxxx; 42: ADD temp[53].x, input[1].y___, none.H___; 43: RCP temp[54].x, const[6].x___; 44: MUL temp[55].x, temp[53].x___, temp[54].x___; 45: FRC temp[56].x, temp[55].x___; 46: FRC temp[57].x, temp[55].x___; 47: ADD temp[58].x, temp[55].x___, -temp[57].x___; 48: MAD temp[59].x, const[9].z___, temp[58].x___, const[0].x___; 49: ADD temp[60].x, temp[59].x___, none.H___; 50: RCP temp[61].x, const[6].y___; 51: MUL temp[62].x, temp[60].x___, temp[61].x___; 52: MOV temp[56].y, temp[62]._x__; 53: TEX temp[63], temp[56].xy__, 2D[2]; 54: MOV temp[64].xyz, temp[63].xyz_; 55: MUL temp[65].x, temp[63].w___, temp[36].x___; 56: MUL temp[66].x, temp[65].x___, temp[48].w___; 57: MOV temp[64].w, temp[66].___x; 58: MOV output[0], temp[64]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[11].x, input[1].z___, none.H___; 1: RCP temp[12].x, const[5].x___; 2: MUL temp[13].x, temp[11].x___, temp[12].x___; 3: FRC temp[14].x, temp[13].x___; 4: FRC temp[15].x, temp[13].x___; 5: ADD temp[17].x, (temp[13] - temp[15]).x___, none.H___; 6: RCP temp[18].x, const[5].y___; 7: MUL temp[19].x, temp[17].x___, temp[18].x___; 8: MOV temp[14].y, temp[19]._x__; 9: TEX temp[20], temp[14].xy__, 2D[1]; 10: MAD temp[21], const[7].yyyy, temp[20], none.HHHH; 11: FRC temp[22], temp[21]; 12: ADD temp[23], temp[21], -temp[22]; 13: MUL temp[24].x, temp[23].w___, const[7].w___; 14: FRC temp[25].x, temp[24].x___; 15: ADD temp[26].x, temp[24].x___, -temp[25].x___; 16: MAD temp[27].x, temp[23].y___, const[7].z___, temp[26].x___; 17: MAD temp[28].x, temp[27].x___, none.H___, const[8].x___; 18: MUL temp[29].x, temp[23].w___, const[7].w___; 19: FRC temp[30].x, temp[29].x___; 20: MUL temp[31].x, temp[23].z___, const[7].z___; 21: MAD temp[32].x, const[7].z___, temp[30].x___, temp[31].x___; 22: MAD temp[33].x, temp[32].x___, none.H___, const[8].x___; 23: MOV temp[28].y, temp[33]._x__; 24: MUL temp[34].x, temp[23].x___, const[8].z___; 25: FRC temp[35].x, temp[34].x___; 26: MUL temp[36].x, const[8].y___, temp[35].x___; 27: CMP temp[39].x, -|temp[36].x___|, none.0___, none.1___; 28: MOV temp[0].xy, (input[0] - temp[28]).xy__; 29: MOV temp[0].z, (input[0] - temp[28]).__0_; 30: MOV temp[1].xy, (input[0] - temp[28]).xy__; 31: MOV temp[1].z, (input[0] - temp[28]).__0_; 32: DP3 temp[40].x, temp[0].xyz_, temp[1].xyz_; 33: ADD temp[41].x, temp[40].x___, -const[9].y___; 34: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 35: ADD temp[43].x, -temp[39].x___, none.1___; 36: CMP temp[44].x, -temp[43].x___, temp[42].x___, none.1___; 37: CMP temp[45].x, -temp[44].x___, none.1___, none.0___; 38: MOV temp[2], -temp[45].xxxx; 39: KIL temp[2]; 40: RCP temp[46].x, const[4].x___; 41: RCP temp[46].y, const[4]._y__; 42: MUL temp[47].xy, input[2].xy__, temp[46].xy__; 43: TEX temp[48].w, temp[47].xy__, 2D[0]; 44: CMP temp[51].x, -|temp[48].w___|, none.0___, none.1___; 45: CMP temp[52].x, -temp[51].x___, none.1___, none.0___; 46: MOV temp[3], -temp[52].xxxx; 47: KIL temp[3]; 48: ADD temp[53].x, input[1].y___, none.H___; 49: RCP temp[54].x, const[6].x___; 50: MUL temp[55].x, temp[53].x___, temp[54].x___; 51: FRC temp[56].x, temp[55].x___; 52: FRC temp[57].x, temp[55].x___; 53: ADD temp[58].x, temp[55].x___, -temp[57].x___; 54: MAD temp[59].x, const[9].z___, temp[58].x___, const[0].x___; 55: ADD temp[60].x, temp[59].x___, none.H___; 56: RCP temp[61].x, const[6].y___; 57: MUL temp[62].x, temp[60].x___, temp[61].x___; 58: MOV temp[56].y, temp[62]._x__; 59: TEX temp[63], temp[56].xy__, 2D[2]; 60: MOV temp[64].xyz, temp[63].xyz_; 61: MUL temp[65].x, temp[63].w___, temp[36].x___; 62: MUL temp[66].x, temp[65].x___, temp[48].w___; 63: MOV temp[64].w, temp[66].___x; 64: MOV output[0], temp[64]; CONST[4] = { 0.5000 255.0000 16.0000 0.0625 } CONST[5] = { -1023.0000 1.0323 0.0312 0.0000 } CONST[6] = { 1.0000 0.6000 26.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[11].x, input[1].z___, none.H___; 1: RCP temp[12].x, const[2].x___; 2: MUL temp[13].x, temp[11].x___, temp[12].x___; 3: FRC temp[14].x, temp[13].x___; 4: FRC temp[15].x, temp[13].x___; 5: ADD temp[17].x, (temp[13] - temp[15]).x___, none.H___; 6: RCP temp[18].x, const[2].y___; 7: MUL temp[19].x, temp[17].x___, temp[18].x___; 8: MOV temp[14].y, temp[19]._x__; 9: TEX temp[20], temp[14].xy__, 2D[1]; 10: MAD temp[21], const[4].yyyy, temp[20], none.HHHH; 11: FRC temp[22], temp[21]; 12: ADD temp[23], temp[21], -temp[22]; 13: MUL temp[24].x, temp[23].w___, const[4].w___; 14: FRC temp[25].x, temp[24].x___; 15: ADD temp[26].x, temp[24].x___, -temp[25].x___; 16: MAD temp[27].x, temp[23].y___, const[4].z___, temp[26].x___; 17: MAD temp[28].x, temp[27].x___, none.H___, const[5].x___; 18: MUL temp[29].x, temp[23].w___, const[4].w___; 19: FRC temp[30].x, temp[29].x___; 20: MUL temp[31].x, temp[23].z___, const[4].z___; 21: MAD temp[32].x, const[4].z___, temp[30].x___, temp[31].x___; 22: MAD temp[33].x, temp[32].x___, none.H___, const[5].x___; 23: MOV temp[28].y, temp[33]._x__; 24: MUL temp[34].x, temp[23].x___, const[5].z___; 25: FRC temp[35].x, temp[34].x___; 26: MUL temp[36].x, const[5].y___, temp[35].x___; 27: CMP temp[39].x, -|temp[36].x___|, none.0___, none.1___; 28: MOV temp[0].xy, (input[0] - temp[28]).xy__; 29: MOV temp[0].z, (input[0] - temp[28]).__0_; 30: MOV temp[1].xy, (input[0] - temp[28]).xy__; 31: MOV temp[1].z, (input[0] - temp[28]).__0_; 32: DP3 temp[40].x, temp[0].xyz_, temp[1].xyz_; 33: ADD temp[41].x, temp[40].x___, -const[6].y___; 34: CMP temp[42].x, temp[41].x___, none.0___, none.1___; 35: ADD temp[43].x, -temp[39].x___, none.1___; 36: CMP temp[44].x, -temp[43].x___, temp[42].x___, none.1___; 37: CMP temp[45].x, -temp[44].x___, none.1___, none.0___; 38: MOV temp[2], -temp[45].xxxx; 39: KIL temp[2]; 40: RCP temp[46].x, const[1].x___; 41: RCP temp[46].y, const[1]._y__; 42: MUL temp[47].xy, input[2].xy__, temp[46].xy__; 43: TEX temp[48].w, temp[47].xy__, 2D[0]; 44: CMP temp[51].x, -|temp[48].w___|, none.0___, none.1___; 45: CMP temp[52].x, -temp[51].x___, none.1___, none.0___; 46: MOV temp[3], -temp[52].xxxx; 47: KIL temp[3]; 48: ADD temp[53].x, input[1].y___, none.H___; 49: RCP temp[54].x, const[3].x___; 50: MUL temp[55].x, temp[53].x___, temp[54].x___; 51: FRC temp[56].x, temp[55].x___; 52: FRC temp[57].x, temp[55].x___; 53: ADD temp[58].x, temp[55].x___, -temp[57].x___; 54: MAD temp[59].x, const[6].z___, temp[58].x___, const[0].x___; 55: ADD temp[60].x, temp[59].x___, none.H___; 56: RCP temp[61].x, const[3].y___; 57: MUL temp[62].x, temp[60].x___, temp[61].x___; 58: MOV temp[56].y, temp[62]._x__; 59: TEX temp[63], temp[56].xy__, 2D[2]; 60: MOV temp[64].xyz, temp[63].xyz_; 61: MUL temp[65].x, temp[63].w___, temp[36].x___; 62: MUL temp[66].x, temp[65].x___, temp[48].w___; 63: MOV temp[64].w, temp[66].___x; 64: MOV output[0], temp[64]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1] MAD temp[11].x, src0.z__, src0.111, src0.H__ 1: src0.xyz = const[2] REPL_ALPHA temp[12].x RCP, src0.x 2: src0.xyz = temp[11], src1.xyz = temp[12] MAD temp[13].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[13] FRC temp[14].x, src0.x__ 4: src0.xyz = temp[13] FRC temp[15].x, src0.x__ 5: src0.xyz = temp[15], src1.xyz = temp[13], srcp.xyz = (src1 - src0) MAD temp[17].x, srcp.x__, src0.111, src0.H__ 6: src0.xyz = const[2] REPL_ALPHA temp[18].x RCP, src0.y 7: src0.xyz = temp[17], src1.xyz = temp[18] MAD temp[19].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[19] MAD temp[14].y, src0._x_, src0.111, src0.000 9: TEX temp[20], temp[14].xy__, 2D[1]; 10: src0.xyz = const[4], src0.w = temp[20], src1.xyz = temp[20] MAD temp[21].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[21].w, src0.y, src0.w, src0.H 11: src0.xyz = temp[21], src0.w = temp[21] FRC temp[22].xyz, src0.xyz FRC temp[22].w, src0.w 12: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[22], src1.w = temp[22] MAD temp[23].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[23].w, src0.w, src0.1, -src1.w 13: src0.w = temp[23], src1.w = const[4] MAD temp[24].x, src0.w__, src1.w__, src0.000 14: src0.xyz = temp[24] FRC temp[25].x, src0.x__ 15: src0.xyz = temp[24], src1.xyz = temp[25] MAD temp[26].x, src0.x__, src0.111, -src1.x__ 16: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = temp[26] MAD temp[27].x, src0.y__, src1.z__, src2.x__ 17: src0.xyz = temp[27], src1.xyz = const[5] MAD temp[28].x, src0.x__, src0.H__, src1.x__ 18: src0.w = temp[23], src1.w = const[4] MAD temp[29].x, src0.w__, src1.w__, src0.000 19: src0.xyz = temp[29] FRC temp[30].x, src0.x__ 20: src0.xyz = temp[23], src1.xyz = const[4] MAD temp[31].x, src0.z__, src1.z__, src0.000 21: src0.xyz = const[4], src1.xyz = temp[30], src2.xyz = temp[31] MAD temp[32].x, src0.z__, src1.x__, src2.x__ 22: src0.xyz = temp[32], src1.xyz = const[5] MAD temp[33].x, src0.x__, src0.H__, src1.x__ 23: src0.xyz = temp[33] MAD temp[28].y, src0._x_, src0.111, src0.000 24: src0.xyz = temp[23], src1.xyz = const[5] MAD temp[34].x, src0.x__, src1.z__, src0.000 25: src0.xyz = temp[34] FRC temp[35].x, src0.x__ 26: src0.xyz = const[5], src1.xyz = temp[35] MAD temp[36].x, src0.y__, src1.x__, src0.000 27: src0.xyz = temp[36] CMP temp[39].x, src0.1__, src0.0__, -|src0.x__| 28: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 29: MAD temp[0].z, src0.__0, src0.111, src0.000 30: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 31: MAD temp[1].z, src0.__0, src0.111, src0.000 32: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[40].x, src0.xyz, src1.xyz 33: src0.xyz = temp[40], src1.xyz = const[6] MAD temp[41].x, src0.x__, src0.111, -src1.y__ 34: src0.xyz = temp[41] CMP temp[42].x, src0.1__, src0.0__, src0.x__ 35: src0.xyz = temp[39] MAD temp[43].x, -src0.x__, src0.111, src0.1__ 36: src0.xyz = temp[42], src1.xyz = temp[43] CMP temp[44].x, src0.1__, src0.x__, -src1.x__ 37: src0.xyz = temp[44] CMP temp[45].x, src0.0__, src0.1__, -src0.x__ 38: src0.xyz = temp[45] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 39: KIL temp[2]; 40: src0.xyz = const[1] REPL_ALPHA temp[46].x RCP, src0.x 41: src0.xyz = const[1] REPL_ALPHA temp[46].y RCP, src0.y 42: src0.xyz = input[2], src1.xyz = temp[46] MAD temp[47].xy, src0.xy_, src1.xy_, src0.000 43: TEX temp[48].w, temp[47].xy__, 2D[0]; 44: src0.w = temp[48] CMP temp[51].x, src0.1__, src0.0__, -|src0.w__| 45: src0.xyz = temp[51] CMP temp[52].x, src0.0__, src0.1__, -src0.x__ 46: src0.xyz = temp[52] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 47: KIL temp[3]; 48: src0.xyz = input[1] MAD temp[53].x, src0.y__, src0.111, src0.H__ 49: src0.xyz = const[3] REPL_ALPHA temp[54].x RCP, src0.x 50: src0.xyz = temp[53], src1.xyz = temp[54] MAD temp[55].x, src0.x__, src1.x__, src0.000 51: src0.xyz = temp[55] FRC temp[56].x, src0.x__ 52: src0.xyz = temp[55] FRC temp[57].x, src0.x__ 53: src0.xyz = temp[55], src1.xyz = temp[57] MAD temp[58].x, src0.x__, src0.111, -src1.x__ 54: src0.xyz = const[6], src1.xyz = temp[58], src2.xyz = const[0] MAD temp[59].x, src0.z__, src1.x__, src2.x__ 55: src0.xyz = temp[59] MAD temp[60].x, src0.x__, src0.111, src0.H__ 56: src0.xyz = const[3] REPL_ALPHA temp[61].x RCP, src0.y 57: src0.xyz = temp[60], src1.xyz = temp[61] MAD temp[62].x, src0.x__, src1.x__, src0.000 58: src0.xyz = temp[62] MAD temp[56].y, src0._x_, src0.111, src0.000 59: TEX temp[63], temp[56].xy__, 2D[2]; 60: src0.xyz = temp[63] MAD temp[64].xyz, src0.xyz, src0.111, src0.000 61: src0.xyz = temp[36], src0.w = temp[63] MAD temp[65].x, src0.w__, src0.x__, src0.000 62: src0.xyz = temp[65], src0.w = temp[48] MAD temp[66].x, src0.x__, src0.w__, src0.000 63: src0.xyz = temp[66] MAD temp[64].w, src0.x, src0.1, src0.0 64: src0.xyz = temp[64], src0.w = temp[64] 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], src1.xyz = const[3] MAD temp[53].x, src0.y__, src0.111, src0.H__ RCP temp[61].w, src1.y 1: src0.xyz = const[3] MAD temp[1].z, src0.__0, src0.111, src0.000 RCP temp[54].w, src0.x 2: src0.xyz = const[2] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[18].w, src0.y 3: src0.xyz = input[1], src1.xyz = const[2] MAD temp[11].x, src0.z__, src0.111, src0.H__ RCP temp[12].w, src1.x 4: src0.xyz = temp[11], src0.w = temp[12], src1.xyz = temp[12], src1.w = temp[54], src2.xyz = temp[53] MAD temp[13].x, src0.x__, src0.w__, src0.000 MAD temp[55].w, src2.x, src1.w, src0.0 5: src0.xyz = temp[13], src0.w = temp[55] FRC temp[15].x, src0.x__ FRC temp[57].w, src0.w 6: src0.xyz = temp[55], src0.w = temp[55], src1.w = temp[57] FRC temp[56].x, src0.w__ MAD temp[58].w, src0.w, src0.1, -src1.w 7: src0.xyz = temp[15], src1.xyz = temp[13], srcp.xyz = (src1 - src0) FRC temp[14].x, src1.x__ MAD temp[17].w, srcp.x, src0.1, src0.H 8: src0.xyz = const[1] REPL_ALPHA temp[46].x RCP, src0.x 9: src0.xyz = const[6], src0.w = temp[58], src1.xyz = temp[58], src2.xyz = const[0] MAD temp[59].w, src0.z, src0.w, src2.x 10: src0.xyz = temp[59], src0.w = temp[59], src1.w = temp[17], src2.w = temp[18] MAD temp[60].x, src0.w__, src0.111, src0.H__ MAD temp[19].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[19], src0.w = temp[19], src1.xyz = temp[60], src1.w = temp[61] MAD temp[14].y, src0._w_, src0.111, src0.000 MAD temp[62].w, src1.x, src1.w, src0.0 12: src0.xyz = const[1] REPL_ALPHA temp[46].y RCP, src0.y 13: src0.xyz = temp[62], src0.w = temp[62] MAD temp[56].y, src0._w_, src0.111, src0.000 14: src0.xyz = input[2], src1.xyz = temp[46] MAD temp[47].xy, src0.xy_, src1.xy_, src0.000 15: BEGIN_TEX; 16: TEX temp[20], temp[14].xy__, 2D[1]; 17: TEX temp[63], temp[56].xy__, 2D[2]; 18: TEX temp[48].w, temp[47].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[63], src0.w = temp[48] SEM_WAIT MAD temp[64].xyz, src0.xyz, src0.111, src0.000 CMP temp[51].w, src0.1, src0.0, -|src0.w| 20: src0.xyz = const[4], src0.w = temp[20], src1.xyz = temp[20] MAD temp[21].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[21].w, src0.y, src0.w, src0.H 21: src0.xyz = temp[51], src0.w = temp[51] CMP temp[52].x, src0.0__, src0.1__, -src0.w__ 22: src0.xyz = temp[21], src0.w = temp[21] FRC temp[22].xyz, src0.xyz FRC temp[22].w, src0.w 23: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[22], src1.w = temp[22] MAD temp[23].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[23].w, src0.w, src0.1, -src1.w 24: src0.w = temp[23], src1.w = const[4] MAD temp[24].x, src0.w__, src1.w__, src0.000 MAD temp[29].w, src0.w, src1.w, src0.0 25: src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[24] FRC temp[30].x, src0.w__ FRC temp[25].w, src1.x 26: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = const[5] MAD temp[31].x, src0.z__, src1.z__, src0.000 MAD temp[34].w, src0.x, src2.z, src0.0 27: src0.xyz = temp[34], src0.w = temp[34], src1.xyz = temp[24], src1.w = temp[25] FRC temp[35].x, src0.w__ MAD temp[26].w, src1.x, src0.1, -src1.w 28: src0.xyz = temp[52] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 29: BEGIN_TEX; 30: KIL temp[3]; 31: src0.xyz = const[4], src1.xyz = temp[30], src2.xyz = temp[31] MAD temp[32].w, src0.z, src1.x, src2.x 32: src0.xyz = temp[32], src0.w = temp[32], src1.xyz = const[5], src2.xyz = temp[35] MAD temp[33].x, src0.w__, src0.H__, src1.x__ MAD temp[36].w, src1.y, src2.x, src0.0 33: src0.xyz = temp[36], src0.w = temp[36], src1.w = temp[63] CMP temp[39].x, src0.1__, src0.0__, -|src0.w__| MAD temp[65].w, src1.w, src0.w, src0.0 34: src0.xyz = temp[65], src0.w = temp[48], src1.xyz = temp[39], src1.w = temp[65] MAD temp[66].x, src1.w__, src0.w__, src0.000 MAD temp[43].w, -src1.x, src0.1, src0.1 35: src0.xyz = temp[33], src0.w = temp[26], src1.xyz = temp[23], src2.xyz = const[4] MAD temp[28].y, src0._x_, src0.111, src0.000 MAD temp[27].w, src1.y, src2.z, src0.w 36: src0.xyz = temp[27], src0.w = temp[27], src1.xyz = const[5], src2.xyz = temp[66] MAD temp[28].x, src0.w__, src0.H__, src1.x__ MAD temp[64].w, src2.x, src0.1, src0.0 37: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 38: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 39: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[40].x, src0.xyz, src1.xyz 40: src0.xyz = temp[40], src1.xyz = const[6] MAD temp[41].x, src0.x__, src0.111, -src1.y__ 41: src0.xyz = temp[41] CMP temp[42].x, src0.1__, src0.0__, src0.x__ 42: src0.xyz = temp[42], src0.w = temp[43], src1.xyz = temp[43] CMP temp[44].x, src0.1__, src0.x__, -src0.w__ 43: src0.xyz = temp[44] CMP temp[45].x, src0.0__, src0.1__, -src0.x__ 44: src0.xyz = temp[45] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 45: BEGIN_TEX; 46: KIL temp[2]; 47: src0.xyz = temp[64], src0.w = temp[64] 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], src1.xyz = const[3] MAD temp[53].x, src0.y__, src0.111, src0.H__ RCP temp[61].w, src1.y 1: src0.xyz = const[3] MAD temp[1].z, src0.__0, src0.111, src0.000 RCP temp[54].w, src0.x 2: src0.xyz = const[2] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[18].w, src0.y 3: src0.xyz = input[1], src1.xyz = const[2] MAD temp[11].x, src0.z__, src0.111, src0.H__ RCP temp[12].w, src1.x 4: src0.xyz = temp[11], src0.w = temp[12], src1.w = temp[54], src2.xyz = temp[53] MAD temp[13].x, src0.x__, src0.w__, src0.000 MAD temp[55].w, src2.x, src1.w, src0.0 5: src0.xyz = temp[13], src0.w = temp[55] FRC temp[15].x, src0.x__ FRC temp[57].w, src0.w 6: src0.w = temp[55], src1.w = temp[57] FRC temp[56].x, src0.w__ MAD temp[58].w, src0.w, src0.1, -src1.w 7: src0.xyz = temp[15], src1.xyz = temp[13], srcp.xyz = (src1 - src0) FRC temp[14].x, src1.x__ MAD temp[17].w, srcp.x, src0.1, src0.H 8: src0.xyz = const[1] REPL_ALPHA temp[46].x RCP, src0.x 9: src0.xyz = const[6], src0.w = temp[58], src2.xyz = const[0] MAD temp[59].w, src0.z, src0.w, src2.x 10: src0.w = temp[59], src1.w = temp[17], src2.w = temp[18] MAD temp[60].x, src0.w__, src0.111, src0.H__ MAD temp[19].w, src1.w, src2.w, src0.0 11: src0.w = temp[19], src1.xyz = temp[60], src1.w = temp[61] MAD temp[14].y, src0._w_, src0.111, src0.000 MAD temp[62].w, src1.x, src1.w, src0.0 12: src0.xyz = const[1] REPL_ALPHA temp[46].y RCP, src0.y 13: src0.w = temp[62] MAD temp[56].y, src0._w_, src0.111, src0.000 14: src0.xyz = input[2], src1.xyz = temp[46] MAD temp[47].xy, src0.xy_, src1.xy_, src0.000 15: BEGIN_TEX; 16: TEX temp[20], temp[14].xy__, 2D[1]; 17: TEX temp[63], temp[56].xy__, 2D[2]; 18: TEX temp[48].w, temp[47].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[63], src0.w = temp[48] SEM_WAIT MAD temp[64].xyz, src0.xyz, src0.111, src0.000 CMP temp[51].w, src0.1, src0.0, -|src0.w| 20: src0.xyz = const[4], src0.w = temp[20], src1.xyz = temp[20] MAD temp[21].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[21].w, src0.y, src0.w, src0.H 21: src0.w = temp[51] CMP temp[52].x, src0.0__, src0.1__, -src0.w__ 22: src0.xyz = temp[21], src0.w = temp[21] FRC temp[22].xyz, src0.xyz FRC temp[22].w, src0.w 23: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[22], src1.w = temp[22] MAD temp[23].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[23].w, src0.w, src0.1, -src1.w 24: src0.w = temp[23], src1.w = const[4] MAD temp[24].x, src0.w__, src1.w__, src0.000 MAD temp[29].w, src0.w, src1.w, src0.0 25: src0.w = temp[29], src1.xyz = temp[24] FRC temp[30].x, src0.w__ FRC temp[25].w, src1.x 26: src0.xyz = temp[23], src1.xyz = const[4], src2.xyz = const[5] MAD temp[31].x, src0.z__, src1.z__, src0.000 MAD temp[34].w, src0.x, src2.z, src0.0 27: src0.w = temp[34], src1.xyz = temp[24], src1.w = temp[25] FRC temp[35].x, src0.w__ MAD temp[26].w, src1.x, src0.1, -src1.w 28: src0.xyz = temp[52] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 29: BEGIN_TEX; 30: KIL temp[3]; 31: src0.xyz = const[4], src1.xyz = temp[30], src2.xyz = temp[31] MAD temp[32].w, src0.z, src1.x, src2.x 32: src0.w = temp[32], src1.xyz = const[5], src2.xyz = temp[35] MAD temp[33].x, src0.w__, src0.H__, src1.x__ MAD temp[36].w, src1.y, src2.x, src0.0 33: src0.w = temp[36], src1.w = temp[63] CMP temp[39].x, src0.1__, src0.0__, -|src0.w__| MAD temp[65].w, src1.w, src0.w, src0.0 34: src0.w = temp[48], src1.xyz = temp[39], src1.w = temp[65] MAD temp[66].x, src1.w__, src0.w__, src0.000 MAD temp[43].w, -src1.x, src0.1, src0.1 35: src0.xyz = temp[33], src0.w = temp[26], src1.xyz = temp[23], src2.xyz = const[4] MAD temp[28].y, src0._x_, src0.111, src0.000 MAD temp[27].w, src1.y, src2.z, src0.w 36: src0.w = temp[27], src1.xyz = const[5], src2.xyz = temp[66] MAD temp[28].x, src0.w__, src0.H__, src1.x__ MAD temp[64].w, src2.x, src0.1, src0.0 37: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 38: src0.xyz = temp[28], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 39: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[40].x, src0.xyz, src1.xyz 40: src0.xyz = temp[40], src1.xyz = const[6] MAD temp[41].x, src0.x__, src0.111, -src1.y__ 41: src0.xyz = temp[41] CMP temp[42].x, src0.1__, src0.0__, src0.x__ 42: src0.xyz = temp[42], src0.w = temp[43] CMP temp[44].x, src0.1__, src0.x__, -src0.w__ 43: src0.xyz = temp[44] CMP temp[45].x, src0.0__, src0.1__, -src0.x__ 44: src0.xyz = temp[45] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 45: BEGIN_TEX; 46: KIL temp[2]; 47: src0.xyz = temp[64], src0.w = temp[64] 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], src1.xyz = const[3] MAD temp[0].z, src0.__y, src0.__1, src0.__H RCP temp[0].w, src1.y 1: src0.xyz = const[3] MAD temp[3].z, src0.__0, src0.111, src0.000 RCP temp[1].w, src0.x 2: src0.xyz = const[2] MAD temp[4].z, src0.__0, src0.111, src0.000 RCP temp[2].w, src0.y 3: src0.xyz = input[1], src1.xyz = const[2] MAD temp[1].x, src0.z__, src0.1__, src0.H__ RCP temp[3].w, src1.x 4: src0.xyz = temp[1], src0.w = temp[3], src1.w = temp[1], src2.xyz = temp[0] MAD temp[1].x, src0.x__, src0.w__, src0.0__ MAD temp[1].w, src2.z, src1.w, src0.0 5: src0.xyz = temp[1], src0.w = temp[1] FRC temp[5].x, src0.x__ FRC temp[3].w, src0.w 6: src0.w = temp[1], src1.w = temp[3] FRC temp[6].x, src0.w__ MAD temp[1].w, src0.w, src0.1, -src1.w 7: src0.xyz = temp[5], src1.xyz = temp[1], srcp.xyz = (src1 - src0) FRC temp[1].x, src1.x__ MAD temp[3].w, srcp.x, src0.1, src0.H 8: src0.xyz = const[1] REPL_ALPHA temp[5].x RCP, src0.x 9: src0.xyz = const[6], src0.w = temp[1], src2.xyz = const[0] MAD temp[1].w, src0.z, src0.w, src2.x 10: src0.w = temp[1], src1.w = temp[3], src2.w = temp[2] MAD temp[0].z, src0.__w, src0.__1, src0.__H MAD temp[1].w, src1.w, src2.w, src0.0 11: src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] MAD temp[1].y, src0._w_, src0.11_, src0.00_ MAD temp[0].w, src1.z, src1.w, src0.0 12: src0.xyz = const[1] REPL_ALPHA temp[5].y RCP, src0.y 13: src0.w = temp[0] MAD temp[6].y, src0._w_, src0.11_, src0.00_ 14: src0.xyz = input[2], src1.xyz = temp[5] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 15: BEGIN_TEX; 16: TEX temp[1], temp[1].xy__, 2D[1]; 17: TEX temp[5], temp[6].xy__, 2D[2]; 18: TEX temp[2].w, temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = temp[5], src0.w = temp[2] SEM_WAIT MAD temp[6].xyz, src0.xyz, src0.111, src0.000 CMP temp[0].w, src0.1, src0.0, -|src0.w| 20: src0.xyz = const[4], src0.w = temp[1], src1.xyz = temp[1] MAD temp[1].xyz, src0.yyy, src1.xyz, src0.HHH MAD temp[1].w, src0.y, src0.w, src0.H 21: src0.w = temp[0] CMP temp[0].z, src0.__0, src0.__1, -src0.__w 22: src0.xyz = temp[1], src0.w = temp[1] FRC temp[7].xyz, src0.xyz FRC temp[0].w, src0.w 23: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[7], src1.w = temp[0] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[0].w, src0.w, src0.1, -src1.w 24: src0.w = temp[0], src1.w = const[4] MAD temp[7].x, src0.w__, src1.w__, src0.0__ MAD temp[0].w, src0.w, src1.w, src0.0 25: src0.w = temp[0], src1.xyz = temp[7] FRC temp[7].y, src0._w_ FRC temp[0].w, src1.x 26: src0.xyz = temp[1], src1.xyz = const[4], src2.xyz = const[5] MAD temp[7].z, src0.__z, src1.__z, src0.__0 MAD temp[1].w, src0.x, src2.z, src0.0 27: src0.w = temp[1], src1.xyz = temp[7], src1.w = temp[0] FRC temp[7].x, src0.w__ MAD temp[0].w, src1.x, src0.1, -src1.w 28: src0.xyz = temp[0] MAD temp[8].xyz, -src0.zzz, src0.111, src0.000 MAD temp[8].w, -src0.z, src0.1, src0.0 29: BEGIN_TEX; 30: KIL temp[8]; 31: src0.xyz = const[4], src1.xyz = temp[7], src2.xyz = temp[7] MAD temp[1].w, src0.z, src1.y, src2.z 32: src0.w = temp[1], src1.xyz = const[5], src2.xyz = temp[7] MAD temp[0].z, src0.__w, src0.__H, src1.__x MAD temp[1].w, src1.y, src2.x, src0.0 33: src0.w = temp[1], src1.w = temp[5] CMP temp[5].x, src0.1__, src0.0__, -|src0.w__| MAD temp[1].w, src1.w, src0.w, src0.0 34: src0.w = temp[2], src1.xyz = temp[5], src1.w = temp[1] MAD temp[2].x, src1.w__, src0.w__, src0.0__ MAD temp[1].w, -src1.x, src0.1, src0.1 35: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src2.xyz = const[4] MAD temp[1].y, src0._z_, src0.11_, src0.00_ MAD temp[0].w, src1.y, src2.z, src0.w 36: src0.w = temp[0], src1.xyz = const[5], src2.xyz = temp[2] MAD temp[1].x, src0.w__, src0.H__, src1.x__ MAD temp[0].w, src2.x, src0.1, src0.0 37: src0.xyz = temp[1], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[3].xy, srcp.xy_, src0.111, src0.000 38: src0.xyz = temp[1], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[4].xy, srcp.xy_, src0.111, src0.000 39: src0.xyz = temp[4], src1.xyz = temp[3] DP3 temp[0].x, src0.xyz, src1.xyz 40: src0.xyz = temp[0], src1.xyz = const[6] MAD temp[0].x, src0.x__, src0.1__, -src1.y__ 41: src0.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, src0.x__ 42: src0.xyz = temp[0], src0.w = temp[1] CMP temp[0].x, src0.1__, src0.x__, -src0.w__ 43: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 44: src0.xyz = temp[0] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 45: BEGIN_TEX; 46: KIL temp[1]; 47: src0.xyz = temp[6], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 pc=9************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 14, tex_end: 0 (code_addr: 00000380) 0: xyz: t1 c3 t0 bias-> t0.z (020008c1) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t1.yyy 1.0 0.5 op: 00058a82 w: c3.y t1.x t1.x op: 05000004 1: xyz: c3 t0 t0 bias-> t3.z (020c0023) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 0.0 1.0 0.0 op: 00050a94 w: c3.x c3.x c3.x op: 05000000 2: xyz: c2 t0 t0 bias-> t4.z (02100022) w: t0 t0 t0 bias-> t2.w (00880000) xyz: 0.0 1.0 0.0 op: 00050a94 w: c2.y c2.x c2.x op: 05000001 3: xyz: t1 c2 t0 bias-> t1.x (00840881) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t1.zzz 1.0 0.5 op: 00058a83 w: c2.x t1.x t1.x op: 05000003 4: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t3 t1 t0 bias-> t1.w (00840043) xyz: t1.xyz t3.www 0.0 op: 00050600 w: t0.z t1.w 0.0 op: 00040508 5: xyz: t1 t0 t0 bias-> t5.x (00940001) w: t1 t0 t0 bias-> t3.w (008c0001) xyz: t1.xyz t1.xxx t1.xxx op: 04804080 w: t1.w t1.x t1.x op: 03800009 6: xyz: t32 t0 t0 bias-> t6.x (00980000) w: t1 t3 t0 bias-> t1.w (008400c1) xyz: t1.www t32.xxx t32.xxx op: 0480408c w: t1.w 1.0 -t3.w op: 000a8889 7: xyz: t5 t1 t0 sub-> t1.x (00840045) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t1.xyz t5.xxx t5.xxx op: 04a04084 w: srcp.x 1.0 0.5 op: 0004888c 8: xyz: c1 t0 t0 bias-> t5.x (00940021) w: t0 t0 t0 bias-> (00000000) xyz: c1.xxx c1.xxx c1.xxx op: 05004081 w: c1.x c1.x c1.x op: 05000000 9: xyz: c6 t32 c0 bias-> (00020026) w: t1 t0 t0 bias-> t1.w (00840001) xyz: c6.xxx c6.xxx c6.xxx op: 00004081 w: c6.z t1.w c0.x op: 00018482 10: xyz: t32 t0 t0 bias-> t0.z (02000000) w: t1 t3 t2 bias-> t1.w (008420c1) xyz: t1.www 1.0 0.5 op: 00058a8c w: t3.w t2.w 0.0 op: 0004058a 11: xyz: t0 t0 t0 bias-> t1.y (01040000) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.www 1.0 0.0 op: 00050a8c w: t0.z t0.w 0.0 op: 00040505 12: xyz: c1 t0 t0 bias-> t5.y (01140021) w: t0 t0 t0 bias-> (00000000) xyz: c1.xxx c1.xxx c1.xxx op: 05004081 w: c1.y c1.x c1.x op: 05000001 13: xyz: t32 t0 t0 bias-> t6.y (01180000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 1.0 0.0 op: 00050a8c w: t32.x t32.x t32.x op: 00000000 14: xyz: t2 t5 t0 bias-> t2.xy (01880142) w: t0 t0 t0 bias-> (00000000) xyz: t2.xyz t5.xyz 0.0 op: 00050200 w: t2.x t2.x t2.x op: 00000000 NODE 1: alu_offset: 15, tex_offset: 0, alu_end: 9, tex_end: 2 (code_addr: 0004024f) TEX: TEX t1, t1, texture[1] (00008841) TEX t5, t6, texture[2] (00009146) TEX t2, t2, texture[0] (00008082) 15: xyz: t5 t0 t0 bias-> t6.xyz (03980005) w: t2 t0 t0 bias-> t0.w (00800002) xyz: t5.xyz 1.0 0.0 op: 00050a80 w: 1.0 0.0 -|t2.w| op: 031a4811 16: xyz: c4 t1 t0 bias-> t1.xyz (03840064) w: t1 t0 t0 bias-> t1.w (00840001) xyz: c4.yyy t1.xyz 0.5 op: 00058202 w: c4.y t1.w 0.5 op: 00048481 17: xyz: t32 t0 t0 bias-> t0.z (02000000) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t0.www op: 040b0a94 w: t32.x t32.x t32.x op: 00000000 18: xyz: t1 t0 t0 bias-> t7.xyz (039c0001) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.xyz t1.xxx t1.xxx op: 04804080 w: t1.w t1.x t1.x op: 03800009 19: xyz: t1 t7 t0 bias-> t1.xyz (038401c1) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.xyz 1.0 -t7.xyz op: 00090a80 w: t1.w 1.0 -t0.w op: 000a8889 20: xyz: t0 t0 t0 bias-> t7.x (009c0000) w: t0 c4 t0 bias-> t0.w (00800900) xyz: t0.www c4.www 0.0 op: 0005068c w: t0.w c4.w 0.0 op: 00040509 21: xyz: t0 t7 t0 bias-> t7.y (011c01c0) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.www t0.xxx t0.xxx op: 0480408c w: t7.x t0.x t0.x op: 03800003 22: xyz: t1 c4 c5 bias-> t7.z (021e5901) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xyz c4.xyz 0.0 op: 00050200 w: t1.x c5.z 0.0 op: 00040400 23: xyz: t32 t7 t0 bias-> t7.x (009c01c0) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.www t32.xxx t32.xxx op: 0480408c w: t7.x 1.0 -t0.w op: 000a8883 24: xyz: t0 t0 t0 bias-> t8.xyz (03a00000) w: t0 t0 t0 bias-> t8.w (00a00000) xyz: -t0.zzz 1.0 0.0 op: 00050aa3 w: -t0.z 1.0 0.0 op: 000408a2 NODE 2: alu_offset: 25, tex_offset: 3, alu_end: 13, tex_end: 0 (code_addr: 00003359) TEX: KIL t0, t8, texture[0] (00010008) 25: xyz: c4 t7 t7 bias-> (000071e4) w: t0 t0 t0 bias-> t1.w (00840000) xyz: c4.xxx c4.xxx c4.xxx op: 00004081 w: c4.z t7.y t7.z op: 00020202 26: xyz: t32 c5 t7 bias-> t0.z (02007940) w: t1 t0 t0 bias-> t1.w (00840001) xyz: t1.www 0.5 c5.xxx op: 00014b0c w: c5.y t7.x 0.0 op: 00040304 27: xyz: t32 t0 t0 bias-> t5.x (00940000) w: t1 t5 t0 bias-> t1.w (00840141) xyz: 1.0 0.0 -|t1.www| op: 041b0a15 w: t5.w t1.w 0.0 op: 0004048a 28: xyz: t32 t5 t0 bias-> t2.x (00880140) w: t2 t1 t0 bias-> t1.w (00840042) xyz: t1.www t2.www 0.0 op: 0005060d w: -t5.x 1.0 1.0 op: 000448a3 29: xyz: t0 t1 c4 bias-> t1.y (01064040) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.zzz 1.0 0.0 op: 00050a83 w: t1.y c4.z t0.w op: 00024404 30: xyz: t0 c5 t2 bias-> t1.x (00842940) w: t0 t0 t0 bias-> t0.w (00800000) xyz: t0.www 0.5 c5.xyz op: 80010b0c NOP w: t2.x 1.0 0.0 op: 00040886 31: xyz: t1 t0 t0 sub-> t3.xy (018c0001) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t1.x t1.x t1.x op: 00000000 32: xyz: t1 t0 t0 sub-> t4.xy (01900001) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t1.x t1.x t1.x op: 00000000 33: xyz: t4 t3 t0 bias-> t0.x (008000c4) w: t0 t0 t0 bias-> (00000000) xyz: t4.xyz t3.xyz t4.xxx op: 00804200 w: t4.x t4.x t4.x op: 00000000 34: xyz: t0 c6 t0 bias-> t0.x (00800980) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 -c6.yyy op: 00098a80 w: t0.x t0.x t0.x op: 00000000 35: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 t0.xyz op: 04000a15 w: t0.x t0.x t0.x op: 00000000 36: xyz: t0 t32 t0 bias-> t0.x (00800000) w: t1 t0 t0 bias-> (00000001) xyz: 1.0 t0.xyz -t1.www op: 040b0015 w: t0.x t0.x t0.x op: 00000000 37: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t0.xyz op: 04080a94 w: t0.x t0.x t0.x op: 00000000 38: xyz: t0 t0 t0 bias-> t1.xyz (03840000) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t0.xxx 1.0 0.0 op: 00050aa1 w: -t0.x 1.0 0.0 op: 000408a0 NODE 3: alu_offset: 39, tex_offset: 4, alu_end: 0, tex_end: 0 (code_addr: 00404027) TEX: KIL t0, t1, texture[0] (00010001) 39: xyz: t6 t0 t0 bias-> o0.xyz (1c000006) w: t0 t0 t0 bias-> o0.w (01000000) xyz: t6.xyz 1.0 0.0 op: 00050a80 w: t0.w 1.0 0.0 op: 00040889 r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL IN[5] DCL IN[6] DCL IN[7] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL OUT[2], GENERIC[13] DCL OUT[3], GENERIC[14] DCL OUT[4], GENERIC[15] DCL OUT[5], GENERIC[16] DCL CONST[0..7] 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 FLT32 { 1.0000, 0.5000, -1.0000, 0.0000} 0: MUL TEMP[0], CONST[3], IN[7].xxxx 1: MAD TEMP[0], CONST[4], IN[7].yyyy, TEMP[0] 2: MAD TEMP[0], CONST[5], IN[7].zzzz, TEMP[0] 3: ADD TEMP[0], TEMP[0], CONST[6] 4: RCP TEMP[1].x, TEMP[0].wwww 5: MUL TEMP[0].xy, TEMP[0], TEMP[1].xxxx 6: MOV TEMP[1].z, IN[2].xxxx 7: MOV TEMP[1].w, IMM[0].xxxx 8: MUL TEMP[2].xy, IN[4].xyyy, IMM[0].yyyy 9: MUL TEMP[3].xy, IN[4].zwww, IMM[0].yyyy 10: MUL TEMP[4].xy, CONST[7].xyyy, IMM[0].yyyy 11: MUL TEMP[5].xy, CONST[7].xyyy, IMM[0].yyyy 12: FRC TEMP[5].xy, TEMP[5].xyyy 13: MUL TEMP[6].xy, CONST[0].xyyy, IN[6].xxxx 14: MAD TEMP[6].xy, CONST[1].xyyy, IN[6].yyyy, TEMP[6].xyyy 15: ADD TEMP[6].xy, TEMP[6].xyyy, IN[5].xyyy 16: ADD TEMP[6].xy, TEMP[6].xyyy, IN[0].xyyy 17: MUL TEMP[0].xy, TEMP[4].xyyy, TEMP[0].xyyy 18: MAD TEMP[0].xy, TEMP[6].xyyy, IMM[0].xzzz, TEMP[0].xyyy 19: ADD TEMP[6].xy, TEMP[0].xyyy, IMM[0].yyyy 20: ADD TEMP[6].xy, TEMP[6].xyyy, -TEMP[5].xyyy 21: FLR TEMP[6].xy, TEMP[6].xyyy 22: ADD TEMP[5].xy, TEMP[6].xyyy, TEMP[5].xyyy 23: ADD TEMP[6].x, IMM[0].xxxx, -CONST[2].xxxx 24: ADD TEMP[0].xy, TEMP[0].xyyy, -TEMP[5].xyyy 25: MAD TEMP[0].xy, TEMP[6].xxxx, TEMP[0].xyyy, TEMP[5].xyyy 26: RCP TEMP[5].x, TEMP[4].xxxx 27: RCP TEMP[5].y, TEMP[4].yyyy 28: MUL TEMP[1].xy, TEMP[0].xyyy, TEMP[5].xyyy 29: MOV OUT[3].xy, TEMP[3].xyxx 30: MOV OUT[2].xy, IN[1].xyxx 31: MOV OUT[1].xy, IN[0].xyxx 32: MOV OUT[0], TEMP[1] 33: MOV OUT[5].xy, TEMP[2].xyxx 34: MOV OUT[4].xyz, IN[3].xyzx 35: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[3], input[7].xxxx; 1: MAD temp[0], const[4], input[7].yyyy, temp[0]; 2: MAD temp[0], const[5], input[7].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[6]; 4: RCP temp[1].x, temp[0].wwww; 5: MUL temp[0].xy, temp[0], temp[1].xxxx; 6: MOV temp[1].z, input[2].xxxx; 7: MOV temp[1].w, const[8].xxxx; 8: MUL temp[2].xy, input[4].xyyy, const[8].yyyy; 9: MUL temp[3].xy, input[4].zwww, const[8].yyyy; 10: MUL temp[4].xy, const[7].xyyy, const[8].yyyy; 11: MUL temp[5].xy, const[7].xyyy, const[8].yyyy; 12: FRC temp[5].xy, temp[5].xyyy; 13: MUL temp[6].xy, const[0].xyyy, input[6].xxxx; 14: MAD temp[6].xy, const[1].xyyy, input[6].yyyy, temp[6].xyyy; 15: ADD temp[6].xy, temp[6].xyyy, input[5].xyyy; 16: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 17: MUL temp[0].xy, temp[4].xyyy, temp[0].xyyy; 18: MAD temp[0].xy, temp[6].xyyy, const[8].xzzz, temp[0].xyyy; 19: ADD temp[6].xy, temp[0].xyyy, const[8].yyyy; 20: ADD temp[6].xy, temp[6].xyyy, -temp[5].xyyy; 21: FLR temp[6].xy, temp[6].xyyy; 22: ADD temp[5].xy, temp[6].xyyy, temp[5].xyyy; 23: ADD temp[6].x, const[8].xxxx, -const[2].xxxx; 24: ADD temp[0].xy, temp[0].xyyy, -temp[5].xyyy; 25: MAD temp[0].xy, temp[6].xxxx, temp[0].xyyy, temp[5].xyyy; 26: RCP temp[5].x, temp[4].xxxx; 27: RCP temp[5].y, temp[4].yyyy; 28: MUL temp[1].xy, temp[0].xyyy, temp[5].xyyy; 29: MOV output[3].xy, temp[3].xyxx; 30: MOV output[2].xy, input[1].xyxx; 31: MOV output[1].xy, input[0].xyxx; 32: MOV temp[7], temp[1]; 33: MOV output[5].xy, temp[2].xyxx; 34: MOV output[4].xyz, input[3].xyzx; 35: MOV output[0], temp[7]; 36: MOV output[6], temp[7]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], const[3], input[7].xxxx; 1: MAD temp[0], const[4], input[7].yyyy, temp[0]; 2: MAD temp[0], const[5], input[7].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[6]; 4: RCP temp[1].x, temp[0].wwww; 5: MUL temp[0].xy, temp[0], temp[1].xxxx; 6: MOV temp[1].z, input[2].xxxx; 7: MOV temp[1].w, const[8].xxxx; 8: MUL temp[2].xy, input[4].xyyy, const[8].yyyy; 9: MUL temp[3].xy, input[4].zwww, const[8].yyyy; 10: MUL temp[4].xy, const[7].xyyy, const[8].yyyy; 11: MUL temp[5].xy, const[7].xyyy, const[8].yyyy; 12: FRC temp[5].xy, temp[5].xyyy; 13: MUL temp[6].xy, const[0].xyyy, input[6].xxxx; 14: MAD temp[6].xy, const[1].xyyy, input[6].yyyy, temp[6].xyyy; 15: ADD temp[6].xy, temp[6].xyyy, input[5].xyyy; 16: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 17: MUL temp[0].xy, temp[4].xyyy, temp[0].xyyy; 18: MAD temp[0].xy, temp[6].xyyy, const[8].xzzz, temp[0].xyyy; 19: ADD temp[6].xy, temp[0].xyyy, const[8].yyyy; 20: ADD temp[6].xy, temp[6].xyyy, -temp[5].xyyy; 21: FLR temp[6].xy, temp[6].xyyy; 22: ADD temp[5].xy, temp[6].xyyy, temp[5].xyyy; 23: ADD temp[6].x, const[8].xxxx, -const[2].xxxx; 24: ADD temp[0].xy, temp[0].xyyy, -temp[5].xyyy; 25: MAD temp[0].xy, temp[6].xxxx, temp[0].xyyy, temp[5].xyyy; 26: RCP temp[5].x, temp[4].xxxx; 27: RCP temp[5].y, temp[4].yyyy; 28: MUL temp[1].xy, temp[0].xyyy, temp[5].xyyy; 29: MOV output[3].xy, temp[3].xyxx; 30: MOV output[2].xy, input[1].xyxx; 31: MOV output[1].xy, input[0].xyxx; 32: MOV temp[7], temp[1]; 33: MOV output[5].xy, temp[2].xyxx; 34: MOV output[4].xyz, input[3].xyzx; 35: MOV output[0], temp[7]; 36: MOV output[6], temp[7]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], const[3], input[7].xxxx; 1: MAD temp[0], const[4], input[7].yyyy, temp[0]; 2: MAD temp[0], const[5], input[7].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[6]; 4: RCP temp[1].x, temp[0].wwww; 5: MUL temp[0].xy, temp[0], temp[1].xxxx; 6: MOV temp[1].z, input[2].xxxx; 7: MOV temp[1].w, const[8].xxxx; 8: MUL temp[2].xy, input[4].xyyy, const[8].yyyy; 9: MUL temp[3].xy, input[4].zwww, const[8].yyyy; 10: MUL temp[4].xy, const[7].xyyy, const[8].yyyy; 11: MUL temp[5].xy, const[7].xyyy, const[8].yyyy; 12: FRC temp[5].xy, temp[5].xyyy; 13: MUL temp[6].xy, const[0].xyyy, input[6].xxxx; 14: MAD temp[6].xy, const[1].xyyy, input[6].yyyy, temp[6].xyyy; 15: ADD temp[6].xy, temp[6].xyyy, input[5].xyyy; 16: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 17: MUL temp[0].xy, temp[4].xyyy, temp[0].xyyy; 18: MAD temp[0].xy, temp[6].xyyy, const[8].xzzz, temp[0].xyyy; 19: ADD temp[6].xy, temp[0].xyyy, const[8].yyyy; 20: ADD temp[6].xy, temp[6].xyyy, -temp[5].xyyy; 21: FLR temp[6].xy, temp[6].xyyy; 22: ADD temp[5].xy, temp[6].xyyy, temp[5].xyyy; 23: ADD temp[6].x, const[8].xxxx, -const[2].xxxx; 24: ADD temp[0].xy, temp[0].xyyy, -temp[5].xyyy; 25: MAD temp[0].xy, temp[6].xxxx, temp[0].xyyy, temp[5].xyyy; 26: RCP temp[5].x, temp[4].xxxx; 27: RCP temp[5].y, temp[4].yyyy; 28: MUL temp[1].xy, temp[0].xyyy, temp[5].xyyy; 29: MOV output[3].xy, temp[3].xyxx; 30: MOV output[2].xy, input[1].xyxx; 31: MOV output[1].xy, input[0].xyxx; 32: MOV temp[7], temp[1]; 33: MOV output[5].xy, temp[2].xyxx; 34: MOV output[4].xyz, input[3].xyzx; 35: MOV output[0], temp[7]; 36: MOV output[6], temp[7]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], const[3], input[7].xxxx; 1: MAD temp[0], const[4], input[7].yyyy, temp[0]; 2: MAD temp[0], const[5], input[7].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[6]; 4: RCP temp[1].x, temp[0].wwww; 5: MUL temp[0].xy, temp[0], temp[1].xxxx; 6: MOV temp[1].z, input[2].xxxx; 7: MOV temp[1].w, const[8].xxxx; 8: MUL temp[2].xy, input[4].xyyy, const[8].yyyy; 9: MUL temp[3].xy, input[4].zwww, const[8].yyyy; 10: MUL temp[4].xy, const[7].xyyy, const[8].yyyy; 11: MUL temp[5].xy, const[7].xyyy, const[8].yyyy; 12: FRC temp[5].xy, temp[5].xyyy; 13: MUL temp[6].xy, const[0].xyyy, input[6].xxxx; 14: MAD temp[6].xy, const[1].xyyy, input[6].yyyy, temp[6].xyyy; 15: ADD temp[6].xy, temp[6].xyyy, input[5].xyyy; 16: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 17: MUL temp[0].xy, temp[4].xyyy, temp[0].xyyy; 18: MAD temp[0].xy, temp[6].xyyy, const[8].xzzz, temp[0].xyyy; 19: ADD temp[6].xy, temp[0].xyyy, const[8].yyyy; 20: ADD temp[6].xy, temp[6].xyyy, -temp[5].xyyy; 21: FRC temp[8].xy, temp[6].xyyy; 22: ADD temp[6].xy, temp[6].xyyy, -temp[8]; 23: ADD temp[5].xy, temp[6].xyyy, temp[5].xyyy; 24: ADD temp[6].x, const[8].xxxx, -const[2].xxxx; 25: ADD temp[0].xy, temp[0].xyyy, -temp[5].xyyy; 26: MAD temp[0].xy, temp[6].xxxx, temp[0].xyyy, temp[5].xyyy; 27: RCP temp[5].x, temp[4].xxxx; 28: RCP temp[5].y, temp[4].yyyy; 29: MUL temp[1].xy, temp[0].xyyy, temp[5].xyyy; 30: MOV output[3].xy, temp[3].xyxx; 31: MOV output[2].xy, input[1].xyxx; 32: MOV output[1].xy, input[0].xyxx; 33: MOV temp[7], temp[1]; 34: MOV output[5].xy, temp[2].xyxx; 35: MOV output[4].xyz, input[3].xyzx; 36: MOV output[0], temp[7]; 37: MOV output[6], temp[7]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], const[3], input[7].xxxx; 1: MAD temp[0], const[4], input[7].yyyy, temp[0]; 2: MAD temp[0], const[5], input[7].zzzz, temp[0]; 3: ADD temp[0], temp[0], const[6]; 4: RCP temp[1].x, temp[0].wwww; 5: MUL temp[0].xy, temp[0], temp[1].xxxx; 6: MOV temp[1].z, input[2].xxxx; 7: MOV temp[1].w, const[8].xxxx; 8: MUL temp[2].xy, input[4].xyyy, const[8].yyyy; 9: MUL temp[3].xy, input[4].zwww, const[8].yyyy; 10: MUL temp[4].xy, const[7].xyyy, const[8].yyyy; 11: MUL temp[5].xy, const[7].xyyy, const[8].yyyy; 12: FRC temp[5].xy, temp[5].xyyy; 13: MUL temp[6].xy, const[0].xyyy, input[6].xxxx; 14: MAD temp[6].xy, const[1].xyyy, input[6].yyyy, temp[6].xyyy; 15: ADD temp[6].xy, temp[6].xyyy, input[5].xyyy; 16: ADD temp[6].xy, temp[6].xyyy, input[0].xyyy; 17: MUL temp[0].xy, temp[4].xyyy, temp[0].xyyy; 18: MAD temp[0].xy, temp[6].xyyy, const[8].xzzz, temp[0].xyyy; 19: ADD temp[6].xy, temp[0].xyyy, const[8].yyyy; 20: ADD temp[6].xy, temp[6].xyyy, -temp[5].xyyy; 21: FRC temp[8].xy, temp[6].xyyy; 22: ADD temp[6].xy, temp[6].xyyy, -temp[8]; 23: ADD temp[5].xy, temp[6].xyyy, temp[5].xyyy; 24: ADD temp[6].x, const[8].xxxx, -const[2].xxxx; 25: ADD temp[0].xy, temp[0].xyyy, -temp[5].xyyy; 26: MAD temp[0].xy, temp[6].xxxx, temp[0].xyyy, temp[5].xyyy; 27: RCP temp[5].x, temp[4].xxxx; 28: RCP temp[5].y, temp[4].yyyy; 29: MUL temp[1].xy, temp[0].xyyy, temp[5].xyyy; 30: MOV output[3].xy, temp[3].xyxx; 31: MOV output[2].xy, input[1].xyxx; 32: MOV output[1].xy, input[0].xyxx; 33: MOV temp[7], temp[1]; 34: MOV output[5].xy, temp[2].xyxx; 35: MOV output[4].xyz, input[3].xyzx; 36: MOV output[0], temp[7]; 37: MOV output[6], temp[7]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xyw, const[3].xy_w, input[7].xx_x; 1: MAD temp[0].xyw, const[4].xy_w, input[7].yy_y, temp[0].xy_w; 2: MAD temp[0].xyw, const[5].xy_w, input[7].zz_z, temp[0].xy_w; 3: ADD temp[0].xyw, temp[0].xy_w, const[6].xy_w; 4: RCP temp[1].x, temp[0].w___; 5: MUL temp[0].xy, temp[0].xy__, temp[1].xx__; 6: MOV temp[1].z, input[2].__x_; 7: MOV temp[1].w, const[8].___x; 8: MUL temp[2].xy, input[4].xy__, const[8].yy__; 9: MUL temp[3].xy, input[4].zw__, const[8].yy__; 10: MUL temp[4].xy, const[7].xy__, const[8].yy__; 11: MUL temp[5].xy, const[7].xy__, const[8].yy__; 12: FRC temp[5].xy, temp[5].xy__; 13: MUL temp[6].xy, const[0].xy__, input[6].xx__; 14: MAD temp[6].xy, const[1].xy__, input[6].yy__, temp[6].xy__; 15: ADD temp[6].xy, temp[6].xy__, input[5].xy__; 16: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 17: MUL temp[0].xy, temp[4].xy__, temp[0].xy__; 18: MAD temp[0].xy, temp[6].xy__, const[8].xz__, temp[0].xy__; 19: ADD temp[6].xy, temp[0].xy__, const[8].yy__; 20: ADD temp[6].xy, temp[6].xy__, -temp[5].xy__; 21: FRC temp[8].xy, temp[6].xy__; 22: ADD temp[6].xy, temp[6].xy__, -temp[8].xy__; 23: ADD temp[5].xy, temp[6].xy__, temp[5].xy__; 24: ADD temp[6].x, const[8].x___, -const[2].x___; 25: ADD temp[0].xy, temp[0].xy__, -temp[5].xy__; 26: MAD temp[0].xy, temp[6].xx__, temp[0].xy__, temp[5].xy__; 27: RCP temp[5].x, temp[4].x___; 28: RCP temp[5].y, temp[4]._y__; 29: MUL temp[1].xy, temp[0].xy__, temp[5].xy__; 30: MOV output[3].xy, temp[3].xy__; 31: MOV output[2].xy, input[1].xy__; 32: MOV output[1].xy, input[0].xy__; 33: MOV temp[7], temp[1]; 34: MOV output[5].xy, temp[2].xy__; 35: MOV output[4].xyz, input[3].xyz_; 36: MOV output[0], temp[7]; 37: MOV output[6], temp[7]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0].xyw, const[3].xy_w, input[7].xx_x; 1: MAD temp[0].xyw, const[4].xy_w, input[7].yy_y, temp[0].xy_w; 2: MAD temp[0].xyw, const[5].xy_w, input[7].zz_z, temp[0].xy_w; 3: ADD temp[0].xyw, temp[0].xy_w, const[6].xy_w; 4: RCP temp[1].x, temp[0].w___; 5: MUL temp[0].xy, temp[0].xy__, temp[1].xx__; 6: MOV temp[1].z, input[2].__x_; 7: MOV temp[1].w, none.___1; 8: MUL temp[2].xy, input[4].xy__, const[8].yy__; 9: MUL temp[3].xy, input[4].zw__, const[8].yy__; 10: MUL temp[4].xy, const[7].xy__, const[8].yy__; 11: MUL temp[5].xy, const[7].xy__, const[8].yy__; 12: FRC temp[5].xy, temp[5].xy__; 13: MUL temp[6].xy, const[0].xy__, input[6].xx__; 14: MAD temp[6].xy, const[1].xy__, input[6].yy__, temp[6].xy__; 15: ADD temp[6].xy, temp[6].xy__, input[5].xy__; 16: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 17: MUL temp[0].xy, temp[4].xy__, temp[0].xy__; 18: MAD temp[0].xy, temp[6].xy__, none.1-1__, temp[0].xy__; 19: ADD temp[6].xy, temp[0].xy__, const[8].yy__; 20: ADD temp[6].xy, temp[6].xy__, -temp[5].xy__; 21: FRC temp[8].xy, temp[6].xy__; 22: ADD temp[6].xy, temp[6].xy__, -temp[8].xy__; 23: ADD temp[5].xy, temp[6].xy__, temp[5].xy__; 24: ADD temp[6].x, none.1___, -const[2].x___; 25: ADD temp[0].xy, temp[0].xy__, -temp[5].xy__; 26: MAD temp[0].xy, temp[6].xx__, temp[0].xy__, temp[5].xy__; 27: RCP temp[5].x, temp[4].x___; 28: RCP temp[5].y, temp[4]._y__; 29: MUL temp[1].xy, temp[0].xy__, temp[5].xy__; 30: MOV output[3].xy, temp[3].xy__; 31: MOV output[2].xy, input[1].xy__; 32: MOV output[1].xy, input[0].xy__; 33: MOV output[5].xy, temp[2].xy__; 34: MOV output[4].xyz, input[3].xyz_; 35: MOV output[0], temp[1]; 36: MOV output[6], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0].xyw, const[3].xy_w, input[7].xx_x; 1: MAD temp[0].xyw, const[4].xy_w, input[7].yy_y, temp[0].xy_w; 2: MAD temp[0].xyw, const[5].xy_w, input[7].zz_z, temp[0].xy_w; 3: ADD temp[0].xyw, temp[0].xy_w, const[6].xy_w; 4: RCP temp[1].x, temp[0].w___; 5: MUL temp[0].xy, temp[0].xy__, temp[1].xx__; 6: MOV temp[1].z, input[2].__x_; 7: MOV temp[1].w, none.___1; 8: MUL temp[2].xy, input[4].xy__, const[8].yy__; 9: MUL temp[3].xy, input[4].zw__, const[8].yy__; 10: MOV temp[7], const[8].yy__; 11: MUL temp[4].xy, const[7].xy__, temp[7]; 12: MOV temp[9], const[8].yy__; 13: MUL temp[5].xy, const[7].xy__, temp[9]; 14: FRC temp[5].xy, temp[5].xy__; 15: MUL temp[6].xy, const[0].xy__, input[6].xx__; 16: MAD temp[6].xy, const[1].xy__, input[6].yy__, temp[6].xy__; 17: ADD temp[6].xy, temp[6].xy__, input[5].xy__; 18: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 19: MUL temp[0].xy, temp[4].xy__, temp[0].xy__; 20: MAD temp[0].xy, temp[6].xy__, none.1-1__, temp[0].xy__; 21: ADD temp[6].xy, temp[0].xy__, const[8].yy__; 22: ADD temp[6].xy, temp[6].xy__, -temp[5].xy__; 23: FRC temp[8].xy, temp[6].xy__; 24: ADD temp[6].xy, temp[6].xy__, -temp[8].xy__; 25: ADD temp[5].xy, temp[6].xy__, temp[5].xy__; 26: ADD temp[6].x, none.1___, -const[2].x___; 27: ADD temp[0].xy, temp[0].xy__, -temp[5].xy__; 28: MAD temp[0].xy, temp[6].xx__, temp[0].xy__, temp[5].xy__; 29: RCP temp[5].x, temp[4].x___; 30: RCP temp[5].y, temp[4]._y__; 31: MUL temp[1].xy, temp[0].xy__, temp[5].xy__; 32: MOV output[3].xy, temp[3].xy__; 33: MOV output[2].xy, input[1].xy__; 34: MOV output[1].xy, input[0].xy__; 35: MOV output[5].xy, temp[2].xy__; 36: MOV output[4].xyz, input[3].xyz_; 37: MOV output[0], temp[1]; 38: MOV output[6], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0].xyw, const[3].xy_w, input[7].xx_x; 1: MAD temp[0].xyw, const[4].xy_w, input[7].yy_y, temp[0].xy_w; 2: MAD temp[0].xyw, const[5].xy_w, input[7].zz_z, temp[0].xy_w; 3: ADD temp[0].xyw, temp[0].xy_w, const[6].xy_w; 4: RCP temp[1].x, temp[0].w___; 5: MUL temp[0].xy, temp[0].xy__, temp[1].xx__; 6: MOV temp[1].z, input[2].__x_; 7: MOV temp[1].w, none.___1; 8: MUL temp[2].xy, input[4].xy__, const[8].yy__; 9: MUL temp[3].xy, input[4].zw__, const[8].yy__; 10: MOV temp[4], const[8].yy__; 11: MUL temp[4].xy, const[7].xy__, temp[4]; 12: MOV temp[5], const[8].yy__; 13: MUL temp[5].xy, const[7].xy__, temp[5]; 14: FRC temp[5].xy, temp[5].xy__; 15: MUL temp[6].xy, const[0].xy__, input[6].xx__; 16: MAD temp[6].xy, const[1].xy__, input[6].yy__, temp[6].xy__; 17: ADD temp[6].xy, temp[6].xy__, input[5].xy__; 18: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 19: MUL temp[0].xy, temp[4].xy__, temp[0].xy__; 20: MAD temp[0].xy, temp[6].xy__, none.1-1__, temp[0].xy__; 21: ADD temp[6].xy, temp[0].xy__, const[8].yy__; 22: ADD temp[6].xy, temp[6].xy__, -temp[5].xy__; 23: FRC temp[7].xy, temp[6].xy__; 24: ADD temp[6].xy, temp[6].xy__, -temp[7].xy__; 25: ADD temp[5].xy, temp[6].xy__, temp[5].xy__; 26: ADD temp[6].x, none.1___, -const[2].x___; 27: ADD temp[0].xy, temp[0].xy__, -temp[5].xy__; 28: MAD temp[0].xy, temp[6].xx__, temp[0].xy__, temp[5].xy__; 29: RCP temp[5].x, temp[4].x___; 30: RCP temp[5].y, temp[4]._y__; 31: MUL temp[1].xy, temp[0].xy__, temp[5].xy__; 32: MOV output[3].xy, temp[3].xy__; 33: MOV output[2].xy, input[1].xy__; 34: MOV output[1].xy, input[0].xy__; 35: MOV output[5].xy, temp[2].xy__; 36: MOV output[4].xyz, input[3].xyz_; 37: MOV output[0], temp[1]; 38: MOV output[6], temp[1]; CONST[8] = { 1.0000 0.5000 -1.0000 0.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0].xyw, const[3].xy_w, input[7].xx_x; 1: MAD temp[0].xyw, const[4].xy_w, input[7].yy_y, temp[0].xy_w; 2: MAD temp[0].xyw, const[5].xy_w, input[7].zz_z, temp[0].xy_w; 3: ADD temp[0].xyw, temp[0].xy_w, const[6].xy_w; 4: RCP temp[1].x, temp[0].w___; 5: MUL temp[0].xy, temp[0].xy__, temp[1].xx__; 6: MOV temp[1].z, input[2].__x_; 7: MOV temp[1].w, none.___1; 8: MUL temp[2].xy, input[4].xy__, const[8].yy__; 9: MUL temp[3].xy, input[4].zw__, const[8].yy__; 10: MOV temp[4], const[8].yy__; 11: MUL temp[4].xy, const[7].xy__, temp[4]; 12: MOV temp[5], const[8].yy__; 13: MUL temp[5].xy, const[7].xy__, temp[5]; 14: FRC temp[5].xy, temp[5].xy__; 15: MUL temp[6].xy, const[0].xy__, input[6].xx__; 16: MAD temp[6].xy, const[1].xy__, input[6].yy__, temp[6].xy__; 17: ADD temp[6].xy, temp[6].xy__, input[5].xy__; 18: ADD temp[6].xy, temp[6].xy__, input[0].xy__; 19: MUL temp[0].xy, temp[4].xy__, temp[0].xy__; 20: MAD temp[0].xy, temp[6].xy__, none.1-1__, temp[0].xy__; 21: ADD temp[6].xy, temp[0].xy__, const[8].yy__; 22: ADD temp[6].xy, temp[6].xy__, -temp[5].xy__; 23: FRC temp[7].xy, temp[6].xy__; 24: ADD temp[6].xy, temp[6].xy__, -temp[7].xy__; 25: ADD temp[5].xy, temp[6].xy__, temp[5].xy__; 26: ADD temp[6].x, none.1___, -const[2].x___; 27: ADD temp[0].xy, temp[0].xy__, -temp[5].xy__; 28: MAD temp[0].xy, temp[6].xx__, temp[0].xy__, temp[5].xy__; 29: RCP temp[5].x, temp[4].x___; 30: RCP temp[5].y, temp[4]._y__; 31: MUL temp[1].xy, temp[0].xy__, temp[5].xy__; 32: MOV output[3].xy, temp[3].xy__; 33: MOV output[2].xy, input[1].xy__; 34: MOV output[1].xy, input[0].xy__; 35: MOV output[5].xy, temp[2].xy__; 36: MOV output[4].xyz, input[3].xyz_; 37: MOV output[0], temp[1]; 38: MOV output[6], temp[1]; Final vertex program code: 0: op: 0x00b00002 dst: 0t op: VE_MULTIPLY src0: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src1: 0x003800e1 reg: 7i swiz: X/ X/ U/ X src2: 0x012480e1 reg: 7i swiz: 0/ 0/ 0/ 0 1: op: 0x00b00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00f90082 reg: 4c swiz: X/ Y/ U/ W src1: 0x007920e1 reg: 7i swiz: Y/ Y/ U/ Y src2: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W 2: op: 0x00b00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00f900a2 reg: 5c swiz: X/ Y/ U/ W src1: 0x00ba40e1 reg: 7i swiz: Z/ Z/ U/ Z src2: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W 3: op: 0x00b00003 dst: 0t op: VE_ADD src0: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W src1: 0x00f900c2 reg: 6c swiz: X/ Y/ U/ W src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 4: op: 0x00102046 dst: 1t op: ME_RECIP_DX src0: 0x00db6000 reg: 0t swiz: W/ W/ W/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 5: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f80020 reg: 1t swiz: X/ X/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 6: op: 0x00402003 dst: 1t op: VE_ADD src0: 0x01c7e041 reg: 2i swiz: U/ U/ X/ U src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 7: op: 0x00802003 dst: 1t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 8: op: 0x00304002 dst: 2t op: VE_MULTIPLY src0: 0x01f90081 reg: 4i swiz: X/ Y/ U/ U src1: 0x01f92102 reg: 8c swiz: Y/ Y/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 9: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01fb4081 reg: 4i swiz: Z/ W/ U/ U src1: 0x01f92102 reg: 8c swiz: Y/ Y/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 10: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x01f92102 reg: 8c swiz: Y/ Y/ U/ U src1: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 11: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f900e2 reg: 7c swiz: X/ Y/ U/ U src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 12: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x01f92102 reg: 8c swiz: Y/ Y/ U/ U src1: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 13: op: 0x0030a002 dst: 5t op: VE_MULTIPLY src0: 0x01f900e2 reg: 7c swiz: X/ Y/ U/ U src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 14: op: 0x0030a006 dst: 5t op: VE_FRACTION src0: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 15: op: 0x0030c002 dst: 6t op: VE_MULTIPLY src0: 0x01f90002 reg: 0c swiz: X/ Y/ U/ U src1: 0x01f800c1 reg: 6i swiz: X/ X/ U/ U src2: 0x012480c1 reg: 6i swiz: 0/ 0/ 0/ 0 16: op: 0x0030c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01f90022 reg: 1c swiz: X/ Y/ U/ U src1: 0x01f920c1 reg: 6i swiz: Y/ Y/ U/ U src2: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U 17: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f900a1 reg: 5i swiz: X/ Y/ U/ U src2: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 18: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 19: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 20: op: 0x00300004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x05fda0c0 reg: 6t swiz: 1/-1/ U/ U src2: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U 21: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f92102 reg: 8c swiz: Y/ Y/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 22: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x1ff900a0 reg: 5t swiz: -X/-Y/-U/-U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0030e006 dst: 7t op: VE_FRACTION src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 24: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x1ff900e0 reg: 7t swiz: -X/-Y/-U/-U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 25: op: 0x0030a003 dst: 5t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 26: op: 0x0010c003 dst: 6t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0042 reg: 2c swiz: -X/-U/-U/-U src2: 0x01248042 reg: 2c swiz: 0/ 0/ 0/ 0 27: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x1ff900a0 reg: 5t swiz: -X/-Y/-U/-U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 28: op: 0x00300080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f800c0 reg: 6t swiz: X/ X/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U 29: op: 0x0010a046 dst: 5t op: ME_RECIP_DX src0: 0x00000080 reg: 4t swiz: X/ X/ X/ X src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 30: op: 0x0020a046 dst: 5t op: ME_RECIP_DX src0: 0x00492080 reg: 4t swiz: Y/ Y/ Y/ Y src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 31: op: 0x00302002 dst: 1t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 32: op: 0x00306203 dst: 3o op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 33: op: 0x00304203 dst: 2o op: VE_ADD src0: 0x01f90021 reg: 1i swiz: X/ Y/ U/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 34: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 35: op: 0x0030a203 dst: 5o op: VE_ADD src0: 0x01f90040 reg: 2t swiz: X/ Y/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 36: op: 0x00708203 dst: 4o op: VE_ADD src0: 0x01d10061 reg: 3i swiz: X/ Y/ Z/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 37: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 38: op: 0x00f0c203 dst: 6o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL IN[4], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[3..5] 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 FLT32 { 0.5000, 26.0000, 25.5000, 1.9922} IMM FLT32 { 0.0000, 1.0000, 255.0000, 16.0000} IMM FLT32 { 0.0625, -1023.0000, 0.0100, 1.0323} IMM FLT32 { 0.0312, 0.0000, 0.0000, 0.0000} 0: ADD TEMP[0].x, IN[3].yyyy, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[5].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: MAD TEMP[0].x, IMM[0].yyyy, TEMP[0].xxxx, IMM[0].zzzz 6: RCP TEMP[2].x, CONST[5].yyyy 7: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 8: MOV TEMP[1].y, TEMP[0].xxxx 9: TEX TEMP[0].xy, TEMP[1].xyyy, SAMP[2], 2D 10: MUL TEMP[1].x, IMM[0].wwww, TEMP[0].xxxx 11: ABS TEMP[2].x, IN[1].xxxx 12: ABS TEMP[3].x, IN[1].yyyy 13: MAX TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 14: SLT TEMP[2].x, TEMP[2].xxxx, TEMP[1].xxxx 15: ADD TEMP[2].x, -TEMP[2].xxxx, IMM[1].yyyy 16: CMP TEMP[0].x, -TEMP[2].xxxx, IMM[1].xxxx, TEMP[0].yyyy 17: ADD TEMP[2].x, IN[3].zzzz, IMM[0].xxxx 18: RCP TEMP[3].x, CONST[4].xxxx 19: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 20: FRC TEMP[3].x, TEMP[2].xxxx 21: FLR TEMP[2].x, TEMP[2].xxxx 22: ADD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 23: RCP TEMP[4].x, CONST[4].yyyy 24: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[4].xxxx 25: MOV TEMP[3].y, TEMP[2].xxxx 26: TEX TEMP[2], TEMP[3].xyyy, SAMP[1], 2D 27: MAD TEMP[2], IMM[1].zzzz, TEMP[2], IMM[0].xxxx 28: FLR TEMP[2], TEMP[2] 29: MUL TEMP[3].x, TEMP[2].wwww, IMM[2].xxxx 30: FLR TEMP[3].x, TEMP[3].xxxx 31: MAD TEMP[3].x, TEMP[2].yyyy, IMM[1].wwww, TEMP[3].xxxx 32: MAD TEMP[3].x, TEMP[3].xxxx, IMM[0].xxxx, IMM[2].yyyy 33: MUL TEMP[4].x, TEMP[2].wwww, IMM[2].xxxx 34: FRC TEMP[4].x, TEMP[4].xxxx 35: MUL TEMP[5].x, TEMP[2].zzzz, IMM[1].wwww 36: MAD TEMP[4].x, IMM[1].wwww, TEMP[4].xxxx, TEMP[5].xxxx 37: MAD TEMP[4].x, TEMP[4].xxxx, IMM[0].xxxx, IMM[2].yyyy 38: MOV TEMP[3].y, TEMP[4].xxxx 39: ADD TEMP[3].xy, IN[0].xyyy, -TEMP[3].xyyy 40: DP2 TEMP[4].x, TEMP[3].xyyy, TEMP[3].xyyy 41: SGE TEMP[4].x, TEMP[4].xxxx, IMM[2].zzzz 42: CMP TEMP[3].x, -TEMP[4].xxxx, IMM[1].yyyy, IMM[1].xxxx 43: KIL -TEMP[3].xxxx 44: RCP TEMP[1].x, TEMP[1].xxxx 45: MAD TEMP[1].xy, IN[2].xyyy, TEMP[1].xxxx, IN[4].xyyy 46: RCP TEMP[3].x, CONST[3].xxxx 47: RCP TEMP[3].y, CONST[3].yyyy 48: MUL TEMP[1].xy, TEMP[1].xyyy, TEMP[3].xyyy 49: TEX TEMP[1], TEMP[1].xyyy, SAMP[0], 2D 50: MUL TEMP[2].x, TEMP[2].xxxx, IMM[3].xxxx 51: FRC TEMP[2].x, TEMP[2].xxxx 52: MUL TEMP[2].x, IMM[2].wwww, TEMP[2].xxxx 53: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 54: MUL TEMP[0], TEMP[1], TEMP[0].xxxx 55: SEQ TEMP[2].x, TEMP[0].wwww, IMM[1].xxxx 56: CMP TEMP[1].x, -TEMP[2].xxxx, IMM[1].yyyy, IMM[1].xxxx 57: KIL -TEMP[1].xxxx 58: MOV OUT[0], TEMP[0] 59: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0].xy, temp[1].xyyy, 2D[2]; 10: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 11: ABS temp[2].x, input[1].xxxx; 12: ABS temp[3].x, input[1].yyyy; 13: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 15: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 16: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 17: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 18: RCP temp[3].x, const[4].xxxx; 19: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 20: FRC temp[3].x, temp[2].xxxx; 21: FLR temp[2].x, temp[2].xxxx; 22: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 23: RCP temp[4].x, const[4].yyyy; 24: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 25: MOV temp[3].y, temp[2].xxxx; 26: TEX temp[2], temp[3].xyyy, 2D[1]; 27: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 28: FLR temp[2], temp[2]; 29: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 30: FLR temp[3].x, temp[3].xxxx; 31: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 32: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 33: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 34: FRC temp[4].x, temp[4].xxxx; 35: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 36: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 37: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 38: MOV temp[3].y, temp[4].xxxx; 39: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 40: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 41: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 42: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 43: KIL -temp[3].xxxx; 44: RCP temp[1].x, temp[1].xxxx; 45: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 46: RCP temp[3].x, const[3].xxxx; 47: RCP temp[3].y, const[3].yyyy; 48: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 49: TEX temp[1], temp[1].xyyy, 2D[0]; 50: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 51: FRC temp[2].x, temp[2].xxxx; 52: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 54: MUL temp[0], temp[1], temp[0].xxxx; 55: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 56: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 57: KIL -temp[1].xxxx; 58: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0].xy, temp[1].xyyy, 2D[2]; 10: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 11: ABS temp[2].x, input[1].xxxx; 12: ABS temp[3].x, input[1].yyyy; 13: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 15: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 16: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 17: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 18: RCP temp[3].x, const[4].xxxx; 19: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 20: FRC temp[3].x, temp[2].xxxx; 21: FLR temp[2].x, temp[2].xxxx; 22: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 23: RCP temp[4].x, const[4].yyyy; 24: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 25: MOV temp[3].y, temp[2].xxxx; 26: TEX temp[2], temp[3].xyyy, 2D[1]; 27: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 28: FLR temp[2], temp[2]; 29: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 30: FLR temp[3].x, temp[3].xxxx; 31: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 32: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 33: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 34: FRC temp[4].x, temp[4].xxxx; 35: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 36: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 37: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 38: MOV temp[3].y, temp[4].xxxx; 39: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 40: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 41: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 42: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 43: KIL -temp[3].xxxx; 44: RCP temp[1].x, temp[1].xxxx; 45: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 46: RCP temp[3].x, const[3].xxxx; 47: RCP temp[3].y, const[3].yyyy; 48: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 49: TEX temp[1], temp[1].xyyy, 2D[0]; 50: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 51: FRC temp[2].x, temp[2].xxxx; 52: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 54: MUL temp[0], temp[1], temp[0].xxxx; 55: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 56: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 57: KIL -temp[1].xxxx; 58: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0].xy, temp[1].xyyy, 2D[2]; 10: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 11: ABS temp[2].x, input[1].xxxx; 12: ABS temp[3].x, input[1].yyyy; 13: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 15: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 16: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 17: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 18: RCP temp[3].x, const[4].xxxx; 19: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 20: FRC temp[3].x, temp[2].xxxx; 21: FLR temp[2].x, temp[2].xxxx; 22: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 23: RCP temp[4].x, const[4].yyyy; 24: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 25: MOV temp[3].y, temp[2].xxxx; 26: TEX temp[2], temp[3].xyyy, 2D[1]; 27: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 28: FLR temp[2], temp[2]; 29: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 30: FLR temp[3].x, temp[3].xxxx; 31: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 32: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 33: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 34: FRC temp[4].x, temp[4].xxxx; 35: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 36: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 37: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 38: MOV temp[3].y, temp[4].xxxx; 39: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 40: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 41: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 42: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 43: KIL -temp[3].xxxx; 44: RCP temp[1].x, temp[1].xxxx; 45: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 46: RCP temp[3].x, const[3].xxxx; 47: RCP temp[3].y, const[3].yyyy; 48: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 49: TEX temp[1], temp[1].xyyy, 2D[0]; 50: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 51: FRC temp[2].x, temp[2].xxxx; 52: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 54: MUL temp[0], temp[1], temp[0].xxxx; 55: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 56: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 57: KIL -temp[1].xxxx; 58: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0].xy, temp[1].xyyy, 2D[2]; 10: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 11: ABS temp[2].x, input[1].xxxx; 12: ABS temp[3].x, input[1].yyyy; 13: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 15: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 16: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 17: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 18: RCP temp[3].x, const[4].xxxx; 19: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 20: FRC temp[3].x, temp[2].xxxx; 21: FLR temp[2].x, temp[2].xxxx; 22: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 23: RCP temp[4].x, const[4].yyyy; 24: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 25: MOV temp[3].y, temp[2].xxxx; 26: TEX temp[2], temp[3].xyyy, 2D[1]; 27: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 28: FLR temp[2], temp[2]; 29: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 30: FLR temp[3].x, temp[3].xxxx; 31: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 32: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 33: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 34: FRC temp[4].x, temp[4].xxxx; 35: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 36: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 37: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 38: MOV temp[3].y, temp[4].xxxx; 39: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 40: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 41: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 42: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 43: KIL -temp[3].xxxx; 44: RCP temp[1].x, temp[1].xxxx; 45: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 46: RCP temp[3].x, const[3].xxxx; 47: RCP temp[3].y, const[3].yyyy; 48: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 49: TEX temp[1], temp[1].xyyy, 2D[0]; 50: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 51: FRC temp[2].x, temp[2].xxxx; 52: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 54: MUL temp[0], temp[1], temp[0].xxxx; 55: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 56: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 57: KIL -temp[1].xxxx; 58: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[0].xy, temp[1].xyyy, 2D[2]; 10: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 11: ABS temp[2].x, input[1].xxxx; 12: ABS temp[3].x, input[1].yyyy; 13: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 14: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 15: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 16: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 17: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 18: RCP temp[3].x, const[4].xxxx; 19: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 20: FRC temp[3].x, temp[2].xxxx; 21: FLR temp[2].x, temp[2].xxxx; 22: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 23: RCP temp[4].x, const[4].yyyy; 24: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 25: MOV temp[3].y, temp[2].xxxx; 26: TEX temp[2], temp[3].xyyy, 2D[1]; 27: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 28: FLR temp[2], temp[2]; 29: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 30: FLR temp[3].x, temp[3].xxxx; 31: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 32: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 33: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 34: FRC temp[4].x, temp[4].xxxx; 35: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 36: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 37: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 38: MOV temp[3].y, temp[4].xxxx; 39: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 40: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 41: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 42: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 43: KIL -temp[3].xxxx; 44: RCP temp[1].x, temp[1].xxxx; 45: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 46: RCP temp[3].x, const[3].xxxx; 47: RCP temp[3].y, const[3].yyyy; 48: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 49: TEX temp[1], temp[1].xyyy, 2D[0]; 50: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 51: FRC temp[2].x, temp[2].xxxx; 52: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 53: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 54: MUL temp[0], temp[1], temp[0].xxxx; 55: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 56: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 57: KIL -temp[1].xxxx; 58: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 6: RCP temp[2].x, const[5].yyyy; 7: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 8: MOV temp[1].y, temp[0].xxxx; 9: TEX temp[6], temp[1].xyyy, 2D[2]; 10: MOV temp[0].xy, temp[6]; 11: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 12: ABS temp[2].x, input[1].xxxx; 13: ABS temp[3].x, input[1].yyyy; 14: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 15: SLT temp[2].x, temp[2].xxxx, temp[1].xxxx; 16: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 17: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 18: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 19: RCP temp[3].x, const[4].xxxx; 20: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 21: FRC temp[3].x, temp[2].xxxx; 22: FLR temp[2].x, temp[2].xxxx; 23: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 24: RCP temp[4].x, const[4].yyyy; 25: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 26: MOV temp[3].y, temp[2].xxxx; 27: TEX temp[2], temp[3].xyyy, 2D[1]; 28: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 29: FLR temp[2], temp[2]; 30: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 31: FLR temp[3].x, temp[3].xxxx; 32: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 33: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 34: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 35: FRC temp[4].x, temp[4].xxxx; 36: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 37: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 38: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 39: MOV temp[3].y, temp[4].xxxx; 40: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 41: DP2 temp[4].x, temp[3].xyyy, temp[3].xyyy; 42: SGE temp[4].x, temp[4].xxxx, const[8].zzzz; 43: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 44: KIL -temp[3].xxxx; 45: RCP temp[1].x, temp[1].xxxx; 46: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 47: RCP temp[3].x, const[3].xxxx; 48: RCP temp[3].y, const[3].yyyy; 49: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 50: TEX temp[1], temp[1].xyyy, 2D[0]; 51: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 52: FRC temp[2].x, temp[2].xxxx; 53: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 54: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 55: MUL temp[0], temp[1], temp[0].xxxx; 56: SEQ temp[2].x, temp[0].wwww, const[7].xxxx; 57: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 58: KIL -temp[1].xxxx; 59: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[3].yyyy, const[6].xxxx; 1: RCP temp[1].x, const[5].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[7].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[7]; 6: MAD temp[0].x, const[6].yyyy, temp[0].xxxx, const[6].zzzz; 7: RCP temp[2].x, const[5].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[6], temp[1].xyyy, 2D[2]; 11: MOV temp[0].xy, temp[6]; 12: MUL temp[1].x, const[6].wwww, temp[0].xxxx; 13: MOV temp[2].x, |input[1].xxxx|; 14: MOV temp[3].x, |input[1].yyyy|; 15: MAX temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[8].x, temp[2].xxxx, -temp[1].xxxx; 17: CMP temp[2].x, temp[8], none.1111, none.0000; 18: ADD temp[2].x, -temp[2].xxxx, const[7].yyyy; 19: CMP temp[0].x, -temp[2].xxxx, const[7].xxxx, temp[0].yyyy; 20: ADD temp[2].x, input[3].zzzz, const[6].xxxx; 21: RCP temp[3].x, const[4].xxxx; 22: MUL temp[2].x, temp[2].xxxx, temp[3].xxxx; 23: FRC temp[3].x, temp[2].xxxx; 24: FRC temp[9].x, temp[2].xxxx; 25: ADD temp[2].x, temp[2].xxxx, -temp[9]; 26: ADD temp[2].x, temp[2].xxxx, const[6].xxxx; 27: RCP temp[4].x, const[4].yyyy; 28: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 29: MOV temp[3].y, temp[2].xxxx; 30: TEX temp[2], temp[3].xyyy, 2D[1]; 31: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 32: FRC temp[10], temp[2]; 33: ADD temp[2], temp[2], -temp[10]; 34: MUL temp[3].x, temp[2].wwww, const[8].xxxx; 35: FRC temp[11].x, temp[3].xxxx; 36: ADD temp[3].x, temp[3].xxxx, -temp[11]; 37: MAD temp[3].x, temp[2].yyyy, const[7].wwww, temp[3].xxxx; 38: MAD temp[3].x, temp[3].xxxx, const[6].xxxx, const[8].yyyy; 39: MUL temp[4].x, temp[2].wwww, const[8].xxxx; 40: FRC temp[4].x, temp[4].xxxx; 41: MUL temp[5].x, temp[2].zzzz, const[7].wwww; 42: MAD temp[4].x, const[7].wwww, temp[4].xxxx, temp[5].xxxx; 43: MAD temp[4].x, temp[4].xxxx, const[6].xxxx, const[8].yyyy; 44: MOV temp[3].y, temp[4].xxxx; 45: ADD temp[3].xy, input[0].xyyy, -temp[3].xyyy; 46: DP3 temp[4].x, temp[3].xy00, temp[3].xy00; 47: ADD temp[12].x, temp[4].xxxx, -const[8].zzzz; 48: CMP temp[4].x, temp[12], none.0000, none.1111; 49: CMP temp[3].x, -temp[4].xxxx, const[7].yyyy, const[7].xxxx; 50: KIL -temp[3].xxxx; 51: RCP temp[1].x, temp[1].xxxx; 52: MAD temp[1].xy, input[2].xyyy, temp[1].xxxx, input[4].xyyy; 53: RCP temp[3].x, const[3].xxxx; 54: RCP temp[3].y, const[3].yyyy; 55: MUL temp[1].xy, temp[1].xyyy, temp[3].xyyy; 56: TEX temp[1], temp[1].xyyy, 2D[0]; 57: MUL temp[2].x, temp[2].xxxx, const[9].xxxx; 58: FRC temp[2].x, temp[2].xxxx; 59: MUL temp[2].x, const[8].wwww, temp[2].xxxx; 60: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 61: MUL temp[0], temp[1], temp[0].xxxx; 62: ADD temp[2].x, temp[0].wwww, -const[7].xxxx; 63: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 64: CMP temp[1].x, -temp[2].xxxx, const[7].yyyy, const[7].xxxx; 65: KIL -temp[1].xxxx; 66: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[3].y___, const[6].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[7].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[7].x___; 6: MAD temp[0].x, const[6].y___, temp[0].x___, const[6].z___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[6].xy, temp[1].xy__, 2D[2]; 11: MOV temp[0].xy, temp[6].xy__; 12: MUL temp[1].x, const[6].w___, temp[0].x___; 13: MOV temp[2].x, |input[1].x___|; 14: MOV temp[3].x, |input[1].y___|; 15: MAX temp[2].x, temp[2].x___, temp[3].x___; 16: ADD temp[8].x, temp[2].x___, -temp[1].x___; 17: CMP temp[2].x, temp[8].x___, none.1___, none.0___; 18: ADD temp[2].x, -temp[2].x___, const[7].y___; 19: CMP temp[0].x, -temp[2].x___, const[7].x___, temp[0].y___; 20: ADD temp[2].x, input[3].z___, const[6].x___; 21: RCP temp[3].x, const[4].x___; 22: MUL temp[2].x, temp[2].x___, temp[3].x___; 23: FRC temp[3].x, temp[2].x___; 24: FRC temp[9].x, temp[2].x___; 25: ADD temp[2].x, temp[2].x___, -temp[9].x___; 26: ADD temp[2].x, temp[2].x___, const[6].x___; 27: RCP temp[4].x, const[4].y___; 28: MUL temp[2].x, temp[2].x___, temp[4].x___; 29: MOV temp[3].y, temp[2]._x__; 30: TEX temp[2], temp[3].xy__, 2D[1]; 31: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 32: FRC temp[10], temp[2]; 33: ADD temp[2], temp[2], -temp[10]; 34: MUL temp[3].x, temp[2].w___, const[8].x___; 35: FRC temp[11].x, temp[3].x___; 36: ADD temp[3].x, temp[3].x___, -temp[11].x___; 37: MAD temp[3].x, temp[2].y___, const[7].w___, temp[3].x___; 38: MAD temp[3].x, temp[3].x___, const[6].x___, const[8].y___; 39: MUL temp[4].x, temp[2].w___, const[8].x___; 40: FRC temp[4].x, temp[4].x___; 41: MUL temp[5].x, temp[2].z___, const[7].w___; 42: MAD temp[4].x, const[7].w___, temp[4].x___, temp[5].x___; 43: MAD temp[4].x, temp[4].x___, const[6].x___, const[8].y___; 44: MOV temp[3].y, temp[4]._x__; 45: ADD temp[3].xy, input[0].xy__, -temp[3].xy__; 46: DP3 temp[4].x, temp[3].xy0_, temp[3].xy0_; 47: ADD temp[12].x, temp[4].x___, -const[8].z___; 48: CMP temp[4].x, temp[12].x___, none.0___, none.1___; 49: CMP temp[3].x, -temp[4].x___, const[7].y___, const[7].x___; 50: KIL -temp[3].xxxx; 51: RCP temp[1].x, temp[1].x___; 52: MAD temp[1].xy, input[2].xy__, temp[1].xx__, input[4].xy__; 53: RCP temp[3].x, const[3].x___; 54: RCP temp[3].y, const[3]._y__; 55: MUL temp[1].xy, temp[1].xy__, temp[3].xy__; 56: TEX temp[1], temp[1].xy__, 2D[0]; 57: MUL temp[2].x, temp[2].x___, const[9].x___; 58: FRC temp[2].x, temp[2].x___; 59: MUL temp[2].x, const[8].w___, temp[2].x___; 60: MUL temp[0].x, temp[0].x___, temp[2].x___; 61: MUL temp[0], temp[1], temp[0].xxxx; 62: ADD temp[2].x, temp[0].w___, -const[7].x___; 63: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 64: CMP temp[1].x, -temp[2].x___, const[7].y___, const[7].x___; 65: KIL -temp[1].xxxx; 66: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[3].y___, const[6].x___; 1: RCP temp[1].x, const[5].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[7].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[7].x___; 6: MAD temp[0].x, const[6].y___, temp[0].x___, const[6].z___; 7: RCP temp[2].x, const[5].y___; 8: MUL temp[0].x, temp[0].x___, temp[2].x___; 9: MOV temp[1].y, temp[0]._x__; 10: TEX temp[6].xy, temp[1].xy__, 2D[2]; 11: MOV temp[0].xy, temp[6].xy__; 12: MUL temp[1].x, const[6].w___, temp[0].x___; 13: MOV temp[2].x, |input[1].x___|; 14: MOV temp[3].x, |input[1].y___|; 15: MAX temp[2].x, temp[2].x___, temp[3].x___; 16: ADD temp[8].x, temp[2].x___, -temp[1].x___; 17: CMP temp[2].x, temp[8].x___, none.1___, none.0___; 18: ADD temp[2].x, -temp[2].x___, const[7].y___; 19: CMP temp[0].x, -temp[2].x___, const[7].x___, temp[0].y___; 20: ADD temp[2].x, input[3].z___, const[6].x___; 21: RCP temp[3].x, const[4].x___; 22: MUL temp[2].x, temp[2].x___, temp[3].x___; 23: FRC temp[3].x, temp[2].x___; 24: FRC temp[9].x, temp[2].x___; 25: ADD temp[2].x, temp[2].x___, -temp[9].x___; 26: ADD temp[2].x, temp[2].x___, const[6].x___; 27: RCP temp[4].x, const[4].y___; 28: MUL temp[2].x, temp[2].x___, temp[4].x___; 29: MOV temp[3].y, temp[2]._x__; 30: TEX temp[2], temp[3].xy__, 2D[1]; 31: MAD temp[2], const[7].zzzz, temp[2], const[6].xxxx; 32: FRC temp[10], temp[2]; 33: ADD temp[2], temp[2], -temp[10]; 34: MUL temp[3].x, temp[2].w___, const[8].x___; 35: FRC temp[11].x, temp[3].x___; 36: ADD temp[3].x, temp[3].x___, -temp[11].x___; 37: MAD temp[3].x, temp[2].y___, const[7].w___, temp[3].x___; 38: MAD temp[3].x, temp[3].x___, const[6].x___, const[8].y___; 39: MUL temp[4].x, temp[2].w___, const[8].x___; 40: FRC temp[4].x, temp[4].x___; 41: MUL temp[5].x, temp[2].z___, const[7].w___; 42: MAD temp[4].x, const[7].w___, temp[4].x___, temp[5].x___; 43: MAD temp[4].x, temp[4].x___, const[6].x___, const[8].y___; 44: MOV temp[3].y, temp[4]._x__; 45: ADD temp[3].xy, input[0].xy__, -temp[3].xy__; 46: DP3 temp[4].x, temp[3].xy0_, temp[3].xy0_; 47: ADD temp[12].x, temp[4].x___, -const[8].z___; 48: CMP temp[4].x, temp[12].x___, none.0___, none.1___; 49: CMP temp[3].x, -temp[4].x___, const[7].y___, const[7].x___; 50: KIL -temp[3].xxxx; 51: RCP temp[1].x, temp[1].x___; 52: MAD temp[1].xy, input[2].xy__, temp[1].xx__, input[4].xy__; 53: RCP temp[3].x, const[3].x___; 54: RCP temp[3].y, const[3]._y__; 55: MUL temp[1].xy, temp[1].xy__, temp[3].xy__; 56: TEX temp[1], temp[1].xy__, 2D[0]; 57: MUL temp[2].x, temp[2].x___, const[9].x___; 58: FRC temp[2].x, temp[2].x___; 59: MUL temp[2].x, const[8].w___, temp[2].x___; 60: MUL temp[0].x, temp[0].x___, temp[2].x___; 61: MUL temp[0], temp[1], temp[0].xxxx; 62: ADD temp[2].x, temp[0].w___, -const[7].x___; 63: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 64: CMP temp[1].x, -temp[2].x___, const[7].y___, const[7].x___; 65: KIL -temp[1].xxxx; 66: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[13].x, input[3].y___, const[6].x___; 1: RCP temp[14].x, const[5].x___; 2: MUL temp[15].x, temp[13].x___, temp[14].x___; 3: FRC temp[16].x, temp[15].x___; 4: FRC temp[17].x, temp[15].x___; 5: ADD temp[18].x, temp[15].x___, -temp[17].x___; 6: MAD temp[19].x, const[6].y___, temp[18].x___, const[6].z___; 7: RCP temp[20].x, const[5].y___; 8: MUL temp[21].x, temp[19].x___, temp[20].x___; 9: MOV temp[16].y, temp[21]._x__; 10: TEX temp[22].xy, temp[16].xy__, 2D[2]; 11: MOV temp[23].xy, temp[22].xy__; 12: MUL temp[24].x, const[6].w___, temp[23].x___; 13: MOV temp[25].x, |input[1].x___|; 14: MOV temp[26].x, |input[1].y___|; 15: MAX temp[27].x, temp[25].x___, temp[26].x___; 16: ADD temp[28].x, temp[27].x___, -temp[24].x___; 17: CMP temp[29].x, temp[28].x___, none.1___, none.0___; 18: ADD temp[30].x, -temp[29].x___, const[7].y___; 19: CMP temp[31].x, -temp[30].x___, const[7].x___, temp[23].y___; 20: ADD temp[32].x, input[3].z___, const[6].x___; 21: RCP temp[33].x, const[4].x___; 22: MUL temp[34].x, temp[32].x___, temp[33].x___; 23: FRC temp[35].x, temp[34].x___; 24: FRC temp[36].x, temp[34].x___; 25: ADD temp[37].x, temp[34].x___, -temp[36].x___; 26: ADD temp[38].x, temp[37].x___, const[6].x___; 27: RCP temp[39].x, const[4].y___; 28: MUL temp[40].x, temp[38].x___, temp[39].x___; 29: MOV temp[35].y, temp[40]._x__; 30: TEX temp[41], temp[35].xy__, 2D[1]; 31: MAD temp[42], const[7].zzzz, temp[41], const[6].xxxx; 32: FRC temp[43], temp[42]; 33: ADD temp[44], temp[42], -temp[43]; 34: MUL temp[45].x, temp[44].w___, const[8].x___; 35: FRC temp[46].x, temp[45].x___; 36: ADD temp[47].x, temp[45].x___, -temp[46].x___; 37: MAD temp[48].x, temp[44].y___, const[7].w___, temp[47].x___; 38: MAD temp[49].x, temp[48].x___, const[6].x___, const[8].y___; 39: MUL temp[50].x, temp[44].w___, const[8].x___; 40: FRC temp[51].x, temp[50].x___; 41: MUL temp[52].x, temp[44].z___, const[7].w___; 42: MAD temp[53].x, const[7].w___, temp[51].x___, temp[52].x___; 43: MAD temp[54].x, temp[53].x___, const[6].x___, const[8].y___; 44: MOV temp[49].y, temp[54]._x__; 45: ADD temp[55].xy, input[0].xy__, -temp[49].xy__; 46: DP3 temp[56].x, temp[55].xy0_, temp[55].xy0_; 47: ADD temp[57].x, temp[56].x___, -const[8].z___; 48: CMP temp[58].x, temp[57].x___, none.0___, none.1___; 49: CMP temp[59].x, -temp[58].x___, const[7].y___, const[7].x___; 50: KIL -temp[59].xxxx; 51: RCP temp[60].x, temp[24].x___; 52: MAD temp[61].xy, input[2].xy__, temp[60].xx__, input[4].xy__; 53: RCP temp[62].x, const[3].x___; 54: RCP temp[62].y, const[3]._y__; 55: MUL temp[63].xy, temp[61].xy__, temp[62].xy__; 56: TEX temp[64], temp[63].xy__, 2D[0]; 57: MUL temp[65].x, temp[44].x___, const[9].x___; 58: FRC temp[66].x, temp[65].x___; 59: MUL temp[67].x, const[8].w___, temp[66].x___; 60: MUL temp[68].x, temp[31].x___, temp[67].x___; 61: MUL temp[69], temp[64], temp[68].xxxx; 62: ADD temp[70].x, temp[69].w___, -const[7].x___; 63: CMP temp[71].x, -|temp[70].x___|, none.0___, none.1___; 64: CMP temp[72].x, -temp[71].x___, const[7].y___, const[7].x___; 65: KIL -temp[72].xxxx; 66: MOV output[0], temp[69]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[13].x, input[3].y___, none.H___; 1: RCP temp[14].x, const[5].x___; 2: MUL temp[15].x, temp[13].x___, temp[14].x___; 3: FRC temp[16].x, temp[15].x___; 4: FRC temp[17].x, temp[15].x___; 5: MAD temp[19].x, const[6].y___, (temp[15] - temp[17]).x___, const[6].z___; 6: RCP temp[20].x, const[5].y___; 7: MUL temp[21].x, temp[19].x___, temp[20].x___; 8: MOV temp[16].y, temp[21]._x__; 9: TEX temp[22].xy, temp[16].xy__, 2D[2]; 10: MUL temp[24].x, const[6].w___, temp[22].x___; 11: MAX temp[27].x, |input[1].x___|, |input[1].y___|; 12: CMP temp[29].x, (temp[27] - temp[24]).x___, none.1___, none.0___; 13: ADD temp[30].x, -temp[29].x___, none.1___; 14: CMP temp[31].x, -temp[30].x___, none.0___, temp[22].y___; 15: ADD temp[32].x, input[3].z___, none.H___; 16: RCP temp[33].x, const[4].x___; 17: MUL temp[34].x, temp[32].x___, temp[33].x___; 18: FRC temp[35].x, temp[34].x___; 19: FRC temp[36].x, temp[34].x___; 20: ADD temp[38].x, (temp[34] - temp[36]).x___, none.H___; 21: RCP temp[39].x, const[4].y___; 22: MUL temp[40].x, temp[38].x___, temp[39].x___; 23: MOV temp[35].y, temp[40]._x__; 24: TEX temp[41], temp[35].xy__, 2D[1]; 25: MAD temp[42], const[7].zzzz, temp[41], none.HHHH; 26: FRC temp[43], temp[42]; 27: MUL temp[45].x, (temp[42] - temp[43]).w___, const[8].x___; 28: FRC temp[46].x, temp[45].x___; 29: ADD temp[47].x, temp[45].x___, -temp[46].x___; 30: MAD temp[48].x, (temp[42] - temp[43]).y___, const[7].w___, temp[47].x___; 31: MAD temp[49].x, temp[48].x___, none.H___, const[8].y___; 32: MUL temp[50].x, (temp[42] - temp[43]).w___, const[8].x___; 33: FRC temp[51].x, temp[50].x___; 34: MUL temp[52].x, (temp[42] - temp[43]).z___, const[7].w___; 35: MAD temp[53].x, const[7].w___, temp[51].x___, temp[52].x___; 36: MAD temp[54].x, temp[53].x___, none.H___, const[8].y___; 37: MOV temp[49].y, temp[54]._x__; 38: DP3 temp[56].x, (input[0] - temp[49]).xy0_, (input[0] - temp[49]).xy0_; 39: ADD temp[57].x, temp[56].x___, -const[8].z___; 40: CMP temp[58].x, temp[57].x___, none.0___, none.1___; 41: CMP temp[59].x, -temp[58].x___, none.1___, none.0___; 42: KIL -temp[59].xxxx; 43: RCP temp[60].x, temp[24].x___; 44: MAD temp[61].xy, input[2].xy__, temp[60].xx__, input[4].xy__; 45: RCP temp[62].x, const[3].x___; 46: RCP temp[62].y, const[3]._y__; 47: MUL temp[63].xy, temp[61].xy__, temp[62].xy__; 48: TEX temp[64], temp[63].xy__, 2D[0]; 49: MUL temp[65].x, (temp[42] - temp[43]).x___, const[9].x___; 50: FRC temp[66].x, temp[65].x___; 51: MUL temp[67].x, const[8].w___, temp[66].x___; 52: MUL temp[68].x, temp[31].x___, temp[67].x___; 53: MUL temp[69], temp[64], temp[68].xxxx; 54: CMP temp[71].x, -|temp[69].w___|, none.0___, none.1___; 55: CMP temp[72].x, -temp[71].x___, none.1___, none.0___; 56: KIL -temp[72].xxxx; 57: MOV output[0], temp[69]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[13].x, input[3].y___, none.H___; 1: RCP temp[14].x, const[5].x___; 2: MUL temp[15].x, temp[13].x___, temp[14].x___; 3: FRC temp[16].x, temp[15].x___; 4: FRC temp[17].x, temp[15].x___; 5: MAD temp[19].x, const[6].y___, (temp[15] - temp[17]).x___, const[6].z___; 6: RCP temp[20].x, const[5].y___; 7: MUL temp[21].x, temp[19].x___, temp[20].x___; 8: MOV temp[16].y, temp[21]._x__; 9: TEX temp[22].xy, temp[16].xy__, 2D[2]; 10: MUL temp[24].x, const[6].w___, temp[22].x___; 11: MAX temp[27].x, |input[1].x___|, |input[1].y___|; 12: CMP temp[29].x, (temp[27] - temp[24]).x___, none.1___, none.0___; 13: ADD temp[30].x, -temp[29].x___, none.1___; 14: CMP temp[31].x, -temp[30].x___, none.0___, temp[22].y___; 15: ADD temp[32].x, input[3].z___, none.H___; 16: RCP temp[33].x, const[4].x___; 17: MUL temp[34].x, temp[32].x___, temp[33].x___; 18: FRC temp[35].x, temp[34].x___; 19: FRC temp[36].x, temp[34].x___; 20: ADD temp[38].x, (temp[34] - temp[36]).x___, none.H___; 21: RCP temp[39].x, const[4].y___; 22: MUL temp[40].x, temp[38].x___, temp[39].x___; 23: MOV temp[35].y, temp[40]._x__; 24: TEX temp[41], temp[35].xy__, 2D[1]; 25: MAD temp[42], const[7].zzzz, temp[41], none.HHHH; 26: FRC temp[43], temp[42]; 27: MUL temp[45].x, (temp[42] - temp[43]).w___, const[8].x___; 28: FRC temp[46].x, temp[45].x___; 29: ADD temp[47].x, temp[45].x___, -temp[46].x___; 30: MAD temp[48].x, (temp[42] - temp[43]).y___, const[7].w___, temp[47].x___; 31: MAD temp[49].x, temp[48].x___, none.H___, const[8].y___; 32: MUL temp[50].x, (temp[42] - temp[43]).w___, const[8].x___; 33: FRC temp[51].x, temp[50].x___; 34: MUL temp[52].x, (temp[42] - temp[43]).z___, const[7].w___; 35: MAD temp[53].x, const[7].w___, temp[51].x___, temp[52].x___; 36: MAD temp[54].x, temp[53].x___, none.H___, const[8].y___; 37: MOV temp[49].y, temp[54]._x__; 38: MOV temp[0].xy, (input[0] - temp[49]).xy__; 39: MOV temp[0].z, (input[0] - temp[49]).__0_; 40: MOV temp[1].xy, (input[0] - temp[49]).xy__; 41: MOV temp[1].z, (input[0] - temp[49]).__0_; 42: DP3 temp[56].x, temp[0].xyz_, temp[1].xyz_; 43: ADD temp[57].x, temp[56].x___, -const[8].z___; 44: CMP temp[58].x, temp[57].x___, none.0___, none.1___; 45: CMP temp[59].x, -temp[58].x___, none.1___, none.0___; 46: MOV temp[2], -temp[59].xxxx; 47: KIL temp[2]; 48: RCP temp[60].x, temp[24].x___; 49: MAD temp[61].xy, input[2].xy__, temp[60].xx__, input[4].xy__; 50: RCP temp[62].x, const[3].x___; 51: RCP temp[62].y, const[3]._y__; 52: MUL temp[63].xy, temp[61].xy__, temp[62].xy__; 53: TEX temp[64], temp[63].xy__, 2D[0]; 54: MUL temp[65].x, (temp[42] - temp[43]).x___, const[9].x___; 55: FRC temp[66].x, temp[65].x___; 56: MUL temp[67].x, const[8].w___, temp[66].x___; 57: MUL temp[68].x, temp[31].x___, temp[67].x___; 58: MUL temp[69], temp[64], temp[68].xxxx; 59: CMP temp[71].x, -|temp[69].w___|, none.0___, none.1___; 60: CMP temp[72].x, -temp[71].x___, none.1___, none.0___; 61: MOV temp[3], -temp[72].xxxx; 62: KIL temp[3]; 63: MOV output[0], temp[69]; CONST[3] = { 0.5000 26.0000 25.5000 1.9922 } CONST[4] = { 0.0000 1.0000 255.0000 16.0000 } CONST[5] = { 0.0625 -1023.0000 0.0100 1.0323 } CONST[6] = { 0.0312 0.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[13].x, input[3].y___, none.H___; 1: RCP temp[14].x, const[2].x___; 2: MUL temp[15].x, temp[13].x___, temp[14].x___; 3: FRC temp[16].x, temp[15].x___; 4: FRC temp[17].x, temp[15].x___; 5: MAD temp[19].x, const[3].y___, (temp[15] - temp[17]).x___, const[3].z___; 6: RCP temp[20].x, const[2].y___; 7: MUL temp[21].x, temp[19].x___, temp[20].x___; 8: MOV temp[16].y, temp[21]._x__; 9: TEX temp[22].xy, temp[16].xy__, 2D[2]; 10: MUL temp[24].x, const[3].w___, temp[22].x___; 11: MAX temp[27].x, |input[1].x___|, |input[1].y___|; 12: CMP temp[29].x, (temp[27] - temp[24]).x___, none.1___, none.0___; 13: ADD temp[30].x, -temp[29].x___, none.1___; 14: CMP temp[31].x, -temp[30].x___, none.0___, temp[22].y___; 15: ADD temp[32].x, input[3].z___, none.H___; 16: RCP temp[33].x, const[1].x___; 17: MUL temp[34].x, temp[32].x___, temp[33].x___; 18: FRC temp[35].x, temp[34].x___; 19: FRC temp[36].x, temp[34].x___; 20: ADD temp[38].x, (temp[34] - temp[36]).x___, none.H___; 21: RCP temp[39].x, const[1].y___; 22: MUL temp[40].x, temp[38].x___, temp[39].x___; 23: MOV temp[35].y, temp[40]._x__; 24: TEX temp[41], temp[35].xy__, 2D[1]; 25: MAD temp[42], const[4].zzzz, temp[41], none.HHHH; 26: FRC temp[43], temp[42]; 27: MUL temp[45].x, (temp[42] - temp[43]).w___, const[5].x___; 28: FRC temp[46].x, temp[45].x___; 29: ADD temp[47].x, temp[45].x___, -temp[46].x___; 30: MAD temp[48].x, (temp[42] - temp[43]).y___, const[4].w___, temp[47].x___; 31: MAD temp[49].x, temp[48].x___, none.H___, const[5].y___; 32: MUL temp[50].x, (temp[42] - temp[43]).w___, const[5].x___; 33: FRC temp[51].x, temp[50].x___; 34: MUL temp[52].x, (temp[42] - temp[43]).z___, const[4].w___; 35: MAD temp[53].x, const[4].w___, temp[51].x___, temp[52].x___; 36: MAD temp[54].x, temp[53].x___, none.H___, const[5].y___; 37: MOV temp[49].y, temp[54]._x__; 38: MOV temp[0].xy, (input[0] - temp[49]).xy__; 39: MOV temp[0].z, (input[0] - temp[49]).__0_; 40: MOV temp[1].xy, (input[0] - temp[49]).xy__; 41: MOV temp[1].z, (input[0] - temp[49]).__0_; 42: DP3 temp[56].x, temp[0].xyz_, temp[1].xyz_; 43: ADD temp[57].x, temp[56].x___, -const[5].z___; 44: CMP temp[58].x, temp[57].x___, none.0___, none.1___; 45: CMP temp[59].x, -temp[58].x___, none.1___, none.0___; 46: MOV temp[2], -temp[59].xxxx; 47: KIL temp[2]; 48: RCP temp[60].x, temp[24].x___; 49: MAD temp[61].xy, input[2].xy__, temp[60].xx__, input[4].xy__; 50: RCP temp[62].x, const[0].x___; 51: RCP temp[62].y, const[0]._y__; 52: MUL temp[63].xy, temp[61].xy__, temp[62].xy__; 53: TEX temp[64], temp[63].xy__, 2D[0]; 54: MUL temp[65].x, (temp[42] - temp[43]).x___, const[6].x___; 55: FRC temp[66].x, temp[65].x___; 56: MUL temp[67].x, const[5].w___, temp[66].x___; 57: MUL temp[68].x, temp[31].x___, temp[67].x___; 58: MUL temp[69], temp[64], temp[68].xxxx; 59: CMP temp[71].x, -|temp[69].w___|, none.0___, none.1___; 60: CMP temp[72].x, -temp[71].x___, none.1___, none.0___; 61: MOV temp[3], -temp[72].xxxx; 62: KIL temp[3]; 63: MOV output[0], temp[69]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[3] MAD temp[13].x, src0.y__, src0.111, src0.H__ 1: src0.xyz = const[2] REPL_ALPHA temp[14].x RCP, src0.x 2: src0.xyz = temp[13], src1.xyz = temp[14] MAD temp[15].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[15] FRC temp[16].x, src0.x__ 4: src0.xyz = temp[15] FRC temp[17].x, src0.x__ 5: src0.xyz = temp[17], src1.xyz = temp[15], src2.xyz = const[3], srcp.xyz = (src1 - src0) MAD temp[19].x, src2.y__, srcp.x__, src2.z__ 6: src0.xyz = const[2] REPL_ALPHA temp[20].x RCP, src0.y 7: src0.xyz = temp[19], src1.xyz = temp[20] MAD temp[21].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[21] MAD temp[16].y, src0._x_, src0.111, src0.000 9: TEX temp[22].xy, temp[16].xy__, 2D[2]; 10: src0.xyz = temp[22], src0.w = const[3] MAD temp[24].x, src0.w__, src0.x__, src0.000 11: src0.xyz = input[1] MAX temp[27].x, |src0.x__|, |src0.y__| 12: src0.xyz = temp[24], src1.xyz = temp[27], srcp.xyz = (src1 - src0) CMP temp[29].x, src0.0__, src0.1__, srcp.x__ 13: src0.xyz = temp[29] MAD temp[30].x, -src0.x__, src0.111, src0.1__ 14: src0.xyz = temp[22], src1.xyz = temp[30] CMP temp[31].x, src0.y__, src0.0__, -src1.x__ 15: src0.xyz = input[3] MAD temp[32].x, src0.z__, src0.111, src0.H__ 16: src0.xyz = const[1] REPL_ALPHA temp[33].x RCP, src0.x 17: src0.xyz = temp[32], src1.xyz = temp[33] MAD temp[34].x, src0.x__, src1.x__, src0.000 18: src0.xyz = temp[34] FRC temp[35].x, src0.x__ 19: src0.xyz = temp[34] FRC temp[36].x, src0.x__ 20: src0.xyz = temp[36], src1.xyz = temp[34], srcp.xyz = (src1 - src0) MAD temp[38].x, srcp.x__, src0.111, src0.H__ 21: src0.xyz = const[1] REPL_ALPHA temp[39].x RCP, src0.y 22: src0.xyz = temp[38], src1.xyz = temp[39] MAD temp[40].x, src0.x__, src1.x__, src0.000 23: src0.xyz = temp[40] MAD temp[35].y, src0._x_, src0.111, src0.000 24: TEX temp[41], temp[35].xy__, 2D[1]; 25: src0.xyz = const[4], src0.w = temp[41], src1.xyz = temp[41] MAD temp[42].xyz, src0.zzz, src1.xyz, src0.HHH MAD temp[42].w, src0.z, src0.w, src0.H 26: src0.xyz = temp[42], src0.w = temp[42] FRC temp[43].xyz, src0.xyz FRC temp[43].w, src0.w 27: src0.xyz = const[5], src0.w = temp[43], src1.w = temp[42], srcp.w = (src1 - src0) MAD temp[45].x, srcp.w__, src0.x__, src0.000 28: src0.xyz = temp[45] FRC temp[46].x, src0.x__ 29: src0.xyz = temp[45], src1.xyz = temp[46] MAD temp[47].x, src0.x__, src0.111, -src1.x__ 30: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], src2.xyz = temp[47], srcp.xyz = (src1 - src0) MAD temp[48].x, srcp.y__, src0.w__, src2.x__ 31: src0.xyz = temp[48], src1.xyz = const[5] MAD temp[49].x, src0.x__, src0.H__, src1.y__ 32: src0.xyz = const[5], src0.w = temp[43], src1.w = temp[42], srcp.w = (src1 - src0) MAD temp[50].x, srcp.w__, src0.x__, src0.000 33: src0.xyz = temp[50] FRC temp[51].x, src0.x__ 34: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], srcp.xyz = (src1 - src0) MAD temp[52].x, srcp.z__, src0.w__, src0.000 35: src0.xyz = temp[51], src0.w = const[4], src1.xyz = temp[52] MAD temp[53].x, src0.w__, src0.x__, src1.x__ 36: src0.xyz = temp[53], src1.xyz = const[5] MAD temp[54].x, src0.x__, src0.H__, src1.y__ 37: src0.xyz = temp[54] MAD temp[49].y, src0._x_, src0.111, src0.000 38: src0.xyz = temp[49], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 39: MAD temp[0].z, src0.__0, src0.111, src0.000 40: src0.xyz = temp[49], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 41: MAD temp[1].z, src0.__0, src0.111, src0.000 42: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[56].x, src0.xyz, src1.xyz 43: src0.xyz = temp[56], src1.xyz = const[5] MAD temp[57].x, src0.x__, src0.111, -src1.z__ 44: src0.xyz = temp[57] CMP temp[58].x, src0.1__, src0.0__, src0.x__ 45: src0.xyz = temp[58] CMP temp[59].x, src0.0__, src0.1__, -src0.x__ 46: src0.xyz = temp[59] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 47: KIL temp[2]; 48: src0.xyz = temp[24] REPL_ALPHA temp[60].x RCP, src0.x 49: src0.xyz = input[2], src1.xyz = temp[60], src2.xyz = input[4] MAD temp[61].xy, src0.xy_, src1.xx_, src2.xy_ 50: src0.xyz = const[0] REPL_ALPHA temp[62].x RCP, src0.x 51: src0.xyz = const[0] REPL_ALPHA temp[62].y RCP, src0.y 52: src0.xyz = temp[61], src1.xyz = temp[62] MAD temp[63].xy, src0.xy_, src1.xy_, src0.000 53: TEX temp[64], temp[63].xy__, 2D[0]; 54: src0.xyz = temp[43], src1.xyz = temp[42], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD temp[65].x, srcp.x__, src2.x__, src0.000 55: src0.xyz = temp[65] FRC temp[66].x, src0.x__ 56: src0.xyz = temp[66], src0.w = const[5] MAD temp[67].x, src0.w__, src0.x__, src0.000 57: src0.xyz = temp[31], src1.xyz = temp[67] MAD temp[68].x, src0.x__, src1.x__, src0.000 58: src0.xyz = temp[64], src0.w = temp[64], src1.xyz = temp[68] MAD temp[69].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[69].w, src0.w, src1.x, src0.0 59: src0.w = temp[69] CMP temp[71].x, src0.1__, src0.0__, -|src0.w__| 60: src0.xyz = temp[71] CMP temp[72].x, src0.0__, src0.1__, -src0.x__ 61: src0.xyz = temp[72] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 62: KIL temp[3]; 63: src0.xyz = temp[69], src0.w = temp[69] 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] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[39].w, src0.y 1: src0.xyz = input[3], src1.xyz = const[1] MAD temp[32].x, src0.z__, src0.111, src0.H__ RCP temp[33].w, src1.x 2: src0.xyz = input[1], src1.xyz = const[2] MAX temp[27].x, |src0.x__|, |src0.y__| RCP temp[20].w, src1.y 3: src0.xyz = input[3], src1.xyz = const[2] MAD temp[13].x, src0.y__, src0.111, src0.H__ RCP temp[14].w, src1.x 4: src0.xyz = temp[32], src0.w = temp[33], src1.xyz = temp[33] MAD temp[34].x, src0.x__, src0.w__, src0.000 5: src0.xyz = const[0] REPL_ALPHA temp[62].x RCP, src0.x 6: src0.xyz = temp[13], src0.w = temp[14], src1.xyz = temp[14] MAD temp[15].x, src0.x__, src0.w__, src0.000 7: src0.xyz = const[0] REPL_ALPHA temp[62].y RCP, src0.y 8: src0.xyz = temp[34] FRC temp[36].x, src0.x__ 9: src0.xyz = temp[36], src1.xyz = temp[34], srcp.xyz = (src1 - src0) MAD temp[1].z, src0.__0, src0.111, src0.000 MAD temp[38].w, srcp.x, src0.1, src0.H 10: src0.xyz = temp[34], src0.w = temp[38], src1.w = temp[39] FRC temp[35].x, src0.x__ MAD temp[40].w, src0.w, src1.w, src0.0 11: src0.xyz = temp[15] FRC temp[17].x, src0.x__ 12: src0.xyz = temp[17], src1.xyz = temp[15], src2.xyz = const[3], srcp.xyz = (src1 - src0) FRC temp[16].x, src1.x__ MAD temp[19].w, src2.y, srcp.x, src2.z 13: src0.xyz = temp[40], src0.w = temp[40], src1.w = temp[19], src2.w = temp[20] MAD temp[35].y, src0._w_, src0.111, src0.000 MAD temp[21].w, src1.w, src2.w, src0.0 14: src0.xyz = temp[21], src0.w = temp[21] MAD temp[16].y, src0._w_, src0.111, src0.000 15: BEGIN_TEX; 16: TEX temp[41], temp[35].xy__, 2D[1]; 17: TEX temp[22].xy, temp[16].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 18: src0.xyz = const[4], src0.w = temp[41], src1.xyz = temp[41] SEM_WAIT MAD temp[42].xyz, src0.zzz, src1.xyz, src0.HHH MAD temp[42].w, src0.z, src0.w, src0.H 19: src0.xyz = temp[22], src0.w = const[3] MAD temp[24].x, src0.w__, src0.x__, src0.000 20: src0.xyz = temp[24], src1.xyz = temp[27], srcp.xyz = (src1 - src0) CMP temp[29].x, src0.0__, src0.1__, srcp.x__ RCP temp[60].w, src0.x 21: src0.xyz = temp[42], src0.w = temp[42] FRC temp[43].xyz, src0.xyz FRC temp[43].w, src0.w 22: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], src2.xyz = temp[29], srcp.xyz = (src1 - src0) MAD temp[52].x, srcp.z__, src0.w__, src0.000 MAD temp[30].w, -src2.x, src0.1, src0.1 23: src0.xyz = temp[22], src0.w = temp[43], src1.xyz = temp[30], src1.w = temp[42], src2.xyz = const[5], src2.w = temp[30], srcp.w = (src1 - src0) CMP temp[31].x, src0.y__, src0.0__, -src2.w__ MAD temp[50].w, srcp.w, src2.x, src0.0 24: src0.xyz = temp[50], src0.w = temp[43], src1.xyz = const[5], src1.w = temp[42], src2.w = temp[50], srcp.w = (src1 - src0) FRC temp[51].x, src2.w__ MAD temp[45].w, srcp.w, src1.x, src0.0 25: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = temp[51], src1.w = const[4], src2.xyz = temp[52] FRC temp[46].x, src0.w__ MAD temp[53].w, src1.w, src1.x, src2.x 26: src0.xyz = temp[53], src0.w = temp[53], src1.xyz = const[5], src1.w = temp[45], src2.xyz = temp[46] MAD temp[54].x, src0.w__, src0.H__, src1.y__ MAD temp[47].w, src1.w, src0.1, -src2.x 27: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], src1.w = temp[47], src2.xyz = temp[54], srcp.xyz = (src1 - src0) MAD temp[49].y, src2._x_, src0.111, src0.000 MAD temp[48].w, srcp.y, src0.w, src1.w 28: src0.xyz = input[2], src0.w = temp[60], src1.xyz = temp[60], src2.xyz = input[4] MAD temp[61].xy, src0.xy_, src0.ww_, src2.xy_ 29: src0.xyz = temp[43], src1.xyz = temp[42], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD temp[65].w, srcp.x, src2.x, src0.0 30: src0.xyz = temp[48], src0.w = temp[48], src1.xyz = const[5], src1.w = temp[65] MAD temp[49].x, src0.w__, src0.H__, src1.y__ FRC temp[66].w, src1.w 31: src0.xyz = temp[61], src0.w = const[5], src1.xyz = temp[62], src1.w = temp[66] MAD temp[63].xy, src0.xy_, src1.xy_, src0.000 MAD temp[67].w, src0.w, src1.w, src0.0 32: src0.xyz = temp[49], src0.w = temp[67], src1.xyz = input[0], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 MAD temp[68].w, src2.x, src0.w, src0.0 33: src0.xyz = temp[49], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 34: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[56].x, src0.xyz, src1.xyz 35: src0.xyz = temp[56], src1.xyz = const[5] MAD temp[57].x, src0.x__, src0.111, -src1.z__ 36: src0.xyz = temp[57] CMP temp[58].x, src0.1__, src0.0__, src0.x__ 37: src0.xyz = temp[58] CMP temp[59].x, src0.0__, src0.1__, -src0.x__ 38: src0.xyz = temp[59] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 39: BEGIN_TEX; 40: TEX temp[64], temp[63].xy__, 2D[0]; 41: KIL temp[2]; 42: src0.xyz = temp[64], src0.w = temp[64], src1.xyz = temp[68], src1.w = temp[68] SEM_WAIT MAD temp[69].xyz, src0.xyz, src1.www, src0.000 MAD temp[69].w, src0.w, src1.w, src0.0 43: src0.w = temp[69] CMP temp[71].x, src0.1__, src0.0__, -|src0.w__| 44: src0.xyz = temp[71] CMP temp[72].x, src0.0__, src0.1__, -src0.x__ 45: src0.xyz = temp[72] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[3]; 48: src0.xyz = temp[69], src0.w = temp[69] 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] MAD temp[0].z, src0.__0, src0.111, src0.000 RCP temp[39].w, src0.y 1: src0.xyz = input[3], src1.xyz = const[1] MAD temp[32].x, src0.z__, src0.111, src0.H__ RCP temp[33].w, src1.x 2: src0.xyz = input[1], src1.xyz = const[2] MAX temp[27].x, |src0.x__|, |src0.y__| RCP temp[20].w, src1.y 3: src0.xyz = input[3], src1.xyz = const[2] MAD temp[13].x, src0.y__, src0.111, src0.H__ RCP temp[14].w, src1.x 4: src0.xyz = temp[32], src0.w = temp[33] MAD temp[34].x, src0.x__, src0.w__, src0.000 5: src0.xyz = const[0] REPL_ALPHA temp[62].x RCP, src0.x 6: src0.xyz = temp[13], src0.w = temp[14] MAD temp[15].x, src0.x__, src0.w__, src0.000 7: src0.xyz = const[0] REPL_ALPHA temp[62].y RCP, src0.y 8: src0.xyz = temp[34] FRC temp[36].x, src0.x__ 9: src0.xyz = temp[36], src1.xyz = temp[34], srcp.xyz = (src1 - src0) MAD temp[1].z, src0.__0, src0.111, src0.000 MAD temp[38].w, srcp.x, src0.1, src0.H 10: src0.xyz = temp[34], src0.w = temp[38], src1.w = temp[39] FRC temp[35].x, src0.x__ MAD temp[40].w, src0.w, src1.w, src0.0 11: src0.xyz = temp[15] FRC temp[17].x, src0.x__ 12: src0.xyz = temp[17], src1.xyz = temp[15], src2.xyz = const[3], srcp.xyz = (src1 - src0) FRC temp[16].x, src1.x__ MAD temp[19].w, src2.y, srcp.x, src2.z 13: src0.w = temp[40], src1.w = temp[19], src2.w = temp[20] MAD temp[35].y, src0._w_, src0.111, src0.000 MAD temp[21].w, src1.w, src2.w, src0.0 14: src0.w = temp[21] MAD temp[16].y, src0._w_, src0.111, src0.000 15: BEGIN_TEX; 16: TEX temp[41], temp[35].xy__, 2D[1]; 17: TEX temp[22].xy, temp[16].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 18: src0.xyz = const[4], src0.w = temp[41], src1.xyz = temp[41] SEM_WAIT MAD temp[42].xyz, src0.zzz, src1.xyz, src0.HHH MAD temp[42].w, src0.z, src0.w, src0.H 19: src0.xyz = temp[22], src0.w = const[3] MAD temp[24].x, src0.w__, src0.x__, src0.000 20: src0.xyz = temp[24], src1.xyz = temp[27], srcp.xyz = (src1 - src0) CMP temp[29].x, src0.0__, src0.1__, srcp.x__ RCP temp[60].w, src0.x 21: src0.xyz = temp[42], src0.w = temp[42] FRC temp[43].xyz, src0.xyz FRC temp[43].w, src0.w 22: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], src2.xyz = temp[29], srcp.xyz = (src1 - src0) MAD temp[52].x, srcp.z__, src0.w__, src0.000 MAD temp[30].w, -src2.x, src0.1, src0.1 23: src0.xyz = temp[22], src0.w = temp[43], src1.w = temp[42], src2.xyz = const[5], src2.w = temp[30], srcp.w = (src1 - src0) CMP temp[31].x, src0.y__, src0.0__, -src2.w__ MAD temp[50].w, srcp.w, src2.x, src0.0 24: src0.w = temp[43], src1.xyz = const[5], src1.w = temp[42], src2.w = temp[50], srcp.w = (src1 - src0) FRC temp[51].x, src2.w__ MAD temp[45].w, srcp.w, src1.x, src0.0 25: src0.w = temp[45], src1.xyz = temp[51], src1.w = const[4], src2.xyz = temp[52] FRC temp[46].x, src0.w__ MAD temp[53].w, src1.w, src1.x, src2.x 26: src0.w = temp[53], src1.xyz = const[5], src1.w = temp[45], src2.xyz = temp[46] MAD temp[54].x, src0.w__, src0.H__, src1.y__ MAD temp[47].w, src1.w, src0.1, -src2.x 27: src0.xyz = temp[43], src0.w = const[4], src1.xyz = temp[42], src1.w = temp[47], src2.xyz = temp[54], srcp.xyz = (src1 - src0) MAD temp[49].y, src2._x_, src0.111, src0.000 MAD temp[48].w, srcp.y, src0.w, src1.w 28: src0.xyz = input[2], src0.w = temp[60], src2.xyz = input[4] MAD temp[61].xy, src0.xy_, src0.ww_, src2.xy_ 29: src0.xyz = temp[43], src1.xyz = temp[42], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD temp[65].w, srcp.x, src2.x, src0.0 30: src0.w = temp[48], src1.xyz = const[5], src1.w = temp[65] MAD temp[49].x, src0.w__, src0.H__, src1.y__ FRC temp[66].w, src1.w 31: src0.xyz = temp[61], src0.w = const[5], src1.xyz = temp[62], src1.w = temp[66] MAD temp[63].xy, src0.xy_, src1.xy_, src0.000 MAD temp[67].w, src0.w, src1.w, src0.0 32: src0.xyz = temp[49], src0.w = temp[67], src1.xyz = input[0], src2.xyz = temp[31], srcp.xyz = (src1 - src0) MAD temp[1].xy, srcp.xy_, src0.111, src0.000 MAD temp[68].w, src2.x, src0.w, src0.0 33: src0.xyz = temp[49], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[0].xy, srcp.xy_, src0.111, src0.000 34: src0.xyz = temp[0], src1.xyz = temp[1] DP3 temp[56].x, src0.xyz, src1.xyz 35: src0.xyz = temp[56], src1.xyz = const[5] MAD temp[57].x, src0.x__, src0.111, -src1.z__ 36: src0.xyz = temp[57] CMP temp[58].x, src0.1__, src0.0__, src0.x__ 37: src0.xyz = temp[58] CMP temp[59].x, src0.0__, src0.1__, -src0.x__ 38: src0.xyz = temp[59] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 39: BEGIN_TEX; 40: TEX temp[64], temp[63].xy__, 2D[0]; 41: KIL temp[2]; 42: src0.xyz = temp[64], src0.w = temp[64], src1.w = temp[68] SEM_WAIT MAD temp[69].xyz, src0.xyz, src1.www, src0.000 MAD temp[69].w, src0.w, src1.w, src0.0 43: src0.w = temp[69] CMP temp[71].x, src0.1__, src0.0__, -|src0.w__| 44: src0.xyz = temp[71] CMP temp[72].x, src0.0__, src0.1__, -src0.x__ 45: src0.xyz = temp[72] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[3]; 48: src0.xyz = temp[69], src0.w = temp[69] 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] MAD temp[5].z, src0.__0, src0.111, src0.000 RCP temp[0].w, src0.y 1: src0.xyz = input[3], src1.xyz = const[1] MAD temp[0].z, src0.__z, src0.__1, src0.__H RCP temp[1].w, src1.x 2: src0.xyz = input[1], src1.xyz = const[2] MAX temp[1].x, |src0.x__|, |src0.y__| RCP temp[2].w, src1.y 3: src0.xyz = input[3], src1.xyz = const[2] MAD temp[1].y, src0._y_, src0._1_, src0._H_ RCP temp[3].w, src1.x 4: src0.xyz = temp[0], src0.w = temp[1] MAD temp[3].x, src0.z__, src0.w__, src0.0__ 5: src0.xyz = const[0] REPL_ALPHA temp[6].x RCP, src0.x 6: src0.xyz = temp[1], src0.w = temp[3] MAD temp[7].x, src0.y__, src0.w__, src0.0__ 7: src0.xyz = const[0] REPL_ALPHA temp[6].y RCP, src0.y 8: src0.xyz = temp[3] FRC temp[8].x, src0.x__ 9: src0.xyz = temp[8], src1.xyz = temp[3], srcp.xyz = (src1 - src0) MAD temp[8].z, src0.__0, src0.111, src0.000 MAD temp[1].w, srcp.x, src0.1, src0.H 10: src0.xyz = temp[3], src0.w = temp[1], src1.w = temp[0] FRC temp[3].x, src0.x__ MAD temp[0].w, src0.w, src1.w, src0.0 11: src0.xyz = temp[7] FRC temp[9].x, src0.x__ 12: src0.xyz = temp[9], src1.xyz = temp[7], src2.xyz = const[3], srcp.xyz = (src1 - src0) FRC temp[7].x, src1.x__ MAD temp[1].w, src2.y, srcp.x, src2.z 13: src0.w = temp[0], src1.w = temp[1], src2.w = temp[2] MAD temp[3].y, src0._w_, src0.11_, src0.00_ MAD temp[0].w, src1.w, src2.w, src0.0 14: src0.w = temp[0] MAD temp[7].y, src0._w_, src0.11_, src0.00_ 15: BEGIN_TEX; 16: TEX temp[3], temp[3].xy__, 2D[1]; 17: TEX temp[7].xy, temp[7].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 18: src0.xyz = const[4], src0.w = temp[3], src1.xyz = temp[3] SEM_WAIT MAD temp[3].xyz, src0.zzz, src1.xyz, src0.HHH MAD temp[0].w, src0.z, src0.w, src0.H 19: src0.xyz = temp[7], src0.w = const[3] MAD temp[9].x, src0.w__, src0.x__, src0.0__ 20: src0.xyz = temp[9], src1.xyz = temp[1], srcp.xyz = (src1 - src0) CMP temp[0].z, src0.__0, src0.__1, srcp.__x RCP temp[1].w, src0.x 21: src0.xyz = temp[3], src0.w = temp[0] FRC temp[1].xyz, src0.xyz FRC temp[2].w, src0.w 22: src0.xyz = temp[1], src0.w = const[4], src1.xyz = temp[3], src2.xyz = temp[0], srcp.xyz = (src1 - src0) MAD temp[0].z, srcp.__z, src0.__w, src0.__0 MAD temp[3].w, -src2.z, src0.1, src0.1 23: src0.xyz = temp[7], src0.w = temp[2], src1.w = temp[0], src2.xyz = const[5], src2.w = temp[3], srcp.w = (src1 - src0) CMP temp[2].z, src0.__y, src0.__0, -src2.__w MAD temp[3].w, srcp.w, src2.x, src0.0 24: src0.w = temp[2], src1.xyz = const[5], src1.w = temp[0], src2.w = temp[3], srcp.w = (src1 - src0) FRC temp[4].z, src2.__w MAD temp[0].w, srcp.w, src1.x, src0.0 25: src0.w = temp[0], src1.xyz = temp[4], src1.w = const[4], src2.xyz = temp[0] FRC temp[0].z, src0.__w MAD temp[2].w, src1.w, src1.z, src2.z 26: src0.w = temp[2], src1.xyz = const[5], src1.w = temp[0], src2.xyz = temp[0] MAD temp[0].z, src0.__w, src0.__H, src1.__y MAD temp[0].w, src1.w, src0.1, -src2.z 27: src0.xyz = temp[1], src0.w = const[4], src1.xyz = temp[3], src1.w = temp[0], src2.xyz = temp[0], srcp.xyz = (src1 - src0) MAD temp[7].y, src2._z_, src0.11_, src0.00_ MAD temp[0].w, srcp.y, src0.w, src1.w 28: src0.xyz = input[2], src0.w = temp[1], src2.xyz = input[4] MAD temp[2].xy, src0.xy_, src0.ww_, src2.xy_ 29: src0.xyz = temp[1], src1.xyz = temp[3], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD temp[1].w, srcp.x, src2.x, src0.0 30: src0.w = temp[0], src1.xyz = const[5], src1.w = temp[1] MAD temp[7].x, src0.w__, src0.H__, src1.y__ FRC temp[0].w, src1.w 31: src0.xyz = temp[2], src0.w = const[5], src1.xyz = temp[6], src1.w = temp[0] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ MAD temp[0].w, src0.w, src1.w, src0.0 32: src0.xyz = temp[7], src0.w = temp[0], src1.xyz = input[0], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[8].xy, srcp.xy_, src0.111, src0.000 MAD temp[0].w, src2.z, src0.w, src0.0 33: src0.xyz = temp[7], src1.xyz = input[0], srcp.xyz = (src1 - src0) MAD temp[5].xy, srcp.xy_, src0.111, src0.000 34: src0.xyz = temp[5], src1.xyz = temp[8] DP3 temp[0].x, src0.xyz, src1.xyz 35: src0.xyz = temp[0], src1.xyz = const[5] MAD temp[0].x, src0.x__, src0.1__, -src1.z__ 36: src0.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, src0.x__ 37: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 38: src0.xyz = temp[0] MAD temp[2].xyz, -src0.xxx, src0.111, src0.000 MAD temp[2].w, -src0.x, src0.1, src0.0 39: BEGIN_TEX; 40: TEX temp[1], temp[1].xy__, 2D[0]; 41: KIL temp[2]; 42: src0.xyz = temp[1], src0.w = temp[1], src1.w = temp[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.www, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 43: src0.w = temp[0] CMP temp[1].x, src0.1__, src0.0__, -|src0.w__| 44: src0.xyz = temp[1] CMP temp[1].x, src0.0__, src0.1__, -src0.x__ 45: src0.xyz = temp[1] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[1]; 48: 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=10************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 14, tex_end: 0 (code_addr: 00000380) 0: xyz: c1 t0 t0 bias-> t5.z (02140021) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 0.0 1.0 0.0 op: 00050a94 w: c1.y c1.x c1.x op: 05000001 1: xyz: t3 c1 t0 bias-> t0.z (02000843) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t3.xyz 1.0 0.5 op: 00058a80 w: c1.x t3.x t3.x op: 05000003 2: xyz: t1 c2 t0 bias-> t1.x (00840881) w: t0 t0 t0 bias-> t2.w (00880000) xyz: |t1.xyz| |t1.yyy| t1.xxx op: 02806140 w: c2.y t1.x t1.x op: 05000004 3: xyz: t3 c2 t0 bias-> t1.y (01040883) w: t0 t0 t0 bias-> t3.w (008c0000) xyz: t3.xyz 1.0 0.5 op: 00058a80 w: c2.x t3.x t3.x op: 05000003 4: xyz: t0 t32 t0 bias-> t3.x (008c0000) w: t1 t0 t0 bias-> (00000001) xyz: t0.zzz t1.www 0.0 op: 00050603 w: t0.x t0.x t0.x op: 00000000 5: xyz: c0 t0 t0 bias-> t6.x (00980020) w: t0 t0 t0 bias-> (00000000) xyz: c0.xxx c0.xxx c0.xxx op: 05004081 w: c0.x c0.x c0.x op: 05000000 6: xyz: t1 t0 t0 bias-> t7.x (009c0001) w: t3 t0 t0 bias-> (00000003) xyz: t1.yyy t3.www 0.0 op: 00050602 w: t1.x t1.x t1.x op: 00000000 7: xyz: c0 t0 t0 bias-> t6.y (01180020) w: t0 t0 t0 bias-> (00000000) xyz: c0.xxx c0.xxx c0.xxx op: 05004081 w: c0.y c0.x c0.x op: 05000001 8: xyz: t3 t0 t0 bias-> t8.x (00a00003) w: t0 t0 t0 bias-> (00000000) xyz: t3.xyz t3.xxx t3.xxx op: 84804080 NOP w: t3.x t3.x t3.x op: 00000000 9: xyz: t8 t3 t0 sub-> t8.z (022000c8) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 0.0 1.0 0.0 op: 00250a94 w: srcp.x 1.0 0.5 op: 0004888c 10: xyz: t3 t0 t0 bias-> t3.x (008c0003) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t3.xyz t3.xxx t3.xxx op: 04804080 w: t1.w t0.w 0.0 op: 00040509 11: xyz: t7 t0 t0 bias-> t9.x (00a40007) w: t0 t0 t0 bias-> (00000000) xyz: t7.xyz t7.xxx t7.xxx op: 84804080 NOP w: t7.x t7.x t7.x op: 00000000 12: xyz: t9 t7 c3 sub-> t7.x (009e31c9) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t7.xyz t9.xxx t9.xxx op: 04a04084 w: c3.y srcp.x c3.z op: 00020607 13: xyz: t32 t0 t0 bias-> t3.y (010c0000) w: t0 t1 t2 bias-> t0.w (00802040) xyz: t0.www 1.0 0.0 op: 00050a8c w: t1.w t2.w 0.0 op: 0004058a 14: xyz: t0 t0 t0 bias-> t7.y (011c0000) w: t0 t0 t0 bias-> (00000000) xyz: t0.www 1.0 0.0 op: 00050a8c w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 15, tex_offset: 0, alu_end: 20, tex_end: 1 (code_addr: 0002050f) TEX: TEX t3, t3, texture[1] (000088c3) TEX t7, t7, texture[2] (000091c7) 15: xyz: c4 t3 t0 bias-> t3.xyz (038c00e4) w: t3 t0 t0 bias-> t0.w (00800003) xyz: c4.zzz t3.xyz 0.5 op: 00058203 w: c4.z t3.w 0.5 op: 00048482 16: xyz: t7 t0 t0 bias-> t9.x (00a40007) w: c3 t0 t0 bias-> (00000023) xyz: c3.www t7.xyz 0.0 op: 8005000c NOP w: t7.x t7.x t7.x op: 00000000 17: xyz: t9 t1 t0 sub-> t0.z (02000049) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 0.0 1.0 srcp.xxx op: 04240a94 w: t9.x t9.x t9.x op: 05000000 18: xyz: t3 t0 t0 bias-> t1.xyz (03840003) w: t0 t0 t0 bias-> t2.w (00880000) xyz: t3.xyz t3.xxx t3.xxx op: 84804080 NOP w: t0.w t3.x t3.x op: 03800009 19: xyz: t1 t3 t0 sub-> t0.z (020000c1) w: c4 t0 t0 bias-> t3.w (008c0024) xyz: srcp.xyz c4.www 0.0 op: 0025060f w: -t0.z 1.0 1.0 op: 000448a8 20: xyz: t7 t0 c5 bias-> t2.z (020a5007) w: t2 t0 t3 sub-> t3.w (008c3002) xyz: t7.yyy 0.0 -t3.www op: 040b8a02 w: srcp.w c5.x 0.0 op: 0024030f 21: xyz: t32 c5 t0 bias-> t4.z (02100940) w: t2 t0 t3 sub-> t0.w (00803002) xyz: t3.www t32.xxx t32.xxx op: 0480408e w: srcp.w c5.x 0.0 op: 0024018f 22: xyz: t32 t4 t0 bias-> t0.z (02000100) w: t0 c4 t0 bias-> t2.w (00880900) xyz: t0.www t32.xxx t32.xxx op: 0480408c w: c4.w t4.z t0.z op: 0002028a 23: xyz: t32 c5 t0 bias-> t0.z (02000940) w: t2 t0 t0 bias-> t0.w (00800002) xyz: t2.www 0.5 c5.yyy op: 00018b0c w: t0.w 1.0 -t0.z op: 000a088a 24: xyz: t1 t3 t0 sub-> t7.y (011c00c1) w: c4 t0 t0 bias-> t0.w (00800024) xyz: t0.zzz 1.0 0.0 op: 00250a8b w: srcp.y c4.w t0.w op: 0002848d 25: xyz: t2 t32 t4 bias-> t2.xy (01884002) w: t1 t0 t0 bias-> (00000001) xyz: t2.xyz t1.www t4.xyz op: 00020600 w: t2.x t2.x t2.x op: 00000000 26: xyz: t1 t3 c6 sub-> (000260c1) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t1.xxx t1.xxx t1.xxx op: 00204081 w: srcp.x c6.x 0.0 op: 0004030c 27: xyz: t32 c5 t0 bias-> t7.x (009c0940) w: t0 t1 t0 bias-> t0.w (00800040) xyz: t0.www 0.5 c5.yyy op: 00018b0c w: t1.w t32.x t32.x op: 0380000a 28: xyz: t2 t6 t0 bias-> t1.xy (01840182) w: c5 t0 t0 bias-> t0.w (00800025) xyz: t2.xyz t6.xyz 0.0 op: 00050200 w: c5.w t0.w 0.0 op: 00040509 29: xyz: t7 t0 t2 sub-> t8.xy (01a02007) w: t0 t0 t0 bias-> t0.w (00800000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t2.z t0.w 0.0 op: 00040488 30: xyz: t7 t0 t0 sub-> t5.xy (01940007) w: t0 t0 t0 bias-> (00000000) xyz: srcp.xyz 1.0 0.0 op: 00250a8f w: t7.x t7.x t7.x op: 00000000 31: xyz: t5 t8 t0 bias-> t0.x (00800205) w: t0 t0 t0 bias-> (00000000) xyz: t5.xyz t8.xyz t5.xxx op: 00804200 w: t5.x t5.x t5.x op: 00000000 32: xyz: t0 c5 t0 bias-> t0.x (00800940) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 -c5.zzz op: 0009ca80 w: t0.x t0.x t0.x op: 00000000 33: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 t0.xyz op: 04000a15 w: t0.x t0.x t0.x op: 00000000 34: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t0.xyz op: 04080a94 w: t0.x t0.x t0.x op: 00000000 35: xyz: t0 t0 t0 bias-> t2.xyz (03880000) w: t0 t0 t0 bias-> t2.w (00880000) xyz: -t0.xxx 1.0 0.0 op: 00050aa1 w: -t0.x 1.0 0.0 op: 000408a0 NODE 2: alu_offset: 36, tex_offset: 2, alu_end: 3, tex_end: 1 (code_addr: 000220e4) TEX: TEX t1, t1, texture[0] (00008041) KIL t0, t2, texture[0] (00010002) 36: xyz: t1 t32 t0 bias-> t0.xyz (03800001) w: t1 t0 t0 bias-> t0.w (00800001) xyz: t1.xyz t0.www 0.0 op: 00050680 w: t1.w t0.w 0.0 op: 00040509 37: xyz: t0 t0 t0 bias-> t1.x (00840000) w: t0 t0 t0 bias-> (00000000) xyz: 1.0 0.0 -|t0.www| op: 041b0a15 w: t0.x t0.x t0.x op: 00000000 38: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t1.xyz op: 04080a94 w: t1.x t1.x t1.x op: 00000000 39: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t1.xxx 1.0 0.0 op: 00050aa1 w: -t1.x 1.0 0.0 op: 000408a0 NODE 3: alu_offset: 40, tex_offset: 4, alu_end: 0, tex_end: 0 (code_addr: 00404028) TEX: KIL t0, t1, texture[0] (00010001) 40: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL CONST[0..4] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MUL TEMP[0], CONST[0], IN[1].xxxx 1: MAD TEMP[0], CONST[1], IN[1].yyyy, TEMP[0] 2: ADD TEMP[0].xyw, TEMP[0], CONST[3] 3: MOV TEMP[1].xyw, TEMP[0].xyxw 4: MAD TEMP[2].x, IN[0].zzzz, IMM[0].xxxx, -CONST[4].xxxx 5: MUL TEMP[0].x, TEMP[0].wwww, TEMP[2].xxxx 6: MOV TEMP[1].z, TEMP[0].xxxx 7: MOV OUT[1].xy, IN[0].xyxx 8: MOV OUT[0], TEMP[1] 9: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[0], input[1].xxxx; 1: MAD temp[0], const[1], input[1].yyyy, temp[0]; 2: ADD temp[0].xyw, temp[0], const[3]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MAD temp[2].x, input[0].zzzz, const[5].xxxx, -const[4].xxxx; 5: MUL temp[0].x, temp[0].wwww, temp[2].xxxx; 6: MOV temp[1].z, temp[0].xxxx; 7: MOV output[1].xy, input[0].xyxx; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0], const[0], input[1].xxxx; 1: MAD temp[0], const[1], input[1].yyyy, temp[0]; 2: ADD temp[0].xyw, temp[0], const[3]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MAD temp[2].x, input[0].zzzz, const[5].xxxx, -const[4].xxxx; 5: MUL temp[0].x, temp[0].wwww, temp[2].xxxx; 6: MOV temp[1].z, temp[0].xxxx; 7: MOV output[1].xy, input[0].xyxx; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0], const[0], input[1].xxxx; 1: MAD temp[0], const[1], input[1].yyyy, temp[0]; 2: ADD temp[0].xyw, temp[0], const[3]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MAD temp[2].x, input[0].zzzz, const[5].xxxx, -const[4].xxxx; 5: MUL temp[0].x, temp[0].wwww, temp[2].xxxx; 6: MOV temp[1].z, temp[0].xxxx; 7: MOV output[1].xy, input[0].xyxx; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0], const[0], input[1].xxxx; 1: MAD temp[0], const[1], input[1].yyyy, temp[0]; 2: ADD temp[0].xyw, temp[0], const[3]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MAD temp[2].x, input[0].zzzz, const[5].xxxx, -const[4].xxxx; 5: MUL temp[0].x, temp[0].wwww, temp[2].xxxx; 6: MOV temp[1].z, temp[0].xxxx; 7: MOV output[1].xy, input[0].xyxx; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0], const[0], input[1].xxxx; 1: MAD temp[0], const[1], input[1].yyyy, temp[0]; 2: ADD temp[0].xyw, temp[0], const[3]; 3: MOV temp[1].xyw, temp[0].xyxw; 4: MAD temp[2].x, input[0].zzzz, const[5].xxxx, -const[4].xxxx; 5: MUL temp[0].x, temp[0].wwww, temp[2].xxxx; 6: MOV temp[1].z, temp[0].xxxx; 7: MOV output[1].xy, input[0].xyxx; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xyw, const[0].xy_w, input[1].xx_x; 1: MAD temp[0].xyw, const[1].xy_w, input[1].yy_y, temp[0].xy_w; 2: ADD temp[0].xyw, temp[0].xy_w, const[3].xy_w; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MAD temp[2].x, input[0].z___, const[5].x___, -const[4].x___; 5: MUL temp[0].x, temp[0].w___, temp[2].x___; 6: MOV temp[1].z, temp[0].__x_; 7: MOV output[1].xy, input[0].xy__; 8: MOV temp[3], temp[1]; 9: MOV output[0], temp[3]; 10: MOV output[2], temp[3]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0].xyw, const[0].xy_w, input[1].xx_x; 1: MAD temp[0].xyw, const[1].xy_w, input[1].yy_y, temp[0].xy_w; 2: ADD temp[0].xyw, temp[0].xy_w, const[3].xy_w; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MAD temp[2].x, input[0].z___, const[5].x___, -const[4].x___; 5: MUL temp[0].x, temp[0].w___, temp[2].x___; 6: MOV temp[1].z, temp[0].__x_; 7: MOV output[1].xy, input[0].xy__; 8: MOV output[0], temp[1]; 9: MOV output[2], temp[1]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MUL temp[0].xyw, const[0].xy_w, input[1].xx_x; 1: MAD temp[0].xyw, const[1].xy_w, input[1].yy_y, temp[0].xy_w; 2: ADD temp[0].xyw, temp[0].xy_w, const[3].xy_w; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MOV temp[3], -const[4].x___; 5: MAD temp[2].x, input[0].z___, const[5].x___, temp[3]; 6: MUL temp[0].x, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MOV output[1].xy, input[0].xy__; 9: MOV output[0], temp[1]; 10: MOV output[2], temp[1]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MUL temp[0].xyw, const[0].xy_w, input[1].xx_x; 1: MAD temp[0].xyw, const[1].xy_w, input[1].yy_y, temp[0].xy_w; 2: ADD temp[0].xyw, temp[0].xy_w, const[3].xy_w; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MOV temp[2], -const[4].x___; 5: MAD temp[2].x, input[0].z___, const[5].x___, temp[2]; 6: MUL temp[0].x, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MOV output[1].xy, input[0].xy__; 9: MOV output[0], temp[1]; 10: MOV output[2], temp[1]; CONST[5] = { 0.0000 0.0000 0.0000 0.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[0].xyw, const[0].xy_w, input[1].xx_x; 1: MAD temp[0].xyw, const[1].xy_w, input[1].yy_y, temp[0].xy_w; 2: ADD temp[0].xyw, temp[0].xy_w, const[3].xy_w; 3: MOV temp[1].xyw, temp[0].xy_w; 4: MOV temp[2], -const[4].x___; 5: MAD temp[2].x, input[0].z___, const[5].x___, temp[2]; 6: MUL temp[0].x, temp[0].w___, temp[2].x___; 7: MOV temp[1].z, temp[0].__x_; 8: MOV output[1].xy, input[0].xy__; 9: MOV output[0], temp[1]; 10: MOV output[2], temp[1]; Final vertex program code: 0: op: 0x00b00002 dst: 0t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00380021 reg: 1i swiz: X/ X/ U/ X src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00b00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00792021 reg: 1i swiz: Y/ Y/ U/ Y src2: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W 2: op: 0x00b00003 dst: 0t op: VE_ADD src0: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 3: op: 0x00b02003 dst: 1t op: VE_ADD src0: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 4: op: 0x00f04003 dst: 2t op: VE_ADD src0: 0x1fff0082 reg: 4c swiz: -X/-U/-U/-U src1: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 src2: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 5: op: 0x00104004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01ff4001 reg: 0i swiz: Z/ U/ U/ U src1: 0x01ff00a2 reg: 5c swiz: X/ U/ U/ U src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 6: op: 0x00100002 dst: 0t op: VE_MULTIPLY src0: 0x01ff6000 reg: 0t swiz: W/ U/ U/ U src1: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 7: op: 0x00402003 dst: 1t op: VE_ADD src0: 0x01c7e000 reg: 0t swiz: U/ U/ X/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 8: op: 0x00302203 dst: 1o op: VE_ADD src0: 0x01f90001 reg: 0i swiz: X/ Y/ U/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 9: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 10: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL CONST[3] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM FLT32 { 0.5000, 26.0000, 0.0000, 1.0000} 0: ADD TEMP[0].x, IN[0].yyyy, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[3].xxxx 2: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[1].x, TEMP[0].xxxx 4: FLR TEMP[0].x, TEMP[0].xxxx 5: MAD TEMP[0].x, IMM[0].yyyy, TEMP[0].xxxx, CONST[1].xxxx 6: ADD TEMP[0].x, TEMP[0].xxxx, IMM[0].xxxx 7: RCP TEMP[2].x, CONST[3].yyyy 8: MUL TEMP[0].x, TEMP[0].xxxx, TEMP[2].xxxx 9: MOV TEMP[1].y, TEMP[0].xxxx 10: TEX TEMP[0], TEMP[1].xyyy, SAMP[0], 2D 11: SEQ TEMP[2].x, TEMP[0].wwww, IMM[0].zzzz 12: SLT TEMP[3].x, TEMP[0].wwww, IMM[0].wwww 13: SLT TEMP[4].x, IMM[0].zzzz, CONST[0].xxxx 14: SNE TEMP[3].x, TEMP[3].xxxx, TEMP[4].xxxx 15: ADD_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 16: CMP TEMP[1].x, -TEMP[2].xxxx, IMM[0].wwww, IMM[0].zzzz 17: KIL -TEMP[1].xxxx 18: MOV OUT[0], TEMP[0] 19: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FLR temp[0].x, temp[0].xxxx; 5: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 6: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 7: RCP temp[2].x, const[3].yyyy; 8: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 9: MOV temp[1].y, temp[0].xxxx; 10: TEX temp[0], temp[1].xyyy, 2D[0]; 11: SEQ temp[2].x, temp[0].wwww, const[4].zzzz; 12: SLT temp[3].x, temp[0].wwww, const[4].wwww; 13: SLT temp[4].x, const[4].zzzz, const[0].xxxx; 14: SNE temp[3].x, temp[3].xxxx, temp[4].xxxx; 15: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 17: KIL -temp[1].xxxx; 18: MOV output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[0].yyyy, const[4].xxxx; 1: RCP temp[1].x, const[3].xxxx; 2: MUL temp[0].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[1].x, temp[0].xxxx; 4: FRC temp[5].x, temp[0].xxxx; 5: ADD temp[0].x, temp[0].xxxx, -temp[5]; 6: MAD temp[0].x, const[4].yyyy, temp[0].xxxx, const[1].xxxx; 7: ADD temp[0].x, temp[0].xxxx, const[4].xxxx; 8: RCP temp[2].x, const[3].yyyy; 9: MUL temp[0].x, temp[0].xxxx, temp[2].xxxx; 10: MOV temp[1].y, temp[0].xxxx; 11: TEX temp[0], temp[1].xyyy, 2D[0]; 12: ADD temp[2].x, temp[0].wwww, -const[4].zzzz; 13: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 14: ADD temp[3].x, temp[0].wwww, -const[4].wwww; 15: CMP temp[3].x, temp[3], none.1111, none.0000; 16: ADD temp[4].x, const[4].zzzz, -const[0].xxxx; 17: CMP temp[4].x, temp[4], none.1111, none.0000; 18: ADD temp[6].x, temp[3].xxxx, -temp[4].xxxx; 19: CMP temp[3].x, -|temp[6]|, none.1111, none.0000; 20: ADD_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 21: CMP temp[1].x, -temp[2].xxxx, const[4].wwww, const[4].zzzz; 22: KIL -temp[1].xxxx; 23: MOV output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[0].y___, const[4].x___; 1: RCP temp[1].x, const[3].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[5].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[5].x___; 6: MAD temp[0].x, const[4].y___, temp[0].x___, const[1].x___; 7: ADD temp[0].x, temp[0].x___, const[4].x___; 8: RCP temp[2].x, const[3].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: TEX temp[0], temp[1].xy__, 2D[0]; 12: ADD temp[2].x, temp[0].w___, -const[4].z___; 13: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 14: ADD temp[3].x, temp[0].w___, -const[4].w___; 15: CMP temp[3].x, temp[3].x___, none.1___, none.0___; 16: ADD temp[4].x, const[4].z___, -const[0].x___; 17: CMP temp[4].x, temp[4].x___, none.1___, none.0___; 18: ADD temp[6].x, temp[3].x___, -temp[4].x___; 19: CMP temp[3].x, -|temp[6].x___|, none.1___, none.0___; 20: ADD_SAT temp[2].x, temp[2].x___, temp[3].x___; 21: CMP temp[1].x, -temp[2].x___, const[4].w___, const[4].z___; 22: KIL -temp[1].xxxx; 23: MOV output[0], temp[0]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[0].y___, const[4].x___; 1: RCP temp[1].x, const[3].x___; 2: MUL temp[0].x, temp[0].x___, temp[1].x___; 3: FRC temp[1].x, temp[0].x___; 4: FRC temp[5].x, temp[0].x___; 5: ADD temp[0].x, temp[0].x___, -temp[5].x___; 6: MAD temp[0].x, const[4].y___, temp[0].x___, const[1].x___; 7: ADD temp[0].x, temp[0].x___, const[4].x___; 8: RCP temp[2].x, const[3].y___; 9: MUL temp[0].x, temp[0].x___, temp[2].x___; 10: MOV temp[1].y, temp[0]._x__; 11: TEX temp[0], temp[1].xy__, 2D[0]; 12: ADD temp[2].x, temp[0].w___, -const[4].z___; 13: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 14: ADD temp[3].x, temp[0].w___, -const[4].w___; 15: CMP temp[3].x, temp[3].x___, none.1___, none.0___; 16: ADD temp[4].x, const[4].z___, -const[0].x___; 17: CMP temp[4].x, temp[4].x___, none.1___, none.0___; 18: ADD temp[6].x, temp[3].x___, -temp[4].x___; 19: CMP temp[3].x, -|temp[6].x___|, none.1___, none.0___; 20: ADD_SAT temp[2].x, temp[2].x___, temp[3].x___; 21: CMP temp[1].x, -temp[2].x___, const[4].w___, const[4].z___; 22: KIL -temp[1].xxxx; 23: MOV output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, const[4].x___; 1: RCP temp[8].x, const[3].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[4].y___, temp[12].x___, const[1].x___; 7: ADD temp[14].x, temp[13].x___, const[4].x___; 8: RCP temp[15].x, const[3].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: TEX temp[17], temp[10].xy__, 2D[0]; 12: ADD temp[18].x, temp[17].w___, -const[4].z___; 13: CMP temp[19].x, -|temp[18].x___|, none.0___, none.1___; 14: ADD temp[20].x, temp[17].w___, -const[4].w___; 15: CMP temp[21].x, temp[20].x___, none.1___, none.0___; 16: ADD temp[22].x, const[4].z___, -const[0].x___; 17: CMP temp[23].x, temp[22].x___, none.1___, none.0___; 18: ADD temp[24].x, temp[21].x___, -temp[23].x___; 19: CMP temp[25].x, -|temp[24].x___|, none.1___, none.0___; 20: ADD_SAT temp[26].x, temp[19].x___, temp[25].x___; 21: CMP temp[27].x, -temp[26].x___, const[4].w___, const[4].z___; 22: KIL -temp[27].xxxx; 23: MOV output[0], temp[17]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[3].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[4].y___, temp[12].x___, const[1].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[3].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: TEX temp[17], temp[10].xy__, 2D[0]; 12: CMP temp[19].x, -|temp[17].w___|, none.0___, none.1___; 13: ADD temp[20].x, temp[17].w___, -none.1___; 14: CMP temp[21].x, temp[20].x___, none.1___, none.0___; 15: CMP temp[23].x, const[0].-x___, none.1___, none.0___; 16: CMP temp[25].x, -|(temp[21] - temp[23]).x___|, none.1___, none.0___; 17: ADD_SAT temp[26].x, temp[19].x___, temp[25].x___; 18: CMP temp[27].x, -temp[26].x___, none.1___, none.0___; 19: KIL -temp[27].xxxx; 20: MOV output[0], temp[17]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[3].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[4].y___, temp[12].x___, const[1].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[3].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: TEX temp[17], temp[10].xy__, 2D[0]; 12: CMP temp[19].x, -|temp[17].w___|, none.0___, none.1___; 13: ADD temp[20].x, temp[17].w___, -none.1___; 14: CMP temp[21].x, temp[20].x___, none.1___, none.0___; 15: CMP temp[23].x, const[0].-x___, none.1___, none.0___; 16: CMP temp[25].x, -|(temp[21] - temp[23]).x___|, none.1___, none.0___; 17: ADD_SAT temp[26].x, temp[19].x___, temp[25].x___; 18: CMP temp[27].x, -temp[26].x___, none.1___, none.0___; 19: MOV temp[0], -temp[27].xxxx; 20: KIL temp[0]; 21: MOV output[0], temp[17]; CONST[3] = { 0.5000 26.0000 0.0000 1.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[7].x, input[0].y___, none.H___; 1: RCP temp[8].x, const[2].x___; 2: MUL temp[9].x, temp[7].x___, temp[8].x___; 3: FRC temp[10].x, temp[9].x___; 4: FRC temp[11].x, temp[9].x___; 5: ADD temp[12].x, temp[9].x___, -temp[11].x___; 6: MAD temp[13].x, const[3].y___, temp[12].x___, const[1].x___; 7: ADD temp[14].x, temp[13].x___, none.H___; 8: RCP temp[15].x, const[2].y___; 9: MUL temp[16].x, temp[14].x___, temp[15].x___; 10: MOV temp[10].y, temp[16]._x__; 11: TEX temp[17], temp[10].xy__, 2D[0]; 12: CMP temp[19].x, -|temp[17].w___|, none.0___, none.1___; 13: ADD temp[20].x, temp[17].w___, -none.1___; 14: CMP temp[21].x, temp[20].x___, none.1___, none.0___; 15: CMP temp[23].x, const[0].-x___, none.1___, none.0___; 16: CMP temp[25].x, -|(temp[21] - temp[23]).x___|, none.1___, none.0___; 17: ADD_SAT temp[26].x, temp[19].x___, temp[25].x___; 18: CMP temp[27].x, -temp[26].x___, none.1___, none.0___; 19: MOV temp[0], -temp[27].xxxx; 20: KIL temp[0]; 21: MOV output[0], temp[17]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0] MAD temp[7].x, src0.y__, src0.111, src0.H__ 1: src0.xyz = const[2] REPL_ALPHA temp[8].x RCP, src0.x 2: src0.xyz = temp[7], src1.xyz = temp[8] MAD temp[9].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ 4: src0.xyz = temp[9] FRC temp[11].x, src0.x__ 5: src0.xyz = temp[9], src1.xyz = temp[11] MAD temp[12].x, src0.x__, src0.111, -src1.x__ 6: src0.xyz = const[3], src1.xyz = temp[12], src2.xyz = const[1] MAD temp[13].x, src0.y__, src1.x__, src2.x__ 7: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 8: src0.xyz = const[2] REPL_ALPHA temp[15].x RCP, src0.y 9: src0.xyz = temp[14], src1.xyz = temp[15] MAD temp[16].x, src0.x__, src1.x__, src0.000 10: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 11: TEX temp[17], temp[10].xy__, 2D[0]; 12: src0.w = temp[17] CMP temp[19].x, src0.1__, src0.0__, -|src0.w__| 13: src0.w = temp[17] MAD temp[20].x, src0.w__, src0.111, -src0.1__ 14: src0.xyz = temp[20] CMP temp[21].x, src0.0__, src0.1__, src0.x__ 15: src0.xyz = const[0] CMP temp[23].x, src0.0__, src0.1__, -src0.x__ 16: src0.xyz = temp[23], src1.xyz = temp[21], srcp.xyz = (src1 - src0) CMP temp[25].x, src0.0__, src0.1__, -|srcp.x__| 17: src0.xyz = temp[19], src1.xyz = temp[25] MAD_SAT temp[26].x, src0.x__, src0.111, src1.x__ 18: src0.xyz = temp[26] CMP temp[27].x, src0.0__, src0.1__, -src0.x__ 19: src0.xyz = temp[27] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 20: KIL temp[0]; 21: 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 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = const[2] CMP temp[23].x, src0.0__, src0.1__, -src0.x__ RCP temp[15].w, src1.y 1: src0.xyz = input[0], src1.xyz = const[2] MAD temp[7].x, src0.y__, src0.111, src0.H__ RCP temp[8].w, src1.x 2: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[8] MAD temp[9].x, src0.x__, src0.w__, src0.000 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ FRC temp[11].w, src0.x 4: src0.xyz = temp[9], src0.w = temp[11], src1.xyz = temp[11] MAD temp[12].x, src0.x__, src0.111, -src0.w__ 5: src0.xyz = const[3], src1.xyz = temp[12], src2.xyz = const[1] MAD temp[13].x, src0.y__, src1.x__, src2.x__ 6: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 7: src0.xyz = temp[14], src0.w = temp[15], src1.xyz = temp[15] MAD temp[16].x, src0.x__, src0.w__, src0.000 8: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 9: BEGIN_TEX; 10: TEX temp[17], temp[10].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 11: src0.w = temp[17] SEM_WAIT CMP temp[19].x, src0.1__, src0.0__, -|src0.w__| MAD temp[20].w, src0.w, src0.1, -src0.1 12: src0.xyz = temp[20], src0.w = temp[20] CMP temp[21].x, src0.0__, src0.1__, src0.w__ 13: src0.xyz = temp[23], src1.xyz = temp[21], srcp.xyz = (src1 - src0) CMP temp[25].x, src0.0__, src0.1__, -|srcp.x__| 14: src0.xyz = temp[19], src1.xyz = temp[25] MAD_SAT temp[26].x, src0.x__, src0.111, src1.x__ 15: src0.xyz = temp[26] CMP temp[27].x, src0.0__, src0.1__, -src0.x__ 16: src0.xyz = temp[27] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 17: BEGIN_TEX; 18: KIL temp[0]; 19: 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 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = const[2] CMP temp[23].x, src0.0__, src0.1__, -src0.x__ RCP temp[15].w, src1.y 1: src0.xyz = input[0], src1.xyz = const[2] MAD temp[7].x, src0.y__, src0.111, src0.H__ RCP temp[8].w, src1.x 2: src0.xyz = temp[7], src0.w = temp[8] MAD temp[9].x, src0.x__, src0.w__, src0.000 3: src0.xyz = temp[9] FRC temp[10].x, src0.x__ FRC temp[11].w, src0.x 4: src0.xyz = temp[9], src0.w = temp[11] MAD temp[12].x, src0.x__, src0.111, -src0.w__ 5: src0.xyz = const[3], src1.xyz = temp[12], src2.xyz = const[1] MAD temp[13].x, src0.y__, src1.x__, src2.x__ 6: src0.xyz = temp[13] MAD temp[14].x, src0.x__, src0.111, src0.H__ 7: src0.xyz = temp[14], src0.w = temp[15] MAD temp[16].x, src0.x__, src0.w__, src0.000 8: src0.xyz = temp[16] MAD temp[10].y, src0._x_, src0.111, src0.000 9: BEGIN_TEX; 10: TEX temp[17], temp[10].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 11: src0.w = temp[17] SEM_WAIT CMP temp[19].x, src0.1__, src0.0__, -|src0.w__| MAD temp[20].w, src0.w, src0.1, -src0.1 12: src0.w = temp[20] CMP temp[21].x, src0.0__, src0.1__, src0.w__ 13: src0.xyz = temp[23], src1.xyz = temp[21], srcp.xyz = (src1 - src0) CMP temp[25].x, src0.0__, src0.1__, -|srcp.x__| 14: src0.xyz = temp[19], src1.xyz = temp[25] MAD_SAT temp[26].x, src0.x__, src0.111, src1.x__ 15: src0.xyz = temp[26] CMP temp[27].x, src0.0__, src0.1__, -src0.x__ 16: src0.xyz = temp[27] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 17: BEGIN_TEX; 18: KIL temp[0]; 19: 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 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = const[2] CMP temp[1].x, src0.0__, src0.1__, -src0.x__ RCP temp[0].w, src1.y 1: src0.xyz = input[0], src1.xyz = const[2] MAD temp[0].x, src0.y__, src0.1__, src0.H__ RCP temp[1].w, src1.x 2: src0.xyz = temp[0], src0.w = temp[1] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 3: src0.xyz = temp[0] FRC temp[2].x, src0.x__ FRC temp[1].w, src0.x 4: src0.xyz = temp[0], src0.w = temp[1] MAD temp[0].x, src0.x__, src0.1__, -src0.w__ 5: src0.xyz = const[3], src1.xyz = temp[0], src2.xyz = const[1] MAD temp[0].x, src0.y__, src1.x__, src2.x__ 6: src0.xyz = temp[0] MAD temp[0].x, src0.x__, src0.1__, src0.H__ 7: src0.xyz = temp[0], src0.w = temp[0] MAD temp[0].x, src0.x__, src0.w__, src0.0__ 8: src0.xyz = temp[0] MAD temp[2].y, src0._x_, src0.11_, src0.00_ 9: BEGIN_TEX; 10: TEX temp[0], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 11: src0.w = temp[0] SEM_WAIT CMP temp[1].y, src0._1_, src0._0_, -|src0._w_| MAD temp[1].w, src0.w, src0.1, -src0.1 12: src0.w = temp[1] CMP temp[2].x, src0.0__, src0.1__, src0.w__ 13: src0.xyz = temp[1], src1.xyz = temp[2], srcp.xyz = (src1 - src0) CMP temp[1].x, src0.0__, src0.1__, -|srcp.x__| 14: src0.xyz = temp[1], src1.xyz = temp[1] MAD_SAT temp[1].x, src0.y__, src0.1__, src1.x__ 15: src0.xyz = temp[1] CMP temp[1].x, src0.0__, src0.1__, -src0.x__ 16: src0.xyz = temp[1] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 17: BEGIN_TEX; 18: KIL temp[1]; 19: 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=11************************************* Hardware program ---------------- NODE 0: alu_offset: 0, tex_offset: 0, alu_end: 8, tex_end: 0 (code_addr: 00000200) 0: xyz: c0 c2 t0 bias-> t1.x (008408a0) w: t0 t0 t0 bias-> t0.w (00800000) xyz: 0.0 1.0 -c0.xyz op: 04080a94 w: c2.y c0.x c0.x op: 05000004 1: xyz: t0 c2 t0 bias-> t0.x (00800880) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.yyy 1.0 0.5 op: 00058a82 w: c2.x t0.x t0.x op: 05000003 2: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xyz t1.www 0.0 op: 00050600 w: t0.x t0.x t0.x op: 00000000 3: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t0 t0 t0 bias-> t1.w (00840000) xyz: t0.xyz t0.xxx t0.xxx op: 04804080 w: t0.x t0.x t0.x op: 03800000 4: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t1 t0 t0 bias-> (00000001) xyz: t0.xyz 1.0 -t1.www op: 000b0a80 w: t0.x t0.x t0.x op: 00000000 5: xyz: c3 t0 c1 bias-> t0.x (00821023) w: t0 t0 t0 bias-> (00000000) xyz: c3.yyy t0.xyz c1.xyz op: 00020202 w: c3.x c3.x c3.x op: 00000000 6: xyz: t0 t0 t0 bias-> t0.x (00800000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xyz 1.0 0.5 op: 00058a80 w: t0.x t0.x t0.x op: 00000000 7: 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 8: xyz: t0 t0 t0 bias-> t2.y (01080000) w: t0 t0 t0 bias-> (00000000) xyz: t0.xxx 1.0 0.0 op: 00050a81 w: t0.x t0.x t0.x op: 00000000 NODE 1: alu_offset: 9, tex_offset: 0, alu_end: 5, tex_end: 0 (code_addr: 00000149) TEX: TEX t0, t2, texture[0] (00008002) 9: xyz: t0 t0 t0 bias-> t1.y (01040000) w: t0 t0 t0 bias-> t1.w (00840000) xyz: 1.0 0.0 -|t0.www| op: 041b0a15 w: t0.w 1.0 -1.0 op: 000c4889 10: xyz: t0 t0 t0 bias-> t2.x (00880000) w: t1 t0 t0 bias-> (00000001) xyz: 0.0 1.0 t1.www op: 84030a94 NOP w: t0.x t0.x t0.x op: 00000000 11: xyz: t1 t2 t0 sub-> t1.x (00840081) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -|srcp.xyz| op: 043bca94 w: t1.x t1.x t1.x op: 00000000 12: xyz: t1 t1 t0 bias-> t1.x (00840041) w: t0 t0 t0 bias-> (00000000) xyz: t1.yyy 1.0 t1.xyz op: 40010a82 w: t1.x t1.x t1.x op: 00000000 13: xyz: t1 t0 t0 bias-> t1.x (00840001) w: t0 t0 t0 bias-> (00000000) xyz: 0.0 1.0 -t1.xyz op: 04080a94 w: t1.x t1.x t1.x op: 00000000 14: xyz: t1 t0 t0 bias-> t1.xyz (03840001) w: t0 t0 t0 bias-> t1.w (00840000) xyz: -t1.xxx 1.0 0.0 op: 00050aa1 w: -t1.x 1.0 0.0 op: 000408a0 NODE 2: alu_offset: 15, tex_offset: 1, alu_end: 0, tex_end: 0 (code_addr: 0040100f) TEX: KIL t0, t1, texture[0] (00010001) 15: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL IN[4] DCL IN[5] DCL OUT[0], POSITION DCL OUT[1], GENERIC[12] DCL OUT[2], GENERIC[13] DCL OUT[3], GENERIC[14] DCL OUT[4], GENERIC[15] DCL OUT[5], GENERIC[16] DCL CONST[0..5] 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 DCL TEMP[7], LOCAL DCL TEMP[8], LOCAL DCL TEMP[9], LOCAL DCL TEMP[10], LOCAL DCL TEMP[11], LOCAL DCL TEMP[12], LOCAL DCL TEMP[13], LOCAL DCL TEMP[14], LOCAL DCL TEMP[15], LOCAL DCL TEMP[16], LOCAL IMM FLT32 { 0.5000, 0.0000, 0.0010, 1.0000} IMM FLT32 { 2.0000, -1.0000, -4.0000, 0.2500} IMM FLT32 { 0.0001, 2.0000, -2.0000, 0.0000} 0: MUL TEMP[0].xy, CONST[5].xyyy, IMM[0].xxxx 1: ABS TEMP[1].x, IN[5].zzzz 2: MUL TEMP[2], CONST[0], IN[3].xxxx 3: MAD TEMP[2], CONST[1], IN[3].yyyy, TEMP[2] 4: MAD TEMP[2], CONST[2], IN[1].zzzz, TEMP[2] 5: ADD TEMP[2], TEMP[2], CONST[3] 6: MOV TEMP[3].x, TEMP[2].xxzw 7: MOV TEMP[3].y, -TEMP[2].yyyy 8: MUL TEMP[3].xy, TEMP[0].xyyy, TEMP[3].xyyy 9: RCP TEMP[4].x, TEMP[2].wwww 10: MUL TEMP[3].xy, TEMP[3].xyyy, TEMP[4].xxxx 11: MUL TEMP[4], CONST[0], IN[3].zzzz 12: MAD TEMP[4], CONST[1], IN[3].wwww, TEMP[4] 13: MAD TEMP[4], CONST[2], IN[1].zzzz, TEMP[4] 14: ADD TEMP[4], TEMP[4], CONST[3] 15: MOV TEMP[5].x, TEMP[4].xxzw 16: MOV TEMP[5].y, -TEMP[4].yyyy 17: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[5].xyyy 18: RCP TEMP[5].x, TEMP[4].wwww 19: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[5].xxxx 20: ADD TEMP[5].xy, TEMP[3].xyyy, -TEMP[0].xyyy 21: DP2 TEMP[5].x, TEMP[5].xyyy, TEMP[5].xyyy 22: RSQ TEMP[6].x, TEMP[5].xxxx 23: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[5].xxxx 24: CMP TEMP[5].x, -TEMP[5].xxxx, TEMP[6].xxxx, IMM[0].yyyy 25: MOV TEMP[6].x, IMM[0].yyyy 26: MOV TEMP[6].y, TEMP[5].xxxx 27: ABS TEMP[7].x, CONST[2].yyyy 28: SLT TEMP[7].x, IMM[0].zzzz, TEMP[7].xxxx 29: MOV TEMP[8].z, TEMP[1].xxxx 30: MUL TEMP[8].xy, IN[5].xyyy, CONST[4].xxxx 31: MAD TEMP[9].x, CONST[4].xxxx, TEMP[1].xxxx, -TEMP[1].xxxx 32: MUL TEMP[9].x, TEMP[9].xxxx, IMM[0].xxxx 33: ADD TEMP[8].xy, TEMP[8].xyyy, -TEMP[9].xxxx 34: ADD TEMP[9].x, TEMP[5].xxxx, -TEMP[1].xxxx 35: MUL TEMP[9].x, TEMP[9].xxxx, IMM[0].xxxx 36: ADD TEMP[6].xy, TEMP[6].xyyy, -TEMP[9].xxxx 37: ADD TEMP[9].x, IMM[0].wwww, -TEMP[7].xxxx 38: MUL TEMP[9].xy, TEMP[8].xyyy, TEMP[9].xxxx 39: MAD TEMP[8].xy, TEMP[6].xyyy, TEMP[7].xxxx, TEMP[9].xyyy 40: MUL TEMP[8].xyz, TEMP[8].xyzz, IMM[1].xxxx 41: MUL TEMP[6].x, IN[2].xxxx, IMM[0].xxxx 42: FLR TEMP[6].x, TEMP[6].xxxx 43: MAD TEMP[6].x, IMM[1].xxxx, TEMP[6].xxxx, IMM[1].yyyy 44: ADD TEMP[9].x, IN[2].xxxx, IMM[0].wwww 45: MUL TEMP[9].x, TEMP[9].xxxx, IMM[0].xxxx 46: FLR TEMP[9].x, TEMP[9].xxxx 47: MUL TEMP[9].x, TEMP[9].xxxx, IMM[0].xxxx 48: FRC TEMP[9].x, TEMP[9].xxxx 49: MAD TEMP[9].x, TEMP[9].xxxx, IMM[1].zzzz, IMM[0].wwww 50: MUL TEMP[10].x, IN[4].yyyy, IMM[1].wwww 51: SLT TEMP[11].x, TEMP[6].xxxx, IMM[0].yyyy 52: MUL TEMP[12].x, IMM[1].xxxx, IN[4].xxxx 53: ADD TEMP[12].x, TEMP[8].xxxx, -TEMP[12].xxxx 54: MAD TEMP[13].x, IMM[1].xxxx, IN[4].xxxx, TEMP[8].yyyy 55: ADD TEMP[14].x, IMM[0].wwww, -TEMP[11].xxxx 56: MUL TEMP[13].x, TEMP[13].xxxx, TEMP[14].xxxx 57: MAD TEMP[11].x, TEMP[12].xxxx, TEMP[11].xxxx, TEMP[13].xxxx 58: ADD TEMP[11].x, TEMP[11].xxxx, IN[4].zzzz 59: MUL TEMP[12].x, TEMP[9].xxxx, TEMP[10].xxxx 60: MOV TEMP[11].y, TEMP[12].xxxx 61: ADD TEMP[0].xy, TEMP[0].xyyy, -TEMP[3].xyyy 62: DP2 TEMP[12].x, TEMP[0].xyyy, TEMP[0].xyyy 63: RSQ TEMP[12].x, TEMP[12].xxxx 64: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[12].xxxx 65: MOV TEMP[12].x, -TEMP[0].yyyy 66: MOV TEMP[12].y, TEMP[0].xxxx 67: MUL TEMP[13].x, TEMP[6].xxxx, -IN[1].xxxx 68: SGE TEMP[14].x, IMM[0].yyyy, IN[5].zzzz 69: MAD TEMP[15].x, TEMP[6].xxxx, TEMP[0].xxxx, IMM[2].xxxx 70: SSG TEMP[15].x, TEMP[15].xxxx 71: ADD TEMP[16].x, IMM[0].wwww, -TEMP[14].xxxx 72: MAD TEMP[14].x, TEMP[15].xxxx, TEMP[14].xxxx, TEMP[16].xxxx 73: MUL TEMP[13].x, TEMP[13].xxxx, TEMP[14].xxxx 74: MOV TEMP[14].w, IMM[0].wwww 75: MUL TEMP[15].xy, IN[4].xxxx, TEMP[0].xyyy 76: ADD TEMP[3].xy, TEMP[3].xyyy, -TEMP[15].xyyy 77: MUL TEMP[15].x, TEMP[10].xxxx, IMM[0].xxxx 78: MUL TEMP[15].xy, TEMP[15].xxxx, TEMP[12].xyyy 79: MUL TEMP[9].xy, TEMP[15].xyyy, TEMP[9].xxxx 80: MUL TEMP[9].xy, TEMP[9].xyyy, TEMP[6].xxxx 81: ADD TEMP[3].xy, TEMP[3].xyyy, -TEMP[9].xyyy 82: MUL TEMP[6].x, TEMP[6].xxxx, -IN[1].yyyy 83: MUL TEMP[9].xy, TEMP[12].xyyy, TEMP[13].xxxx 84: MAD TEMP[0].xy, TEMP[0].xyyy, TEMP[6].xxxx, TEMP[9].xyyy 85: ADD TEMP[0].xy, TEMP[3].xyyy, TEMP[0].xyyy 86: RCP TEMP[3].x, CONST[5].xxxx 87: RCP TEMP[3].y, CONST[5].yyyy 88: MUL TEMP[3].xy, IMM[2].yzzz, TEMP[3].xyyy 89: MUL TEMP[14].xy, TEMP[0].xyyy, TEMP[3].xyyy 90: MOV TEMP[14].z, IN[0].xxxx 91: MOV TEMP[0].zw, TEMP[14].wwzw 92: SLT TEMP[2].x, TEMP[2].wwww, IMM[2].xxxx 93: SLT TEMP[3].x, TEMP[4].wwww, IMM[2].xxxx 94: ADD TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 95: SLT TEMP[2].x, -TEMP[2].xxxx, IMM[0].yyyy 96: SLT TEMP[1].x, TEMP[5].xxxx, TEMP[1].xxxx 97: MUL TEMP[1].x, TEMP[7].xxxx, TEMP[1].xxxx 98: ADD TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 99: SLT TEMP[1].x, -TEMP[1].xxxx, IMM[0].yyyy 100: ADD TEMP[1].x, -TEMP[1].xxxx, IMM[0].wwww 101: MUL TEMP[0].xy, TEMP[14].xyyy, TEMP[1].xxxx 102: MOV OUT[3].xyz, IN[2].yzwy 103: MOV OUT[1], TEMP[10].xxxx 104: MOV OUT[0], TEMP[0] 105: MOV OUT[5].xy, TEMP[11].xyxx 106: MOV OUT[4].xyz, TEMP[8].xyzx 107: MOV OUT[2], IN[4].wwww 108: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xyyy, const[6].xxxx; 1: ABS temp[1].x, input[5].zzzz; 2: MUL temp[2], const[0], input[3].xxxx; 3: MAD temp[2], const[1], input[3].yyyy, temp[2]; 4: MAD temp[2], const[2], input[1].zzzz, temp[2]; 5: ADD temp[2], temp[2], const[3]; 6: MOV temp[3].x, temp[2].xxzw; 7: MOV temp[3].y, -temp[2].yyyy; 8: MUL temp[3].xy, temp[0].xyyy, temp[3].xyyy; 9: RCP temp[4].x, temp[2].wwww; 10: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 11: MUL temp[4], const[0], input[3].zzzz; 12: MAD temp[4], const[1], input[3].wwww, temp[4]; 13: MAD temp[4], const[2], input[1].zzzz, temp[4]; 14: ADD temp[4], temp[4], const[3]; 15: MOV temp[5].x, temp[4].xxzw; 16: MOV temp[5].y, -temp[4].yyyy; 17: MUL temp[0].xy, temp[0].xyyy, temp[5].xyyy; 18: RCP temp[5].x, temp[4].wwww; 19: MUL temp[0].xy, temp[0].xyyy, temp[5].xxxx; 20: ADD temp[5].xy, temp[3].xyyy, -temp[0].xyyy; 21: DP2 temp[5].x, temp[5].xyyy, temp[5].xyyy; 22: RSQ temp[6].x, temp[5].xxxx; 23: MUL temp[6].x, temp[6].xxxx, temp[5].xxxx; 24: CMP temp[5].x, -temp[5].xxxx, temp[6].xxxx, const[6].yyyy; 25: MOV temp[6].x, const[6].yyyy; 26: MOV temp[6].y, temp[5].xxxx; 27: ABS temp[7].x, const[2].yyyy; 28: SLT temp[7].x, const[6].zzzz, temp[7].xxxx; 29: MOV temp[8].z, temp[1].xxxx; 30: MUL temp[8].xy, input[5].xyyy, const[4].xxxx; 31: MAD temp[9].x, const[4].xxxx, temp[1].xxxx, -temp[1].xxxx; 32: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 33: ADD temp[8].xy, temp[8].xyyy, -temp[9].xxxx; 34: ADD temp[9].x, temp[5].xxxx, -temp[1].xxxx; 35: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 36: ADD temp[6].xy, temp[6].xyyy, -temp[9].xxxx; 37: ADD temp[9].x, const[6].wwww, -temp[7].xxxx; 38: MUL temp[9].xy, temp[8].xyyy, temp[9].xxxx; 39: MAD temp[8].xy, temp[6].xyyy, temp[7].xxxx, temp[9].xyyy; 40: MUL temp[8].xyz, temp[8].xyzz, const[7].xxxx; 41: MUL temp[6].x, input[2].xxxx, const[6].xxxx; 42: FLR temp[6].x, temp[6].xxxx; 43: MAD temp[6].x, const[7].xxxx, temp[6].xxxx, const[7].yyyy; 44: ADD temp[9].x, input[2].xxxx, const[6].wwww; 45: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 46: FLR temp[9].x, temp[9].xxxx; 47: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 48: FRC temp[9].x, temp[9].xxxx; 49: MAD temp[9].x, temp[9].xxxx, const[7].zzzz, const[6].wwww; 50: MUL temp[10].x, input[4].yyyy, const[7].wwww; 51: SLT temp[11].x, temp[6].xxxx, const[6].yyyy; 52: MUL temp[12].x, const[7].xxxx, input[4].xxxx; 53: ADD temp[12].x, temp[8].xxxx, -temp[12].xxxx; 54: MAD temp[13].x, const[7].xxxx, input[4].xxxx, temp[8].yyyy; 55: ADD temp[14].x, const[6].wwww, -temp[11].xxxx; 56: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 57: MAD temp[11].x, temp[12].xxxx, temp[11].xxxx, temp[13].xxxx; 58: ADD temp[11].x, temp[11].xxxx, input[4].zzzz; 59: MUL temp[12].x, temp[9].xxxx, temp[10].xxxx; 60: MOV temp[11].y, temp[12].xxxx; 61: ADD temp[0].xy, temp[0].xyyy, -temp[3].xyyy; 62: DP2 temp[12].x, temp[0].xyyy, temp[0].xyyy; 63: RSQ temp[12].x, temp[12].xxxx; 64: MUL temp[0].xy, temp[0].xyyy, temp[12].xxxx; 65: MOV temp[12].x, -temp[0].yyyy; 66: MOV temp[12].y, temp[0].xxxx; 67: MUL temp[13].x, temp[6].xxxx, -input[1].xxxx; 68: SGE temp[14].x, const[6].yyyy, input[5].zzzz; 69: MAD temp[15].x, temp[6].xxxx, temp[0].xxxx, const[8].xxxx; 70: SSG temp[15].x, temp[15].xxxx; 71: ADD temp[16].x, const[6].wwww, -temp[14].xxxx; 72: MAD temp[14].x, temp[15].xxxx, temp[14].xxxx, temp[16].xxxx; 73: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 74: MOV temp[14].w, const[6].wwww; 75: MUL temp[15].xy, input[4].xxxx, temp[0].xyyy; 76: ADD temp[3].xy, temp[3].xyyy, -temp[15].xyyy; 77: MUL temp[15].x, temp[10].xxxx, const[6].xxxx; 78: MUL temp[15].xy, temp[15].xxxx, temp[12].xyyy; 79: MUL temp[9].xy, temp[15].xyyy, temp[9].xxxx; 80: MUL temp[9].xy, temp[9].xyyy, temp[6].xxxx; 81: ADD temp[3].xy, temp[3].xyyy, -temp[9].xyyy; 82: MUL temp[6].x, temp[6].xxxx, -input[1].yyyy; 83: MUL temp[9].xy, temp[12].xyyy, temp[13].xxxx; 84: MAD temp[0].xy, temp[0].xyyy, temp[6].xxxx, temp[9].xyyy; 85: ADD temp[0].xy, temp[3].xyyy, temp[0].xyyy; 86: RCP temp[3].x, const[5].xxxx; 87: RCP temp[3].y, const[5].yyyy; 88: MUL temp[3].xy, const[8].yzzz, temp[3].xyyy; 89: MUL temp[14].xy, temp[0].xyyy, temp[3].xyyy; 90: MOV temp[14].z, input[0].xxxx; 91: MOV temp[0].zw, temp[14].wwzw; 92: SLT temp[2].x, temp[2].wwww, const[8].xxxx; 93: SLT temp[3].x, temp[4].wwww, const[8].xxxx; 94: ADD temp[2].x, temp[2].xxxx, temp[3].xxxx; 95: SLT temp[2].x, -temp[2].xxxx, const[6].yyyy; 96: SLT temp[1].x, temp[5].xxxx, temp[1].xxxx; 97: MUL temp[1].x, temp[7].xxxx, temp[1].xxxx; 98: ADD temp[1].x, temp[2].xxxx, temp[1].xxxx; 99: SLT temp[1].x, -temp[1].xxxx, const[6].yyyy; 100: ADD temp[1].x, -temp[1].xxxx, const[6].wwww; 101: MUL temp[0].xy, temp[14].xyyy, temp[1].xxxx; 102: MOV output[3].xyz, input[2].yzwy; 103: MOV output[1], temp[10].xxxx; 104: MOV temp[17], temp[0]; 105: MOV output[5].xy, temp[11].xyxx; 106: MOV output[4].xyz, temp[8].xyzx; 107: MOV output[2], input[4].wwww; 108: MOV output[0], temp[17]; 109: MOV output[6], temp[17]; Vertex Program: after 'emulate branches' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xyyy, const[6].xxxx; 1: ABS temp[1].x, input[5].zzzz; 2: MUL temp[2], const[0], input[3].xxxx; 3: MAD temp[2], const[1], input[3].yyyy, temp[2]; 4: MAD temp[2], const[2], input[1].zzzz, temp[2]; 5: ADD temp[2], temp[2], const[3]; 6: MOV temp[3].x, temp[2].xxzw; 7: MOV temp[3].y, -temp[2].yyyy; 8: MUL temp[3].xy, temp[0].xyyy, temp[3].xyyy; 9: RCP temp[4].x, temp[2].wwww; 10: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 11: MUL temp[4], const[0], input[3].zzzz; 12: MAD temp[4], const[1], input[3].wwww, temp[4]; 13: MAD temp[4], const[2], input[1].zzzz, temp[4]; 14: ADD temp[4], temp[4], const[3]; 15: MOV temp[5].x, temp[4].xxzw; 16: MOV temp[5].y, -temp[4].yyyy; 17: MUL temp[0].xy, temp[0].xyyy, temp[5].xyyy; 18: RCP temp[5].x, temp[4].wwww; 19: MUL temp[0].xy, temp[0].xyyy, temp[5].xxxx; 20: ADD temp[5].xy, temp[3].xyyy, -temp[0].xyyy; 21: DP2 temp[5].x, temp[5].xyyy, temp[5].xyyy; 22: RSQ temp[6].x, temp[5].xxxx; 23: MUL temp[6].x, temp[6].xxxx, temp[5].xxxx; 24: CMP temp[5].x, -temp[5].xxxx, temp[6].xxxx, const[6].yyyy; 25: MOV temp[6].x, const[6].yyyy; 26: MOV temp[6].y, temp[5].xxxx; 27: ABS temp[7].x, const[2].yyyy; 28: SLT temp[7].x, const[6].zzzz, temp[7].xxxx; 29: MOV temp[8].z, temp[1].xxxx; 30: MUL temp[8].xy, input[5].xyyy, const[4].xxxx; 31: MAD temp[9].x, const[4].xxxx, temp[1].xxxx, -temp[1].xxxx; 32: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 33: ADD temp[8].xy, temp[8].xyyy, -temp[9].xxxx; 34: ADD temp[9].x, temp[5].xxxx, -temp[1].xxxx; 35: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 36: ADD temp[6].xy, temp[6].xyyy, -temp[9].xxxx; 37: ADD temp[9].x, const[6].wwww, -temp[7].xxxx; 38: MUL temp[9].xy, temp[8].xyyy, temp[9].xxxx; 39: MAD temp[8].xy, temp[6].xyyy, temp[7].xxxx, temp[9].xyyy; 40: MUL temp[8].xyz, temp[8].xyzz, const[7].xxxx; 41: MUL temp[6].x, input[2].xxxx, const[6].xxxx; 42: FLR temp[6].x, temp[6].xxxx; 43: MAD temp[6].x, const[7].xxxx, temp[6].xxxx, const[7].yyyy; 44: ADD temp[9].x, input[2].xxxx, const[6].wwww; 45: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 46: FLR temp[9].x, temp[9].xxxx; 47: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 48: FRC temp[9].x, temp[9].xxxx; 49: MAD temp[9].x, temp[9].xxxx, const[7].zzzz, const[6].wwww; 50: MUL temp[10].x, input[4].yyyy, const[7].wwww; 51: SLT temp[11].x, temp[6].xxxx, const[6].yyyy; 52: MUL temp[12].x, const[7].xxxx, input[4].xxxx; 53: ADD temp[12].x, temp[8].xxxx, -temp[12].xxxx; 54: MAD temp[13].x, const[7].xxxx, input[4].xxxx, temp[8].yyyy; 55: ADD temp[14].x, const[6].wwww, -temp[11].xxxx; 56: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 57: MAD temp[11].x, temp[12].xxxx, temp[11].xxxx, temp[13].xxxx; 58: ADD temp[11].x, temp[11].xxxx, input[4].zzzz; 59: MUL temp[12].x, temp[9].xxxx, temp[10].xxxx; 60: MOV temp[11].y, temp[12].xxxx; 61: ADD temp[0].xy, temp[0].xyyy, -temp[3].xyyy; 62: DP2 temp[12].x, temp[0].xyyy, temp[0].xyyy; 63: RSQ temp[12].x, temp[12].xxxx; 64: MUL temp[0].xy, temp[0].xyyy, temp[12].xxxx; 65: MOV temp[12].x, -temp[0].yyyy; 66: MOV temp[12].y, temp[0].xxxx; 67: MUL temp[13].x, temp[6].xxxx, -input[1].xxxx; 68: SGE temp[14].x, const[6].yyyy, input[5].zzzz; 69: MAD temp[15].x, temp[6].xxxx, temp[0].xxxx, const[8].xxxx; 70: SSG temp[15].x, temp[15].xxxx; 71: ADD temp[16].x, const[6].wwww, -temp[14].xxxx; 72: MAD temp[14].x, temp[15].xxxx, temp[14].xxxx, temp[16].xxxx; 73: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 74: MOV temp[14].w, const[6].wwww; 75: MUL temp[15].xy, input[4].xxxx, temp[0].xyyy; 76: ADD temp[3].xy, temp[3].xyyy, -temp[15].xyyy; 77: MUL temp[15].x, temp[10].xxxx, const[6].xxxx; 78: MUL temp[15].xy, temp[15].xxxx, temp[12].xyyy; 79: MUL temp[9].xy, temp[15].xyyy, temp[9].xxxx; 80: MUL temp[9].xy, temp[9].xyyy, temp[6].xxxx; 81: ADD temp[3].xy, temp[3].xyyy, -temp[9].xyyy; 82: MUL temp[6].x, temp[6].xxxx, -input[1].yyyy; 83: MUL temp[9].xy, temp[12].xyyy, temp[13].xxxx; 84: MAD temp[0].xy, temp[0].xyyy, temp[6].xxxx, temp[9].xyyy; 85: ADD temp[0].xy, temp[3].xyyy, temp[0].xyyy; 86: RCP temp[3].x, const[5].xxxx; 87: RCP temp[3].y, const[5].yyyy; 88: MUL temp[3].xy, const[8].yzzz, temp[3].xyyy; 89: MUL temp[14].xy, temp[0].xyyy, temp[3].xyyy; 90: MOV temp[14].z, input[0].xxxx; 91: MOV temp[0].zw, temp[14].wwzw; 92: SLT temp[2].x, temp[2].wwww, const[8].xxxx; 93: SLT temp[3].x, temp[4].wwww, const[8].xxxx; 94: ADD temp[2].x, temp[2].xxxx, temp[3].xxxx; 95: SLT temp[2].x, -temp[2].xxxx, const[6].yyyy; 96: SLT temp[1].x, temp[5].xxxx, temp[1].xxxx; 97: MUL temp[1].x, temp[7].xxxx, temp[1].xxxx; 98: ADD temp[1].x, temp[2].xxxx, temp[1].xxxx; 99: SLT temp[1].x, -temp[1].xxxx, const[6].yyyy; 100: ADD temp[1].x, -temp[1].xxxx, const[6].wwww; 101: MUL temp[0].xy, temp[14].xyyy, temp[1].xxxx; 102: MOV output[3].xyz, input[2].yzwy; 103: MOV output[1], temp[10].xxxx; 104: MOV temp[17], temp[0]; 105: MOV output[5].xy, temp[11].xyxx; 106: MOV output[4].xyz, temp[8].xyzx; 107: MOV output[2], input[4].wwww; 108: MOV output[0], temp[17]; 109: MOV output[6], temp[17]; Vertex Program: after 'emulate negative addressing' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xyyy, const[6].xxxx; 1: ABS temp[1].x, input[5].zzzz; 2: MUL temp[2], const[0], input[3].xxxx; 3: MAD temp[2], const[1], input[3].yyyy, temp[2]; 4: MAD temp[2], const[2], input[1].zzzz, temp[2]; 5: ADD temp[2], temp[2], const[3]; 6: MOV temp[3].x, temp[2].xxzw; 7: MOV temp[3].y, -temp[2].yyyy; 8: MUL temp[3].xy, temp[0].xyyy, temp[3].xyyy; 9: RCP temp[4].x, temp[2].wwww; 10: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 11: MUL temp[4], const[0], input[3].zzzz; 12: MAD temp[4], const[1], input[3].wwww, temp[4]; 13: MAD temp[4], const[2], input[1].zzzz, temp[4]; 14: ADD temp[4], temp[4], const[3]; 15: MOV temp[5].x, temp[4].xxzw; 16: MOV temp[5].y, -temp[4].yyyy; 17: MUL temp[0].xy, temp[0].xyyy, temp[5].xyyy; 18: RCP temp[5].x, temp[4].wwww; 19: MUL temp[0].xy, temp[0].xyyy, temp[5].xxxx; 20: ADD temp[5].xy, temp[3].xyyy, -temp[0].xyyy; 21: DP2 temp[5].x, temp[5].xyyy, temp[5].xyyy; 22: RSQ temp[6].x, temp[5].xxxx; 23: MUL temp[6].x, temp[6].xxxx, temp[5].xxxx; 24: CMP temp[5].x, -temp[5].xxxx, temp[6].xxxx, const[6].yyyy; 25: MOV temp[6].x, const[6].yyyy; 26: MOV temp[6].y, temp[5].xxxx; 27: ABS temp[7].x, const[2].yyyy; 28: SLT temp[7].x, const[6].zzzz, temp[7].xxxx; 29: MOV temp[8].z, temp[1].xxxx; 30: MUL temp[8].xy, input[5].xyyy, const[4].xxxx; 31: MAD temp[9].x, const[4].xxxx, temp[1].xxxx, -temp[1].xxxx; 32: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 33: ADD temp[8].xy, temp[8].xyyy, -temp[9].xxxx; 34: ADD temp[9].x, temp[5].xxxx, -temp[1].xxxx; 35: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 36: ADD temp[6].xy, temp[6].xyyy, -temp[9].xxxx; 37: ADD temp[9].x, const[6].wwww, -temp[7].xxxx; 38: MUL temp[9].xy, temp[8].xyyy, temp[9].xxxx; 39: MAD temp[8].xy, temp[6].xyyy, temp[7].xxxx, temp[9].xyyy; 40: MUL temp[8].xyz, temp[8].xyzz, const[7].xxxx; 41: MUL temp[6].x, input[2].xxxx, const[6].xxxx; 42: FLR temp[6].x, temp[6].xxxx; 43: MAD temp[6].x, const[7].xxxx, temp[6].xxxx, const[7].yyyy; 44: ADD temp[9].x, input[2].xxxx, const[6].wwww; 45: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 46: FLR temp[9].x, temp[9].xxxx; 47: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 48: FRC temp[9].x, temp[9].xxxx; 49: MAD temp[9].x, temp[9].xxxx, const[7].zzzz, const[6].wwww; 50: MUL temp[10].x, input[4].yyyy, const[7].wwww; 51: SLT temp[11].x, temp[6].xxxx, const[6].yyyy; 52: MUL temp[12].x, const[7].xxxx, input[4].xxxx; 53: ADD temp[12].x, temp[8].xxxx, -temp[12].xxxx; 54: MAD temp[13].x, const[7].xxxx, input[4].xxxx, temp[8].yyyy; 55: ADD temp[14].x, const[6].wwww, -temp[11].xxxx; 56: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 57: MAD temp[11].x, temp[12].xxxx, temp[11].xxxx, temp[13].xxxx; 58: ADD temp[11].x, temp[11].xxxx, input[4].zzzz; 59: MUL temp[12].x, temp[9].xxxx, temp[10].xxxx; 60: MOV temp[11].y, temp[12].xxxx; 61: ADD temp[0].xy, temp[0].xyyy, -temp[3].xyyy; 62: DP2 temp[12].x, temp[0].xyyy, temp[0].xyyy; 63: RSQ temp[12].x, temp[12].xxxx; 64: MUL temp[0].xy, temp[0].xyyy, temp[12].xxxx; 65: MOV temp[12].x, -temp[0].yyyy; 66: MOV temp[12].y, temp[0].xxxx; 67: MUL temp[13].x, temp[6].xxxx, -input[1].xxxx; 68: SGE temp[14].x, const[6].yyyy, input[5].zzzz; 69: MAD temp[15].x, temp[6].xxxx, temp[0].xxxx, const[8].xxxx; 70: SSG temp[15].x, temp[15].xxxx; 71: ADD temp[16].x, const[6].wwww, -temp[14].xxxx; 72: MAD temp[14].x, temp[15].xxxx, temp[14].xxxx, temp[16].xxxx; 73: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 74: MOV temp[14].w, const[6].wwww; 75: MUL temp[15].xy, input[4].xxxx, temp[0].xyyy; 76: ADD temp[3].xy, temp[3].xyyy, -temp[15].xyyy; 77: MUL temp[15].x, temp[10].xxxx, const[6].xxxx; 78: MUL temp[15].xy, temp[15].xxxx, temp[12].xyyy; 79: MUL temp[9].xy, temp[15].xyyy, temp[9].xxxx; 80: MUL temp[9].xy, temp[9].xyyy, temp[6].xxxx; 81: ADD temp[3].xy, temp[3].xyyy, -temp[9].xyyy; 82: MUL temp[6].x, temp[6].xxxx, -input[1].yyyy; 83: MUL temp[9].xy, temp[12].xyyy, temp[13].xxxx; 84: MAD temp[0].xy, temp[0].xyyy, temp[6].xxxx, temp[9].xyyy; 85: ADD temp[0].xy, temp[3].xyyy, temp[0].xyyy; 86: RCP temp[3].x, const[5].xxxx; 87: RCP temp[3].y, const[5].yyyy; 88: MUL temp[3].xy, const[8].yzzz, temp[3].xyyy; 89: MUL temp[14].xy, temp[0].xyyy, temp[3].xyyy; 90: MOV temp[14].z, input[0].xxxx; 91: MOV temp[0].zw, temp[14].wwzw; 92: SLT temp[2].x, temp[2].wwww, const[8].xxxx; 93: SLT temp[3].x, temp[4].wwww, const[8].xxxx; 94: ADD temp[2].x, temp[2].xxxx, temp[3].xxxx; 95: SLT temp[2].x, -temp[2].xxxx, const[6].yyyy; 96: SLT temp[1].x, temp[5].xxxx, temp[1].xxxx; 97: MUL temp[1].x, temp[7].xxxx, temp[1].xxxx; 98: ADD temp[1].x, temp[2].xxxx, temp[1].xxxx; 99: SLT temp[1].x, -temp[1].xxxx, const[6].yyyy; 100: ADD temp[1].x, -temp[1].xxxx, const[6].wwww; 101: MUL temp[0].xy, temp[14].xyyy, temp[1].xxxx; 102: MOV output[3].xyz, input[2].yzwy; 103: MOV output[1], temp[10].xxxx; 104: MOV temp[17], temp[0]; 105: MOV output[5].xy, temp[11].xyxx; 106: MOV output[4].xyz, temp[8].xyzx; 107: MOV output[2], input[4].wwww; 108: MOV output[0], temp[17]; 109: MOV output[6], temp[17]; Vertex Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xyyy, const[6].xxxx; 1: MAX temp[1].x, input[5].zzzz, -input[5].zzzz; 2: MUL temp[2], const[0], input[3].xxxx; 3: MAD temp[2], const[1], input[3].yyyy, temp[2]; 4: MAD temp[2], const[2], input[1].zzzz, temp[2]; 5: ADD temp[2], temp[2], const[3]; 6: MOV temp[3].x, temp[2].xxzw; 7: MOV temp[3].y, -temp[2].yyyy; 8: MUL temp[3].xy, temp[0].xyyy, temp[3].xyyy; 9: RCP temp[4].x, temp[2].wwww; 10: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 11: MUL temp[4], const[0], input[3].zzzz; 12: MAD temp[4], const[1], input[3].wwww, temp[4]; 13: MAD temp[4], const[2], input[1].zzzz, temp[4]; 14: ADD temp[4], temp[4], const[3]; 15: MOV temp[5].x, temp[4].xxzw; 16: MOV temp[5].y, -temp[4].yyyy; 17: MUL temp[0].xy, temp[0].xyyy, temp[5].xyyy; 18: RCP temp[5].x, temp[4].wwww; 19: MUL temp[0].xy, temp[0].xyyy, temp[5].xxxx; 20: ADD temp[5].xy, temp[3].xyyy, -temp[0].xyyy; 21: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 22: RSQ temp[6].x, temp[5].xxxx; 23: MUL temp[6].x, temp[6].xxxx, temp[5].xxxx; 24: SLT temp[18].x, -temp[5].xxxx, none.0000; 25: ADD temp[5].x, temp[6].xxxx, -const[6].yyyy; 26: MAD temp[5].x, temp[18], temp[5], const[6].yyyy; 27: MOV temp[6].x, const[6].yyyy; 28: MOV temp[6].y, temp[5].xxxx; 29: MAX temp[7].x, const[2].yyyy, -const[2].yyyy; 30: SLT temp[7].x, const[6].zzzz, temp[7].xxxx; 31: MOV temp[8].z, temp[1].xxxx; 32: MUL temp[8].xy, input[5].xyyy, const[4].xxxx; 33: MAD temp[9].x, const[4].xxxx, temp[1].xxxx, -temp[1].xxxx; 34: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 35: ADD temp[8].xy, temp[8].xyyy, -temp[9].xxxx; 36: ADD temp[9].x, temp[5].xxxx, -temp[1].xxxx; 37: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 38: ADD temp[6].xy, temp[6].xyyy, -temp[9].xxxx; 39: ADD temp[9].x, const[6].wwww, -temp[7].xxxx; 40: MUL temp[9].xy, temp[8].xyyy, temp[9].xxxx; 41: MAD temp[8].xy, temp[6].xyyy, temp[7].xxxx, temp[9].xyyy; 42: MUL temp[8].xyz, temp[8].xyzz, const[7].xxxx; 43: MUL temp[6].x, input[2].xxxx, const[6].xxxx; 44: FRC temp[19].x, temp[6].xxxx; 45: ADD temp[6].x, temp[6].xxxx, -temp[19]; 46: MAD temp[6].x, const[7].xxxx, temp[6].xxxx, const[7].yyyy; 47: ADD temp[9].x, input[2].xxxx, const[6].wwww; 48: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 49: FRC temp[20].x, temp[9].xxxx; 50: ADD temp[9].x, temp[9].xxxx, -temp[20]; 51: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 52: FRC temp[9].x, temp[9].xxxx; 53: MAD temp[9].x, temp[9].xxxx, const[7].zzzz, const[6].wwww; 54: MUL temp[10].x, input[4].yyyy, const[7].wwww; 55: SLT temp[11].x, temp[6].xxxx, const[6].yyyy; 56: MUL temp[12].x, const[7].xxxx, input[4].xxxx; 57: ADD temp[12].x, temp[8].xxxx, -temp[12].xxxx; 58: MAD temp[13].x, const[7].xxxx, input[4].xxxx, temp[8].yyyy; 59: ADD temp[14].x, const[6].wwww, -temp[11].xxxx; 60: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 61: MAD temp[11].x, temp[12].xxxx, temp[11].xxxx, temp[13].xxxx; 62: ADD temp[11].x, temp[11].xxxx, input[4].zzzz; 63: MUL temp[12].x, temp[9].xxxx, temp[10].xxxx; 64: MOV temp[11].y, temp[12].xxxx; 65: ADD temp[0].xy, temp[0].xyyy, -temp[3].xyyy; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].xxxx; 68: MUL temp[0].xy, temp[0].xyyy, temp[12].xxxx; 69: MOV temp[12].x, -temp[0].yyyy; 70: MOV temp[12].y, temp[0].xxxx; 71: MUL temp[13].x, temp[6].xxxx, -input[1].xxxx; 72: SGE temp[14].x, const[6].yyyy, input[5].zzzz; 73: MAD temp[15].x, temp[6].xxxx, temp[0].xxxx, const[8].xxxx; 74: SLT temp[21].x, none.0000, temp[15].xxxx; 75: SLT temp[22].x, temp[15].xxxx, none.0000; 76: ADD temp[15].x, temp[21], -temp[22]; 77: ADD temp[16].x, const[6].wwww, -temp[14].xxxx; 78: MAD temp[14].x, temp[15].xxxx, temp[14].xxxx, temp[16].xxxx; 79: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 80: MOV temp[14].w, const[6].wwww; 81: MUL temp[15].xy, input[4].xxxx, temp[0].xyyy; 82: ADD temp[3].xy, temp[3].xyyy, -temp[15].xyyy; 83: MUL temp[15].x, temp[10].xxxx, const[6].xxxx; 84: MUL temp[15].xy, temp[15].xxxx, temp[12].xyyy; 85: MUL temp[9].xy, temp[15].xyyy, temp[9].xxxx; 86: MUL temp[9].xy, temp[9].xyyy, temp[6].xxxx; 87: ADD temp[3].xy, temp[3].xyyy, -temp[9].xyyy; 88: MUL temp[6].x, temp[6].xxxx, -input[1].yyyy; 89: MUL temp[9].xy, temp[12].xyyy, temp[13].xxxx; 90: MAD temp[0].xy, temp[0].xyyy, temp[6].xxxx, temp[9].xyyy; 91: ADD temp[0].xy, temp[3].xyyy, temp[0].xyyy; 92: RCP temp[3].x, const[5].xxxx; 93: RCP temp[3].y, const[5].yyyy; 94: MUL temp[3].xy, const[8].yzzz, temp[3].xyyy; 95: MUL temp[14].xy, temp[0].xyyy, temp[3].xyyy; 96: MOV temp[14].z, input[0].xxxx; 97: MOV temp[0].zw, temp[14].wwzw; 98: SLT temp[2].x, temp[2].wwww, const[8].xxxx; 99: SLT temp[3].x, temp[4].wwww, const[8].xxxx; 100: ADD temp[2].x, temp[2].xxxx, temp[3].xxxx; 101: SLT temp[2].x, -temp[2].xxxx, const[6].yyyy; 102: SLT temp[1].x, temp[5].xxxx, temp[1].xxxx; 103: MUL temp[1].x, temp[7].xxxx, temp[1].xxxx; 104: ADD temp[1].x, temp[2].xxxx, temp[1].xxxx; 105: SLT temp[1].x, -temp[1].xxxx, const[6].yyyy; 106: ADD temp[1].x, -temp[1].xxxx, const[6].wwww; 107: MUL temp[0].xy, temp[14].xyyy, temp[1].xxxx; 108: MOV output[3].xyz, input[2].yzwy; 109: MOV output[1], temp[10].xxxx; 110: MOV temp[17], temp[0]; 111: MOV output[5].xy, temp[11].xyxx; 112: MOV output[4].xyz, temp[8].xyzx; 113: MOV output[2], input[4].wwww; 114: MOV output[0], temp[17]; 115: MOV output[6], temp[17]; Vertex Program: after 'emulate modifiers' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xyyy, const[6].xxxx; 1: MAX temp[1].x, input[5].zzzz, -input[5].zzzz; 2: MUL temp[2], const[0], input[3].xxxx; 3: MAD temp[2], const[1], input[3].yyyy, temp[2]; 4: MAD temp[2], const[2], input[1].zzzz, temp[2]; 5: ADD temp[2], temp[2], const[3]; 6: MOV temp[3].x, temp[2].xxzw; 7: MOV temp[3].y, -temp[2].yyyy; 8: MUL temp[3].xy, temp[0].xyyy, temp[3].xyyy; 9: RCP temp[4].x, temp[2].wwww; 10: MUL temp[3].xy, temp[3].xyyy, temp[4].xxxx; 11: MUL temp[4], const[0], input[3].zzzz; 12: MAD temp[4], const[1], input[3].wwww, temp[4]; 13: MAD temp[4], const[2], input[1].zzzz, temp[4]; 14: ADD temp[4], temp[4], const[3]; 15: MOV temp[5].x, temp[4].xxzw; 16: MOV temp[5].y, -temp[4].yyyy; 17: MUL temp[0].xy, temp[0].xyyy, temp[5].xyyy; 18: RCP temp[5].x, temp[4].wwww; 19: MUL temp[0].xy, temp[0].xyyy, temp[5].xxxx; 20: ADD temp[5].xy, temp[3].xyyy, -temp[0].xyyy; 21: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 22: RSQ temp[6].x, temp[5].xxxx; 23: MUL temp[6].x, temp[6].xxxx, temp[5].xxxx; 24: SLT temp[18].x, -temp[5].xxxx, none.0000; 25: ADD temp[5].x, temp[6].xxxx, -const[6].yyyy; 26: MAD temp[5].x, temp[18], temp[5], const[6].yyyy; 27: MOV temp[6].x, const[6].yyyy; 28: MOV temp[6].y, temp[5].xxxx; 29: MAX temp[7].x, const[2].yyyy, -const[2].yyyy; 30: SLT temp[7].x, const[6].zzzz, temp[7].xxxx; 31: MOV temp[8].z, temp[1].xxxx; 32: MUL temp[8].xy, input[5].xyyy, const[4].xxxx; 33: MAD temp[9].x, const[4].xxxx, temp[1].xxxx, -temp[1].xxxx; 34: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 35: ADD temp[8].xy, temp[8].xyyy, -temp[9].xxxx; 36: ADD temp[9].x, temp[5].xxxx, -temp[1].xxxx; 37: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 38: ADD temp[6].xy, temp[6].xyyy, -temp[9].xxxx; 39: ADD temp[9].x, const[6].wwww, -temp[7].xxxx; 40: MUL temp[9].xy, temp[8].xyyy, temp[9].xxxx; 41: MAD temp[8].xy, temp[6].xyyy, temp[7].xxxx, temp[9].xyyy; 42: MUL temp[8].xyz, temp[8].xyzz, const[7].xxxx; 43: MUL temp[6].x, input[2].xxxx, const[6].xxxx; 44: FRC temp[19].x, temp[6].xxxx; 45: ADD temp[6].x, temp[6].xxxx, -temp[19]; 46: MAD temp[6].x, const[7].xxxx, temp[6].xxxx, const[7].yyyy; 47: ADD temp[9].x, input[2].xxxx, const[6].wwww; 48: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 49: FRC temp[20].x, temp[9].xxxx; 50: ADD temp[9].x, temp[9].xxxx, -temp[20]; 51: MUL temp[9].x, temp[9].xxxx, const[6].xxxx; 52: FRC temp[9].x, temp[9].xxxx; 53: MAD temp[9].x, temp[9].xxxx, const[7].zzzz, const[6].wwww; 54: MUL temp[10].x, input[4].yyyy, const[7].wwww; 55: SLT temp[11].x, temp[6].xxxx, const[6].yyyy; 56: MUL temp[12].x, const[7].xxxx, input[4].xxxx; 57: ADD temp[12].x, temp[8].xxxx, -temp[12].xxxx; 58: MAD temp[13].x, const[7].xxxx, input[4].xxxx, temp[8].yyyy; 59: ADD temp[14].x, const[6].wwww, -temp[11].xxxx; 60: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 61: MAD temp[11].x, temp[12].xxxx, temp[11].xxxx, temp[13].xxxx; 62: ADD temp[11].x, temp[11].xxxx, input[4].zzzz; 63: MUL temp[12].x, temp[9].xxxx, temp[10].xxxx; 64: MOV temp[11].y, temp[12].xxxx; 65: ADD temp[0].xy, temp[0].xyyy, -temp[3].xyyy; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].xxxx; 68: MUL temp[0].xy, temp[0].xyyy, temp[12].xxxx; 69: MOV temp[12].x, -temp[0].yyyy; 70: MOV temp[12].y, temp[0].xxxx; 71: MUL temp[13].x, temp[6].xxxx, -input[1].xxxx; 72: SGE temp[14].x, const[6].yyyy, input[5].zzzz; 73: MAD temp[15].x, temp[6].xxxx, temp[0].xxxx, const[8].xxxx; 74: SLT temp[21].x, none.0000, temp[15].xxxx; 75: SLT temp[22].x, temp[15].xxxx, none.0000; 76: ADD temp[15].x, temp[21], -temp[22]; 77: ADD temp[16].x, const[6].wwww, -temp[14].xxxx; 78: MAD temp[14].x, temp[15].xxxx, temp[14].xxxx, temp[16].xxxx; 79: MUL temp[13].x, temp[13].xxxx, temp[14].xxxx; 80: MOV temp[14].w, const[6].wwww; 81: MUL temp[15].xy, input[4].xxxx, temp[0].xyyy; 82: ADD temp[3].xy, temp[3].xyyy, -temp[15].xyyy; 83: MUL temp[15].x, temp[10].xxxx, const[6].xxxx; 84: MUL temp[15].xy, temp[15].xxxx, temp[12].xyyy; 85: MUL temp[9].xy, temp[15].xyyy, temp[9].xxxx; 86: MUL temp[9].xy, temp[9].xyyy, temp[6].xxxx; 87: ADD temp[3].xy, temp[3].xyyy, -temp[9].xyyy; 88: MUL temp[6].x, temp[6].xxxx, -input[1].yyyy; 89: MUL temp[9].xy, temp[12].xyyy, temp[13].xxxx; 90: MAD temp[0].xy, temp[0].xyyy, temp[6].xxxx, temp[9].xyyy; 91: ADD temp[0].xy, temp[3].xyyy, temp[0].xyyy; 92: RCP temp[3].x, const[5].xxxx; 93: RCP temp[3].y, const[5].yyyy; 94: MUL temp[3].xy, const[8].yzzz, temp[3].xyyy; 95: MUL temp[14].xy, temp[0].xyyy, temp[3].xyyy; 96: MOV temp[14].z, input[0].xxxx; 97: MOV temp[0].zw, temp[14].wwzw; 98: SLT temp[2].x, temp[2].wwww, const[8].xxxx; 99: SLT temp[3].x, temp[4].wwww, const[8].xxxx; 100: ADD temp[2].x, temp[2].xxxx, temp[3].xxxx; 101: SLT temp[2].x, -temp[2].xxxx, const[6].yyyy; 102: SLT temp[1].x, temp[5].xxxx, temp[1].xxxx; 103: MUL temp[1].x, temp[7].xxxx, temp[1].xxxx; 104: ADD temp[1].x, temp[2].xxxx, temp[1].xxxx; 105: SLT temp[1].x, -temp[1].xxxx, const[6].yyyy; 106: ADD temp[1].x, -temp[1].xxxx, const[6].wwww; 107: MUL temp[0].xy, temp[14].xyyy, temp[1].xxxx; 108: MOV output[3].xyz, input[2].yzwy; 109: MOV output[1], temp[10].xxxx; 110: MOV temp[17], temp[0]; 111: MOV output[5].xy, temp[11].xyxx; 112: MOV output[4].xyz, temp[8].xyzx; 113: MOV output[2], input[4].wwww; 114: MOV output[0], temp[17]; 115: MOV output[6], temp[17]; Vertex Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xy__, const[6].xx__; 1: MAX temp[1].x, input[5].z___, -input[5].z___; 2: MUL temp[2].xyw, const[0].xy_w, input[3].xx_x; 3: MAD temp[2].xyw, const[1].xy_w, input[3].yy_y, temp[2].xy_w; 4: MAD temp[2].xyw, const[2].xy_w, input[1].zz_z, temp[2].xy_w; 5: ADD temp[2].xyw, temp[2].xy_w, const[3].xy_w; 6: MOV temp[3].x, temp[2].x___; 7: MOV temp[3].y, -temp[2]._y__; 8: MUL temp[3].xy, temp[0].xy__, temp[3].xy__; 9: RCP temp[4].x, temp[2].w___; 10: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 11: MUL temp[4].xyw, const[0].xy_w, input[3].zz_z; 12: MAD temp[4].xyw, const[1].xy_w, input[3].ww_w, temp[4].xy_w; 13: MAD temp[4].xyw, const[2].xy_w, input[1].zz_z, temp[4].xy_w; 14: ADD temp[4].xyw, temp[4].xy_w, const[3].xy_w; 15: MOV temp[5].x, temp[4].x___; 16: MOV temp[5].y, -temp[4]._y__; 17: MUL temp[0].xy, temp[0].xy__, temp[5].xy__; 18: RCP temp[5].x, temp[4].w___; 19: MUL temp[0].xy, temp[0].xy__, temp[5].xx__; 20: ADD temp[5].xy, temp[3].xy__, -temp[0].xy__; 21: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 22: RSQ temp[6].x, temp[5].x___; 23: MUL temp[6].x, temp[6].x___, temp[5].x___; 24: SLT temp[18].x, -temp[5].x___, none.0___; 25: ADD temp[5].x, temp[6].x___, -const[6].y___; 26: MAD temp[5].x, temp[18].x___, temp[5].x___, const[6].y___; 27: MOV temp[6].x, const[6].y___; 28: MOV temp[6].y, temp[5]._x__; 29: MAX temp[7].x, const[2].y___, -const[2].y___; 30: SLT temp[7].x, const[6].z___, temp[7].x___; 31: MOV temp[8].z, temp[1].__x_; 32: MUL temp[8].xy, input[5].xy__, const[4].xx__; 33: MAD temp[9].x, const[4].x___, temp[1].x___, -temp[1].x___; 34: MUL temp[9].x, temp[9].x___, const[6].x___; 35: ADD temp[8].xy, temp[8].xy__, -temp[9].xx__; 36: ADD temp[9].x, temp[5].x___, -temp[1].x___; 37: MUL temp[9].x, temp[9].x___, const[6].x___; 38: ADD temp[6].xy, temp[6].xy__, -temp[9].xx__; 39: ADD temp[9].x, const[6].w___, -temp[7].x___; 40: MUL temp[9].xy, temp[8].xy__, temp[9].xx__; 41: MAD temp[8].xy, temp[6].xy__, temp[7].xx__, temp[9].xy__; 42: MUL temp[8].xyz, temp[8].xyz_, const[7].xxx_; 43: MUL temp[6].x, input[2].x___, const[6].x___; 44: FRC temp[19].x, temp[6].x___; 45: ADD temp[6].x, temp[6].x___, -temp[19].x___; 46: MAD temp[6].x, const[7].x___, temp[6].x___, const[7].y___; 47: ADD temp[9].x, input[2].x___, const[6].w___; 48: MUL temp[9].x, temp[9].x___, const[6].x___; 49: FRC temp[20].x, temp[9].x___; 50: ADD temp[9].x, temp[9].x___, -temp[20].x___; 51: MUL temp[9].x, temp[9].x___, const[6].x___; 52: FRC temp[9].x, temp[9].x___; 53: MAD temp[9].x, temp[9].x___, const[7].z___, const[6].w___; 54: MUL temp[10].x, input[4].y___, const[7].w___; 55: SLT temp[11].x, temp[6].x___, const[6].y___; 56: MUL temp[12].x, const[7].x___, input[4].x___; 57: ADD temp[12].x, temp[8].x___, -temp[12].x___; 58: MAD temp[13].x, const[7].x___, input[4].x___, temp[8].y___; 59: ADD temp[14].x, const[6].w___, -temp[11].x___; 60: MUL temp[13].x, temp[13].x___, temp[14].x___; 61: MAD temp[11].x, temp[12].x___, temp[11].x___, temp[13].x___; 62: ADD temp[11].x, temp[11].x___, input[4].z___; 63: MUL temp[12].x, temp[9].x___, temp[10].x___; 64: MOV temp[11].y, temp[12]._x__; 65: ADD temp[0].xy, temp[0].xy__, -temp[3].xy__; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].x___; 68: MUL temp[0].xy, temp[0].xy__, temp[12].xx__; 69: MOV temp[12].x, -temp[0].y___; 70: MOV temp[12].y, temp[0]._x__; 71: MUL temp[13].x, temp[6].x___, -input[1].x___; 72: SGE temp[14].x, const[6].y___, input[5].z___; 73: MAD temp[15].x, temp[6].x___, temp[0].x___, const[8].x___; 74: SLT temp[21].x, none.0___, temp[15].x___; 75: SLT temp[22].x, temp[15].x___, none.0___; 76: ADD temp[15].x, temp[21].x___, -temp[22].x___; 77: ADD temp[16].x, const[6].w___, -temp[14].x___; 78: MAD temp[14].x, temp[15].x___, temp[14].x___, temp[16].x___; 79: MUL temp[13].x, temp[13].x___, temp[14].x___; 80: MOV temp[14].w, const[6].___w; 81: MUL temp[15].xy, input[4].xx__, temp[0].xy__; 82: ADD temp[3].xy, temp[3].xy__, -temp[15].xy__; 83: MUL temp[15].x, temp[10].x___, const[6].x___; 84: MUL temp[15].xy, temp[15].xx__, temp[12].xy__; 85: MUL temp[9].xy, temp[15].xy__, temp[9].xx__; 86: MUL temp[9].xy, temp[9].xy__, temp[6].xx__; 87: ADD temp[3].xy, temp[3].xy__, -temp[9].xy__; 88: MUL temp[6].x, temp[6].x___, -input[1].y___; 89: MUL temp[9].xy, temp[12].xy__, temp[13].xx__; 90: MAD temp[0].xy, temp[0].xy__, temp[6].xx__, temp[9].xy__; 91: ADD temp[0].xy, temp[3].xy__, temp[0].xy__; 92: RCP temp[3].x, const[5].x___; 93: RCP temp[3].y, const[5]._y__; 94: MUL temp[3].xy, const[8].yz__, temp[3].xy__; 95: MUL temp[14].xy, temp[0].xy__, temp[3].xy__; 96: MOV temp[14].z, input[0].__x_; 97: MOV temp[0].zw, temp[14].__zw; 98: SLT temp[2].x, temp[2].w___, const[8].x___; 99: SLT temp[3].x, temp[4].w___, const[8].x___; 100: ADD temp[2].x, temp[2].x___, temp[3].x___; 101: SLT temp[2].x, -temp[2].x___, const[6].y___; 102: SLT temp[1].x, temp[5].x___, temp[1].x___; 103: MUL temp[1].x, temp[7].x___, temp[1].x___; 104: ADD temp[1].x, temp[2].x___, temp[1].x___; 105: SLT temp[1].x, -temp[1].x___, const[6].y___; 106: ADD temp[1].x, -temp[1].x___, const[6].w___; 107: MUL temp[0].xy, temp[14].xy__, temp[1].xx__; 108: MOV output[3].xyz, input[2].yzw_; 109: MOV output[1], temp[10].xxxx; 110: MOV temp[17], temp[0]; 111: MOV output[5].xy, temp[11].xy__; 112: MOV output[4].xyz, temp[8].xyz_; 113: MOV output[2], input[4].wwww; 114: MOV output[0], temp[17]; 115: MOV output[6], temp[17]; Vertex Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[0].xy, const[5].xy__, const[6].xx__; 1: MAX temp[1].x, input[5].z___, -input[5].z___; 2: MUL temp[2].xyw, const[0].xy_w, input[3].xx_x; 3: MAD temp[2].xyw, const[1].xy_w, input[3].yy_y, temp[2].xy_w; 4: MAD temp[2].xyw, const[2].xy_w, input[1].zz_z, temp[2].xy_w; 5: ADD temp[2].xyw, temp[2].xy_w, const[3].xy_w; 6: MOV temp[3].x, temp[2].x___; 7: MOV temp[3].y, -temp[2]._y__; 8: MUL temp[3].xy, temp[0].xy__, temp[3].xy__; 9: RCP temp[4].x, temp[2].w___; 10: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 11: MUL temp[4].xyw, const[0].xy_w, input[3].zz_z; 12: MAD temp[4].xyw, const[1].xy_w, input[3].ww_w, temp[4].xy_w; 13: MAD temp[4].xyw, const[2].xy_w, input[1].zz_z, temp[4].xy_w; 14: ADD temp[4].xyw, temp[4].xy_w, const[3].xy_w; 15: MOV temp[5].x, temp[4].x___; 16: MOV temp[5].y, -temp[4]._y__; 17: MUL temp[0].xy, temp[0].xy__, temp[5].xy__; 18: RCP temp[5].x, temp[4].w___; 19: MUL temp[0].xy, temp[0].xy__, temp[5].xx__; 20: ADD temp[5].xy, temp[3].xy__, -temp[0].xy__; 21: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 22: RSQ temp[6].x, temp[5].x___; 23: MUL temp[6].x, temp[6].x___, temp[5].x___; 24: SLT temp[18].x, -temp[5].x___, none.0___; 25: MUL temp[5].x, temp[18].x___, temp[6].x___; 26: MOV temp[6].x, none.0___; 27: MOV temp[6].y, temp[5]._x__; 28: MAX temp[7].x, const[2].y___, -const[2].y___; 29: SLT temp[7].x, const[6].z___, temp[7].x___; 30: MOV temp[8].z, temp[1].__x_; 31: MUL temp[8].xy, input[5].xy__, const[4].xx__; 32: MAD temp[9].x, const[4].x___, temp[1].x___, -temp[1].x___; 33: MUL temp[9].x, temp[9].x___, const[6].x___; 34: ADD temp[8].xy, temp[8].xy__, -temp[9].xx__; 35: ADD temp[9].x, temp[5].x___, -temp[1].x___; 36: MUL temp[9].x, temp[9].x___, const[6].x___; 37: ADD temp[6].xy, temp[6].xy__, -temp[9].xx__; 38: ADD temp[9].x, none.1___, -temp[7].x___; 39: MUL temp[9].xy, temp[8].xy__, temp[9].xx__; 40: MAD temp[8].xy, temp[6].xy__, temp[7].xx__, temp[9].xy__; 41: MUL temp[8].xyz, temp[8].xyz_, const[7].xxx_; 42: MUL temp[6].x, input[2].x___, const[6].x___; 43: FRC temp[19].x, temp[6].x___; 44: ADD temp[6].x, temp[6].x___, -temp[19].x___; 45: MAD temp[6].x, const[7].x___, temp[6].x___, none.-1___; 46: ADD temp[9].x, input[2].x___, none.1___; 47: MUL temp[9].x, temp[9].x___, const[6].x___; 48: FRC temp[20].x, temp[9].x___; 49: ADD temp[9].x, temp[9].x___, -temp[20].x___; 50: MUL temp[9].x, temp[9].x___, const[6].x___; 51: FRC temp[9].x, temp[9].x___; 52: MAD temp[9].x, temp[9].x___, const[7].z___, none.1___; 53: MUL temp[10].x, input[4].y___, const[7].w___; 54: SLT temp[11].x, temp[6].x___, none.0___; 55: MUL temp[12].x, const[7].x___, input[4].x___; 56: ADD temp[12].x, temp[8].x___, -temp[12].x___; 57: MAD temp[13].x, const[7].x___, input[4].x___, temp[8].y___; 58: ADD temp[14].x, none.1___, -temp[11].x___; 59: MUL temp[13].x, temp[13].x___, temp[14].x___; 60: MAD temp[11].x, temp[12].x___, temp[11].x___, temp[13].x___; 61: ADD temp[11].x, temp[11].x___, input[4].z___; 62: MUL temp[12].x, temp[9].x___, temp[10].x___; 63: MOV temp[11].y, temp[12]._x__; 64: ADD temp[0].xy, temp[0].xy__, -temp[3].xy__; 65: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 66: RSQ temp[12].x, temp[12].x___; 67: MUL temp[0].xy, temp[0].xy__, temp[12].xx__; 68: MOV temp[12].x, -temp[0].y___; 69: MOV temp[12].y, temp[0]._x__; 70: MUL temp[13].x, temp[6].x___, -input[1].x___; 71: SGE temp[14].x, none.0___, input[5].z___; 72: MAD temp[15].x, temp[6].x___, temp[0].x___, const[8].x___; 73: SLT temp[21].x, none.0___, temp[15].x___; 74: SLT temp[22].x, temp[15].x___, none.0___; 75: ADD temp[15].x, temp[21].x___, -temp[22].x___; 76: ADD temp[16].x, none.1___, -temp[14].x___; 77: MAD temp[14].x, temp[15].x___, temp[14].x___, temp[16].x___; 78: MUL temp[13].x, temp[13].x___, temp[14].x___; 79: MOV temp[14].w, none.___1; 80: MUL temp[15].xy, input[4].xx__, temp[0].xy__; 81: ADD temp[3].xy, temp[3].xy__, -temp[15].xy__; 82: MUL temp[15].x, temp[10].x___, const[6].x___; 83: MUL temp[15].xy, temp[15].xx__, temp[12].xy__; 84: MUL temp[9].xy, temp[15].xy__, temp[9].xx__; 85: MUL temp[9].xy, temp[9].xy__, temp[6].xx__; 86: ADD temp[3].xy, temp[3].xy__, -temp[9].xy__; 87: MUL temp[6].x, temp[6].x___, -input[1].y___; 88: MUL temp[9].xy, temp[12].xy__, temp[13].xx__; 89: MAD temp[0].xy, temp[0].xy__, temp[6].xx__, temp[9].xy__; 90: ADD temp[0].xy, temp[3].xy__, temp[0].xy__; 91: RCP temp[3].x, const[5].x___; 92: RCP temp[3].y, const[5]._y__; 93: MUL temp[3].xy, const[8].yz__, temp[3].xy__; 94: MUL temp[14].xy, temp[0].xy__, temp[3].xy__; 95: MOV temp[14].z, input[0].__x_; 96: MOV temp[0].zw, temp[14].__zw; 97: SLT temp[2].x, temp[2].w___, const[8].x___; 98: SLT temp[3].x, temp[4].w___, const[8].x___; 99: ADD temp[2].x, temp[2].x___, temp[3].x___; 100: SLT temp[2].x, -temp[2].x___, none.0___; 101: SLT temp[1].x, temp[5].x___, temp[1].x___; 102: MUL temp[1].x, temp[7].x___, temp[1].x___; 103: ADD temp[1].x, temp[2].x___, temp[1].x___; 104: SLT temp[1].x, -temp[1].x___, none.0___; 105: ADD temp[1].x, -temp[1].x___, none.1___; 106: MUL temp[0].xy, temp[14].xy__, temp[1].xx__; 107: MOV output[3].xyz, input[2].yzw_; 108: MOV output[1], temp[10].xxxx; 109: MOV output[5].xy, temp[11].xy__; 110: MOV output[4].xyz, temp[8].xyz_; 111: MOV output[2], input[4].wwww; 112: MOV output[0], temp[0]; 113: MOV output[6], temp[0]; Vertex Program: after 'source conflict resolve' # Radeon Compiler Program 0: MOV temp[17], const[6].xx__; 1: MUL temp[0].xy, const[5].xy__, temp[17]; 2: MAX temp[1].x, input[5].z___, -input[5].z___; 3: MUL temp[2].xyw, const[0].xy_w, input[3].xx_x; 4: MAD temp[2].xyw, const[1].xy_w, input[3].yy_y, temp[2].xy_w; 5: MAD temp[2].xyw, const[2].xy_w, input[1].zz_z, temp[2].xy_w; 6: ADD temp[2].xyw, temp[2].xy_w, const[3].xy_w; 7: MOV temp[3].x, temp[2].x___; 8: MOV temp[3].y, -temp[2]._y__; 9: MUL temp[3].xy, temp[0].xy__, temp[3].xy__; 10: RCP temp[4].x, temp[2].w___; 11: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 12: MUL temp[4].xyw, const[0].xy_w, input[3].zz_z; 13: MAD temp[4].xyw, const[1].xy_w, input[3].ww_w, temp[4].xy_w; 14: MAD temp[4].xyw, const[2].xy_w, input[1].zz_z, temp[4].xy_w; 15: ADD temp[4].xyw, temp[4].xy_w, const[3].xy_w; 16: MOV temp[5].x, temp[4].x___; 17: MOV temp[5].y, -temp[4]._y__; 18: MUL temp[0].xy, temp[0].xy__, temp[5].xy__; 19: RCP temp[5].x, temp[4].w___; 20: MUL temp[0].xy, temp[0].xy__, temp[5].xx__; 21: ADD temp[5].xy, temp[3].xy__, -temp[0].xy__; 22: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 23: RSQ temp[6].x, temp[5].x___; 24: MUL temp[6].x, temp[6].x___, temp[5].x___; 25: SLT temp[18].x, -temp[5].x___, none.0___; 26: MUL temp[5].x, temp[18].x___, temp[6].x___; 27: MOV temp[6].x, none.0___; 28: MOV temp[6].y, temp[5]._x__; 29: MAX temp[7].x, const[2].y___, -const[2].y___; 30: SLT temp[7].x, const[6].z___, temp[7].x___; 31: MOV temp[8].z, temp[1].__x_; 32: MUL temp[8].xy, input[5].xy__, const[4].xx__; 33: MAD temp[9].x, const[4].x___, temp[1].x___, -temp[1].x___; 34: MUL temp[9].x, temp[9].x___, const[6].x___; 35: ADD temp[8].xy, temp[8].xy__, -temp[9].xx__; 36: ADD temp[9].x, temp[5].x___, -temp[1].x___; 37: MUL temp[9].x, temp[9].x___, const[6].x___; 38: ADD temp[6].xy, temp[6].xy__, -temp[9].xx__; 39: ADD temp[9].x, none.1___, -temp[7].x___; 40: MUL temp[9].xy, temp[8].xy__, temp[9].xx__; 41: MAD temp[8].xy, temp[6].xy__, temp[7].xx__, temp[9].xy__; 42: MUL temp[8].xyz, temp[8].xyz_, const[7].xxx_; 43: MUL temp[6].x, input[2].x___, const[6].x___; 44: FRC temp[19].x, temp[6].x___; 45: ADD temp[6].x, temp[6].x___, -temp[19].x___; 46: MAD temp[6].x, const[7].x___, temp[6].x___, none.-1___; 47: ADD temp[9].x, input[2].x___, none.1___; 48: MUL temp[9].x, temp[9].x___, const[6].x___; 49: FRC temp[20].x, temp[9].x___; 50: ADD temp[9].x, temp[9].x___, -temp[20].x___; 51: MUL temp[9].x, temp[9].x___, const[6].x___; 52: FRC temp[9].x, temp[9].x___; 53: MAD temp[9].x, temp[9].x___, const[7].z___, none.1___; 54: MUL temp[10].x, input[4].y___, const[7].w___; 55: SLT temp[11].x, temp[6].x___, none.0___; 56: MUL temp[12].x, const[7].x___, input[4].x___; 57: ADD temp[12].x, temp[8].x___, -temp[12].x___; 58: MAD temp[13].x, const[7].x___, input[4].x___, temp[8].y___; 59: ADD temp[14].x, none.1___, -temp[11].x___; 60: MUL temp[13].x, temp[13].x___, temp[14].x___; 61: MAD temp[11].x, temp[12].x___, temp[11].x___, temp[13].x___; 62: ADD temp[11].x, temp[11].x___, input[4].z___; 63: MUL temp[12].x, temp[9].x___, temp[10].x___; 64: MOV temp[11].y, temp[12]._x__; 65: ADD temp[0].xy, temp[0].xy__, -temp[3].xy__; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].x___; 68: MUL temp[0].xy, temp[0].xy__, temp[12].xx__; 69: MOV temp[12].x, -temp[0].y___; 70: MOV temp[12].y, temp[0]._x__; 71: MUL temp[13].x, temp[6].x___, -input[1].x___; 72: SGE temp[14].x, none.0___, input[5].z___; 73: MAD temp[15].x, temp[6].x___, temp[0].x___, const[8].x___; 74: SLT temp[21].x, none.0___, temp[15].x___; 75: SLT temp[22].x, temp[15].x___, none.0___; 76: ADD temp[15].x, temp[21].x___, -temp[22].x___; 77: ADD temp[16].x, none.1___, -temp[14].x___; 78: MAD temp[14].x, temp[15].x___, temp[14].x___, temp[16].x___; 79: MUL temp[13].x, temp[13].x___, temp[14].x___; 80: MOV temp[14].w, none.___1; 81: MUL temp[15].xy, input[4].xx__, temp[0].xy__; 82: ADD temp[3].xy, temp[3].xy__, -temp[15].xy__; 83: MUL temp[15].x, temp[10].x___, const[6].x___; 84: MUL temp[15].xy, temp[15].xx__, temp[12].xy__; 85: MUL temp[9].xy, temp[15].xy__, temp[9].xx__; 86: MUL temp[9].xy, temp[9].xy__, temp[6].xx__; 87: ADD temp[3].xy, temp[3].xy__, -temp[9].xy__; 88: MUL temp[6].x, temp[6].x___, -input[1].y___; 89: MUL temp[9].xy, temp[12].xy__, temp[13].xx__; 90: MAD temp[0].xy, temp[0].xy__, temp[6].xx__, temp[9].xy__; 91: ADD temp[0].xy, temp[3].xy__, temp[0].xy__; 92: RCP temp[3].x, const[5].x___; 93: RCP temp[3].y, const[5]._y__; 94: MUL temp[3].xy, const[8].yz__, temp[3].xy__; 95: MUL temp[14].xy, temp[0].xy__, temp[3].xy__; 96: MOV temp[14].z, input[0].__x_; 97: MOV temp[0].zw, temp[14].__zw; 98: SLT temp[2].x, temp[2].w___, const[8].x___; 99: SLT temp[3].x, temp[4].w___, const[8].x___; 100: ADD temp[2].x, temp[2].x___, temp[3].x___; 101: SLT temp[2].x, -temp[2].x___, none.0___; 102: SLT temp[1].x, temp[5].x___, temp[1].x___; 103: MUL temp[1].x, temp[7].x___, temp[1].x___; 104: ADD temp[1].x, temp[2].x___, temp[1].x___; 105: SLT temp[1].x, -temp[1].x___, none.0___; 106: ADD temp[1].x, -temp[1].x___, none.1___; 107: MUL temp[0].xy, temp[14].xy__, temp[1].xx__; 108: MOV output[3].xyz, input[2].yzw_; 109: MOV output[1], temp[10].xxxx; 110: MOV output[5].xy, temp[11].xy__; 111: MOV output[4].xyz, temp[8].xyz_; 112: MOV output[2], input[4].wwww; 113: MOV output[0], temp[0]; 114: MOV output[6], temp[0]; Vertex Program: after 'register allocation' # Radeon Compiler Program 0: MOV temp[0], const[6].xx__; 1: MUL temp[0].xy, const[5].xy__, temp[0]; 2: MAX temp[1].x, input[5].z___, -input[5].z___; 3: MUL temp[2].xyw, const[0].xy_w, input[3].xx_x; 4: MAD temp[2].xyw, const[1].xy_w, input[3].yy_y, temp[2].xy_w; 5: MAD temp[2].xyw, const[2].xy_w, input[1].zz_z, temp[2].xy_w; 6: ADD temp[2].xyw, temp[2].xy_w, const[3].xy_w; 7: MOV temp[3].x, temp[2].x___; 8: MOV temp[3].y, -temp[2]._y__; 9: MUL temp[3].xy, temp[0].xy__, temp[3].xy__; 10: RCP temp[4].x, temp[2].w___; 11: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 12: MUL temp[4].xyw, const[0].xy_w, input[3].zz_z; 13: MAD temp[4].xyw, const[1].xy_w, input[3].ww_w, temp[4].xy_w; 14: MAD temp[4].xyw, const[2].xy_w, input[1].zz_z, temp[4].xy_w; 15: ADD temp[4].xyw, temp[4].xy_w, const[3].xy_w; 16: MOV temp[5].x, temp[4].x___; 17: MOV temp[5].y, -temp[4]._y__; 18: MUL temp[0].xy, temp[0].xy__, temp[5].xy__; 19: RCP temp[5].x, temp[4].w___; 20: MUL temp[0].xy, temp[0].xy__, temp[5].xx__; 21: ADD temp[5].xy, temp[3].xy__, -temp[0].xy__; 22: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 23: RSQ temp[6].x, temp[5].x___; 24: MUL temp[6].x, temp[6].x___, temp[5].x___; 25: SLT temp[7].x, -temp[5].x___, none.0___; 26: MUL temp[5].x, temp[7].x___, temp[6].x___; 27: MOV temp[6].x, none.0___; 28: MOV temp[6].y, temp[5]._x__; 29: MAX temp[7].x, const[2].y___, -const[2].y___; 30: SLT temp[7].x, const[6].z___, temp[7].x___; 31: MOV temp[8].z, temp[1].__x_; 32: MUL temp[8].xy, input[5].xy__, const[4].xx__; 33: MAD temp[9].x, const[4].x___, temp[1].x___, -temp[1].x___; 34: MUL temp[9].x, temp[9].x___, const[6].x___; 35: ADD temp[8].xy, temp[8].xy__, -temp[9].xx__; 36: ADD temp[9].x, temp[5].x___, -temp[1].x___; 37: MUL temp[9].x, temp[9].x___, const[6].x___; 38: ADD temp[6].xy, temp[6].xy__, -temp[9].xx__; 39: ADD temp[9].x, none.1___, -temp[7].x___; 40: MUL temp[9].xy, temp[8].xy__, temp[9].xx__; 41: MAD temp[8].xy, temp[6].xy__, temp[7].xx__, temp[9].xy__; 42: MUL temp[8].xyz, temp[8].xyz_, const[7].xxx_; 43: MUL temp[6].x, input[2].x___, const[6].x___; 44: FRC temp[10].x, temp[6].x___; 45: ADD temp[6].x, temp[6].x___, -temp[10].x___; 46: MAD temp[6].x, const[7].x___, temp[6].x___, none.-1___; 47: ADD temp[9].x, input[2].x___, none.1___; 48: MUL temp[9].x, temp[9].x___, const[6].x___; 49: FRC temp[10].x, temp[9].x___; 50: ADD temp[9].x, temp[9].x___, -temp[10].x___; 51: MUL temp[9].x, temp[9].x___, const[6].x___; 52: FRC temp[9].x, temp[9].x___; 53: MAD temp[9].x, temp[9].x___, const[7].z___, none.1___; 54: MUL temp[10].x, input[4].y___, const[7].w___; 55: SLT temp[11].x, temp[6].x___, none.0___; 56: MUL temp[12].x, const[7].x___, input[4].x___; 57: ADD temp[12].x, temp[8].x___, -temp[12].x___; 58: MAD temp[13].x, const[7].x___, input[4].x___, temp[8].y___; 59: ADD temp[14].x, none.1___, -temp[11].x___; 60: MUL temp[13].x, temp[13].x___, temp[14].x___; 61: MAD temp[11].x, temp[12].x___, temp[11].x___, temp[13].x___; 62: ADD temp[11].x, temp[11].x___, input[4].z___; 63: MUL temp[12].x, temp[9].x___, temp[10].x___; 64: MOV temp[11].y, temp[12]._x__; 65: ADD temp[0].xy, temp[0].xy__, -temp[3].xy__; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].x___; 68: MUL temp[0].xy, temp[0].xy__, temp[12].xx__; 69: MOV temp[12].x, -temp[0].y___; 70: MOV temp[12].y, temp[0]._x__; 71: MUL temp[13].x, temp[6].x___, -input[1].x___; 72: SGE temp[14].x, none.0___, input[5].z___; 73: MAD temp[15].x, temp[6].x___, temp[0].x___, const[8].x___; 74: SLT temp[16].x, none.0___, temp[15].x___; 75: SLT temp[17].x, temp[15].x___, none.0___; 76: ADD temp[15].x, temp[16].x___, -temp[17].x___; 77: ADD temp[16].x, none.1___, -temp[14].x___; 78: MAD temp[14].x, temp[15].x___, temp[14].x___, temp[16].x___; 79: MUL temp[13].x, temp[13].x___, temp[14].x___; 80: MOV temp[14].w, none.___1; 81: MUL temp[15].xy, input[4].xx__, temp[0].xy__; 82: ADD temp[3].xy, temp[3].xy__, -temp[15].xy__; 83: MUL temp[15].x, temp[10].x___, const[6].x___; 84: MUL temp[15].xy, temp[15].xx__, temp[12].xy__; 85: MUL temp[9].xy, temp[15].xy__, temp[9].xx__; 86: MUL temp[9].xy, temp[9].xy__, temp[6].xx__; 87: ADD temp[3].xy, temp[3].xy__, -temp[9].xy__; 88: MUL temp[6].x, temp[6].x___, -input[1].y___; 89: MUL temp[9].xy, temp[12].xy__, temp[13].xx__; 90: MAD temp[0].xy, temp[0].xy__, temp[6].xx__, temp[9].xy__; 91: ADD temp[0].xy, temp[3].xy__, temp[0].xy__; 92: RCP temp[3].x, const[5].x___; 93: RCP temp[3].y, const[5]._y__; 94: MUL temp[3].xy, const[8].yz__, temp[3].xy__; 95: MUL temp[14].xy, temp[0].xy__, temp[3].xy__; 96: MOV temp[14].z, input[0].__x_; 97: MOV temp[0].zw, temp[14].__zw; 98: SLT temp[2].x, temp[2].w___, const[8].x___; 99: SLT temp[3].x, temp[4].w___, const[8].x___; 100: ADD temp[2].x, temp[2].x___, temp[3].x___; 101: SLT temp[2].x, -temp[2].x___, none.0___; 102: SLT temp[1].x, temp[5].x___, temp[1].x___; 103: MUL temp[1].x, temp[7].x___, temp[1].x___; 104: ADD temp[1].x, temp[2].x___, temp[1].x___; 105: SLT temp[1].x, -temp[1].x___, none.0___; 106: ADD temp[1].x, -temp[1].x___, none.1___; 107: MUL temp[0].xy, temp[14].xy__, temp[1].xx__; 108: MOV output[3].xyz, input[2].yzw_; 109: MOV output[1], temp[10].xxxx; 110: MOV output[5].xy, temp[11].xy__; 111: MOV output[4].xyz, temp[8].xyz_; 112: MOV output[2], input[4].wwww; 113: MOV output[0], temp[0]; 114: MOV output[6], temp[0]; CONST[6] = { 0.5000 0.0000 0.0010 1.0000 } CONST[7] = { 2.0000 -1.0000 -4.0000 0.2500 } CONST[8] = { 0.0001 2.0000 -2.0000 0.0000 } Vertex Program: after 'dead constants' # Radeon Compiler Program 0: MOV temp[0], const[6].xx__; 1: MUL temp[0].xy, const[5].xy__, temp[0]; 2: MAX temp[1].x, input[5].z___, -input[5].z___; 3: MUL temp[2].xyw, const[0].xy_w, input[3].xx_x; 4: MAD temp[2].xyw, const[1].xy_w, input[3].yy_y, temp[2].xy_w; 5: MAD temp[2].xyw, const[2].xy_w, input[1].zz_z, temp[2].xy_w; 6: ADD temp[2].xyw, temp[2].xy_w, const[3].xy_w; 7: MOV temp[3].x, temp[2].x___; 8: MOV temp[3].y, -temp[2]._y__; 9: MUL temp[3].xy, temp[0].xy__, temp[3].xy__; 10: RCP temp[4].x, temp[2].w___; 11: MUL temp[3].xy, temp[3].xy__, temp[4].xx__; 12: MUL temp[4].xyw, const[0].xy_w, input[3].zz_z; 13: MAD temp[4].xyw, const[1].xy_w, input[3].ww_w, temp[4].xy_w; 14: MAD temp[4].xyw, const[2].xy_w, input[1].zz_z, temp[4].xy_w; 15: ADD temp[4].xyw, temp[4].xy_w, const[3].xy_w; 16: MOV temp[5].x, temp[4].x___; 17: MOV temp[5].y, -temp[4]._y__; 18: MUL temp[0].xy, temp[0].xy__, temp[5].xy__; 19: RCP temp[5].x, temp[4].w___; 20: MUL temp[0].xy, temp[0].xy__, temp[5].xx__; 21: ADD temp[5].xy, temp[3].xy__, -temp[0].xy__; 22: DP4 temp[5].x, temp[5].xy00, temp[5].xy00; 23: RSQ temp[6].x, temp[5].x___; 24: MUL temp[6].x, temp[6].x___, temp[5].x___; 25: SLT temp[7].x, -temp[5].x___, none.0___; 26: MUL temp[5].x, temp[7].x___, temp[6].x___; 27: MOV temp[6].x, none.0___; 28: MOV temp[6].y, temp[5]._x__; 29: MAX temp[7].x, const[2].y___, -const[2].y___; 30: SLT temp[7].x, const[6].z___, temp[7].x___; 31: MOV temp[8].z, temp[1].__x_; 32: MUL temp[8].xy, input[5].xy__, const[4].xx__; 33: MAD temp[9].x, const[4].x___, temp[1].x___, -temp[1].x___; 34: MUL temp[9].x, temp[9].x___, const[6].x___; 35: ADD temp[8].xy, temp[8].xy__, -temp[9].xx__; 36: ADD temp[9].x, temp[5].x___, -temp[1].x___; 37: MUL temp[9].x, temp[9].x___, const[6].x___; 38: ADD temp[6].xy, temp[6].xy__, -temp[9].xx__; 39: ADD temp[9].x, none.1___, -temp[7].x___; 40: MUL temp[9].xy, temp[8].xy__, temp[9].xx__; 41: MAD temp[8].xy, temp[6].xy__, temp[7].xx__, temp[9].xy__; 42: MUL temp[8].xyz, temp[8].xyz_, const[7].xxx_; 43: MUL temp[6].x, input[2].x___, const[6].x___; 44: FRC temp[10].x, temp[6].x___; 45: ADD temp[6].x, temp[6].x___, -temp[10].x___; 46: MAD temp[6].x, const[7].x___, temp[6].x___, none.-1___; 47: ADD temp[9].x, input[2].x___, none.1___; 48: MUL temp[9].x, temp[9].x___, const[6].x___; 49: FRC temp[10].x, temp[9].x___; 50: ADD temp[9].x, temp[9].x___, -temp[10].x___; 51: MUL temp[9].x, temp[9].x___, const[6].x___; 52: FRC temp[9].x, temp[9].x___; 53: MAD temp[9].x, temp[9].x___, const[7].z___, none.1___; 54: MUL temp[10].x, input[4].y___, const[7].w___; 55: SLT temp[11].x, temp[6].x___, none.0___; 56: MUL temp[12].x, const[7].x___, input[4].x___; 57: ADD temp[12].x, temp[8].x___, -temp[12].x___; 58: MAD temp[13].x, const[7].x___, input[4].x___, temp[8].y___; 59: ADD temp[14].x, none.1___, -temp[11].x___; 60: MUL temp[13].x, temp[13].x___, temp[14].x___; 61: MAD temp[11].x, temp[12].x___, temp[11].x___, temp[13].x___; 62: ADD temp[11].x, temp[11].x___, input[4].z___; 63: MUL temp[12].x, temp[9].x___, temp[10].x___; 64: MOV temp[11].y, temp[12]._x__; 65: ADD temp[0].xy, temp[0].xy__, -temp[3].xy__; 66: DP4 temp[12].x, temp[0].xy00, temp[0].xy00; 67: RSQ temp[12].x, temp[12].x___; 68: MUL temp[0].xy, temp[0].xy__, temp[12].xx__; 69: MOV temp[12].x, -temp[0].y___; 70: MOV temp[12].y, temp[0]._x__; 71: MUL temp[13].x, temp[6].x___, -input[1].x___; 72: SGE temp[14].x, none.0___, input[5].z___; 73: MAD temp[15].x, temp[6].x___, temp[0].x___, const[8].x___; 74: SLT temp[16].x, none.0___, temp[15].x___; 75: SLT temp[17].x, temp[15].x___, none.0___; 76: ADD temp[15].x, temp[16].x___, -temp[17].x___; 77: ADD temp[16].x, none.1___, -temp[14].x___; 78: MAD temp[14].x, temp[15].x___, temp[14].x___, temp[16].x___; 79: MUL temp[13].x, temp[13].x___, temp[14].x___; 80: MOV temp[14].w, none.___1; 81: MUL temp[15].xy, input[4].xx__, temp[0].xy__; 82: ADD temp[3].xy, temp[3].xy__, -temp[15].xy__; 83: MUL temp[15].x, temp[10].x___, const[6].x___; 84: MUL temp[15].xy, temp[15].xx__, temp[12].xy__; 85: MUL temp[9].xy, temp[15].xy__, temp[9].xx__; 86: MUL temp[9].xy, temp[9].xy__, temp[6].xx__; 87: ADD temp[3].xy, temp[3].xy__, -temp[9].xy__; 88: MUL temp[6].x, temp[6].x___, -input[1].y___; 89: MUL temp[9].xy, temp[12].xy__, temp[13].xx__; 90: MAD temp[0].xy, temp[0].xy__, temp[6].xx__, temp[9].xy__; 91: ADD temp[0].xy, temp[3].xy__, temp[0].xy__; 92: RCP temp[3].x, const[5].x___; 93: RCP temp[3].y, const[5]._y__; 94: MUL temp[3].xy, const[8].yz__, temp[3].xy__; 95: MUL temp[14].xy, temp[0].xy__, temp[3].xy__; 96: MOV temp[14].z, input[0].__x_; 97: MOV temp[0].zw, temp[14].__zw; 98: SLT temp[2].x, temp[2].w___, const[8].x___; 99: SLT temp[3].x, temp[4].w___, const[8].x___; 100: ADD temp[2].x, temp[2].x___, temp[3].x___; 101: SLT temp[2].x, -temp[2].x___, none.0___; 102: SLT temp[1].x, temp[5].x___, temp[1].x___; 103: MUL temp[1].x, temp[7].x___, temp[1].x___; 104: ADD temp[1].x, temp[2].x___, temp[1].x___; 105: SLT temp[1].x, -temp[1].x___, none.0___; 106: ADD temp[1].x, -temp[1].x___, none.1___; 107: MUL temp[0].xy, temp[14].xy__, temp[1].xx__; 108: MOV output[3].xyz, input[2].yzw_; 109: MOV output[1], temp[10].xxxx; 110: MOV output[5].xy, temp[11].xy__; 111: MOV output[4].xyz, temp[8].xyz_; 112: MOV output[2], input[4].wwww; 113: MOV output[0], temp[0]; 114: MOV output[6], temp[0]; Final vertex program code: 0: op: 0x00f00003 dst: 0t op: VE_ADD src0: 0x01f800c2 reg: 6c swiz: X/ X/ U/ U src1: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 1: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f900a2 reg: 5c swiz: X/ Y/ U/ U src1: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 2: op: 0x00102007 dst: 1t op: VE_MAXIMUM src0: 0x01ff40a1 reg: 5i swiz: Z/ U/ U/ U src1: 0x1fff40a1 reg: 5i swiz: -Z/-U/-U/-U src2: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 3: op: 0x00b04002 dst: 2t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00380061 reg: 3i swiz: X/ X/ U/ X src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 4: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00792061 reg: 3i swiz: Y/ Y/ U/ Y src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 5: op: 0x00b04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00f90042 reg: 2c swiz: X/ Y/ U/ W src1: 0x00ba4021 reg: 1i swiz: Z/ Z/ U/ Z src2: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W 6: op: 0x00b04003 dst: 2t op: VE_ADD src0: 0x00f90040 reg: 2t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 7: op: 0x00106003 dst: 3t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 8: op: 0x00206003 dst: 3t op: VE_ADD src0: 0x1ff9e040 reg: 2t swiz: -U/-Y/-U/-U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 9: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 10: op: 0x00108046 dst: 4t op: ME_RECIP_DX src0: 0x00db6040 reg: 2t swiz: W/ W/ W/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 11: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01f80080 reg: 4t swiz: X/ X/ U/ U src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 12: op: 0x00b08002 dst: 4t op: VE_MULTIPLY src0: 0x00f90002 reg: 0c swiz: X/ Y/ U/ W src1: 0x00ba4061 reg: 3i swiz: Z/ Z/ U/ Z src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 13: op: 0x00b08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00fb6061 reg: 3i swiz: W/ W/ U/ W src2: 0x00f90080 reg: 4t swiz: X/ Y/ U/ W 14: op: 0x00b08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00f90042 reg: 2c swiz: X/ Y/ U/ W src1: 0x00ba4021 reg: 1i swiz: Z/ Z/ U/ Z src2: 0x00f90080 reg: 4t swiz: X/ Y/ U/ W 15: op: 0x00b08003 dst: 4t op: VE_ADD src0: 0x00f90080 reg: 4t swiz: X/ Y/ U/ W src1: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src2: 0x01248062 reg: 3c swiz: 0/ 0/ 0/ 0 16: op: 0x0010a003 dst: 5t op: VE_ADD src0: 0x01ff0080 reg: 4t swiz: X/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 17: op: 0x0020a003 dst: 5t op: VE_ADD src0: 0x1ff9e080 reg: 4t swiz: -U/-Y/-U/-U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 18: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f900a0 reg: 5t swiz: X/ Y/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 19: op: 0x0010a046 dst: 5t op: ME_RECIP_DX src0: 0x00db6080 reg: 4t swiz: W/ W/ W/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 20: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f800a0 reg: 5t swiz: X/ X/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 21: op: 0x0030a003 dst: 5t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x1ff90000 reg: 0t swiz: -X/-Y/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x0010a001 dst: 5t op: VE_DOT_PRODUCT src0: 0x012100a0 reg: 5t swiz: X/ Y/ 0/ 0 src1: 0x012100a0 reg: 5t swiz: X/ Y/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0010c048 dst: 6t op: ME_RECIP_SQRT_DX src0: 0x000000a0 reg: 5t swiz: X/ X/ X/ X src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 24: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x01ff00a0 reg: 5t swiz: X/ U/ U/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 25: op: 0x0010e00a dst: 7t op: VE_SET_LESS_THAN src0: 0x1fff00a0 reg: 5t swiz: -X/-U/-U/-U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 26: op: 0x0010a002 dst: 5t op: VE_MULTIPLY src0: 0x01ff00e0 reg: 7t swiz: X/ U/ U/ U src1: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 27: op: 0x0010c003 dst: 6t op: VE_ADD src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 28: op: 0x0020c003 dst: 6t op: VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 29: op: 0x0010e007 dst: 7t op: VE_MAXIMUM src0: 0x01ff2042 reg: 2c swiz: Y/ U/ U/ U src1: 0x1fff2042 reg: 2c swiz: -Y/-U/-U/-U src2: 0x01248042 reg: 2c swiz: 0/ 0/ 0/ 0 30: op: 0x0010e00a dst: 7t op: VE_SET_LESS_THAN src0: 0x01ff40c2 reg: 6c swiz: Z/ U/ U/ U src1: 0x01ff00e0 reg: 7t swiz: X/ U/ U/ U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 31: op: 0x00410003 dst: 8t op: VE_ADD src0: 0x01c7e020 reg: 1t swiz: U/ U/ X/ U src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 32: op: 0x00310002 dst: 8t op: VE_MULTIPLY src0: 0x01f900a1 reg: 5i swiz: X/ Y/ U/ U src1: 0x01f80082 reg: 4c swiz: X/ X/ U/ U src2: 0x01248082 reg: 4c swiz: 0/ 0/ 0/ 0 33: op: 0x00112004 dst: 9t op: VE_MULTIPLY_ADD src0: 0x01ff0082 reg: 4c swiz: X/ U/ U/ U src1: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src2: 0x1fff0020 reg: 1t swiz: -X/-U/-U/-U 34: op: 0x00112002 dst: 9t op: VE_MULTIPLY src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 35: op: 0x00310003 dst: 8t op: VE_ADD src0: 0x01f90100 reg: 8t swiz: X/ Y/ U/ U src1: 0x1ff80120 reg: 9t swiz: -X/-X/-U/-U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 36: op: 0x00112003 dst: 9t op: VE_ADD src0: 0x01ff00a0 reg: 5t swiz: X/ U/ U/ U src1: 0x1fff0020 reg: 1t swiz: -X/-U/-U/-U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 37: op: 0x00112002 dst: 9t op: VE_MULTIPLY src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 38: op: 0x0030c003 dst: 6t op: VE_ADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x1ff80120 reg: 9t swiz: -X/-X/-U/-U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 39: op: 0x00112003 dst: 9t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff00e0 reg: 7t swiz: -X/-U/-U/-U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 40: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f90100 reg: 8t swiz: X/ Y/ U/ U src1: 0x01f80120 reg: 9t swiz: X/ X/ U/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 41: op: 0x00310080 dst: 8t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f900c0 reg: 6t swiz: X/ Y/ U/ U src1: 0x01f800e0 reg: 7t swiz: X/ X/ U/ U src2: 0x01f90120 reg: 9t swiz: X/ Y/ U/ U 42: op: 0x00710002 dst: 8t op: VE_MULTIPLY src0: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U src1: 0x01c000e2 reg: 7c swiz: X/ X/ X/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 43: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x01ff0041 reg: 2i swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 44: op: 0x00114006 dst: 10t op: VE_FRACTION src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 45: op: 0x0010c003 dst: 6t op: VE_ADD src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x1fff0140 reg: 10t swiz: -X/-U/-U/-U src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 46: op: 0x0010c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src1: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src2: 0x03ffa0e0 reg: 7t swiz: -1/ U/ U/ U 47: op: 0x00112003 dst: 9t op: VE_ADD src0: 0x01ff0041 reg: 2i swiz: X/ U/ U/ U src1: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 48: op: 0x00112002 dst: 9t op: VE_MULTIPLY src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 49: op: 0x00114006 dst: 10t op: VE_FRACTION src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 50: op: 0x00112003 dst: 9t op: VE_ADD src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x1fff0140 reg: 10t swiz: -X/-U/-U/-U src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 51: op: 0x00112002 dst: 9t op: VE_MULTIPLY src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 52: op: 0x00112006 dst: 9t op: VE_FRACTION src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 53: op: 0x00112004 dst: 9t op: VE_MULTIPLY_ADD src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff40e2 reg: 7c swiz: Z/ U/ U/ U src2: 0x01ffa120 reg: 9t swiz: 1/ U/ U/ U 54: op: 0x00114002 dst: 10t op: VE_MULTIPLY src0: 0x01ff2081 reg: 4i swiz: Y/ U/ U/ U src1: 0x01ff60e2 reg: 7c swiz: W/ U/ U/ U src2: 0x012480e2 reg: 7c swiz: 0/ 0/ 0/ 0 55: op: 0x0011600a dst: 11t op: VE_SET_LESS_THAN src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 56: op: 0x00118002 dst: 12t op: VE_MULTIPLY src0: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src1: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 57: op: 0x00118003 dst: 12t op: VE_ADD src0: 0x01ff0100 reg: 8t swiz: X/ U/ U/ U src1: 0x1fff0180 reg: 12t swiz: -X/-U/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 58: op: 0x0011a004 dst: 13t op: VE_MULTIPLY_ADD src0: 0x01ff00e2 reg: 7c swiz: X/ U/ U/ U src1: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src2: 0x01ff2100 reg: 8t swiz: Y/ U/ U/ U 59: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff0160 reg: 11t swiz: -X/-U/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 60: op: 0x0011a002 dst: 13t op: VE_MULTIPLY src0: 0x01ff01a0 reg: 13t swiz: X/ U/ U/ U src1: 0x01ff01c0 reg: 14t swiz: X/ U/ U/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 61: op: 0x00116080 dst: 11t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff0180 reg: 12t swiz: X/ U/ U/ U src1: 0x01ff0160 reg: 11t swiz: X/ U/ U/ U src2: 0x01ff01a0 reg: 13t swiz: X/ U/ U/ U 62: op: 0x00116003 dst: 11t op: VE_ADD src0: 0x01ff0160 reg: 11t swiz: X/ U/ U/ U src1: 0x01ff4081 reg: 4i swiz: Z/ U/ U/ U src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 63: op: 0x00118002 dst: 12t op: VE_MULTIPLY src0: 0x01ff0120 reg: 9t swiz: X/ U/ U/ U src1: 0x01ff0140 reg: 10t swiz: X/ U/ U/ U src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 64: op: 0x00216003 dst: 11t op: VE_ADD src0: 0x01f8e180 reg: 12t swiz: U/ X/ U/ U src1: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 65: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x1ff90060 reg: 3t swiz: -X/-Y/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 66: op: 0x00118001 dst: 12t op: VE_DOT_PRODUCT src0: 0x01210000 reg: 0t swiz: X/ Y/ 0/ 0 src1: 0x01210000 reg: 0t swiz: X/ Y/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 67: op: 0x00118048 dst: 12t op: ME_RECIP_SQRT_DX src0: 0x00000180 reg: 12t swiz: X/ X/ X/ X src1: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 68: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f80180 reg: 12t swiz: X/ X/ U/ U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 69: op: 0x00118003 dst: 12t op: VE_ADD src0: 0x1fff2000 reg: 0t swiz: -Y/-U/-U/-U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 70: op: 0x00218003 dst: 12t op: VE_ADD src0: 0x01f8e000 reg: 0t swiz: U/ X/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 71: op: 0x0011a002 dst: 13t op: VE_MULTIPLY src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x1fff0021 reg: 1i swiz: -X/-U/-U/-U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 72: op: 0x0011c009 dst: 14t op: VE_SET_GREATER_THAN_EQUAL src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01ff40a1 reg: 5i swiz: Z/ U/ U/ U src2: 0x012480a1 reg: 5i swiz: 0/ 0/ 0/ 0 73: op: 0x0011e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src2: 0x01ff0102 reg: 8c swiz: X/ U/ U/ U 74: op: 0x0012000a dst: 16t op: VE_SET_LESS_THAN src0: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src1: 0x01ff01e0 reg: 15t swiz: X/ U/ U/ U src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 75: op: 0x0012200a dst: 17t op: VE_SET_LESS_THAN src0: 0x01ff01e0 reg: 15t swiz: X/ U/ U/ U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 76: op: 0x0011e003 dst: 15t op: VE_ADD src0: 0x01ff0200 reg: 16t swiz: X/ U/ U/ U src1: 0x1fff0220 reg: 17t swiz: -X/-U/-U/-U src2: 0x01248220 reg: 17t swiz: 0/ 0/ 0/ 0 77: op: 0x00120003 dst: 16t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff01c0 reg: 14t swiz: -X/-U/-U/-U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 78: op: 0x0011c080 dst: 14t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01ff01e0 reg: 15t swiz: X/ U/ U/ U src1: 0x01ff01c0 reg: 14t swiz: X/ U/ U/ U src2: 0x01ff0200 reg: 16t swiz: X/ U/ U/ U 79: op: 0x0011a002 dst: 13t op: VE_MULTIPLY src0: 0x01ff01a0 reg: 13t swiz: X/ U/ U/ U src1: 0x01ff01c0 reg: 14t swiz: X/ U/ U/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 80: op: 0x0081c003 dst: 14t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 81: op: 0x0031e002 dst: 15t op: VE_MULTIPLY src0: 0x01f80081 reg: 4i swiz: X/ X/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 82: op: 0x00306003 dst: 3t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x1ff901e0 reg: 15t swiz: -X/-Y/-U/-U src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 83: op: 0x0011e002 dst: 15t op: VE_MULTIPLY src0: 0x01ff0140 reg: 10t swiz: X/ U/ U/ U src1: 0x01ff00c2 reg: 6c swiz: X/ U/ U/ U src2: 0x012480c2 reg: 6c swiz: 0/ 0/ 0/ 0 84: op: 0x0031e002 dst: 15t op: VE_MULTIPLY src0: 0x01f801e0 reg: 15t swiz: X/ X/ U/ U src1: 0x01f90180 reg: 12t swiz: X/ Y/ U/ U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 85: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f901e0 reg: 15t swiz: X/ Y/ U/ U src1: 0x01f80120 reg: 9t swiz: X/ X/ U/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 86: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f90120 reg: 9t swiz: X/ Y/ U/ U src1: 0x01f800c0 reg: 6t swiz: X/ X/ U/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 87: op: 0x00306003 dst: 3t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x1ff90120 reg: 9t swiz: -X/-Y/-U/-U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 88: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x01ff00c0 reg: 6t swiz: X/ U/ U/ U src1: 0x1fff2021 reg: 1i swiz: -Y/-U/-U/-U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 89: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f90180 reg: 12t swiz: X/ Y/ U/ U src1: 0x01f801a0 reg: 13t swiz: X/ X/ U/ U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 90: op: 0x00300080 dst: 0t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f800c0 reg: 6t swiz: X/ X/ U/ U src2: 0x01f90120 reg: 9t swiz: X/ Y/ U/ U 91: op: 0x00300003 dst: 0t op: VE_ADD src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 92: op: 0x00106046 dst: 3t op: ME_RECIP_DX src0: 0x000000a2 reg: 5c swiz: X/ X/ X/ X src1: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 93: op: 0x00206046 dst: 3t op: ME_RECIP_DX src0: 0x004920a2 reg: 5c swiz: Y/ Y/ Y/ Y src1: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 src2: 0x012480a2 reg: 5c swiz: 0/ 0/ 0/ 0 94: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01fa2102 reg: 8c swiz: Y/ Z/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 95: op: 0x0031c002 dst: 14t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 96: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01c7e001 reg: 0i swiz: U/ U/ X/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 97: op: 0x00c00003 dst: 0t op: VE_ADD src0: 0x00d7e1c0 reg: 14t swiz: U/ U/ Z/ W src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 98: op: 0x0010400a dst: 2t op: VE_SET_LESS_THAN src0: 0x01ff6040 reg: 2t swiz: W/ U/ U/ U src1: 0x01ff0102 reg: 8c swiz: X/ U/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 99: op: 0x0010600a dst: 3t op: VE_SET_LESS_THAN src0: 0x01ff6080 reg: 4t swiz: W/ U/ U/ U src1: 0x01ff0102 reg: 8c swiz: X/ U/ U/ U src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 100: op: 0x00104003 dst: 2t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0060 reg: 3t swiz: X/ U/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 101: op: 0x0010400a dst: 2t op: VE_SET_LESS_THAN src0: 0x1fff0040 reg: 2t swiz: -X/-U/-U/-U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 102: op: 0x0010200a dst: 1t op: VE_SET_LESS_THAN src0: 0x01ff00a0 reg: 5t swiz: X/ U/ U/ U src1: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 103: op: 0x00102002 dst: 1t op: VE_MULTIPLY src0: 0x01ff00e0 reg: 7t swiz: X/ U/ U/ U src1: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 104: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0040 reg: 2t swiz: X/ U/ U/ U src1: 0x01ff0020 reg: 1t swiz: X/ U/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 105: op: 0x0010200a dst: 1t op: VE_SET_LESS_THAN src0: 0x1fff0020 reg: 1t swiz: -X/-U/-U/-U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 106: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x1fff0020 reg: 1t swiz: -X/-U/-U/-U src1: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 107: op: 0x00300002 dst: 0t op: VE_MULTIPLY src0: 0x01f901c0 reg: 14t swiz: X/ Y/ U/ U src1: 0x01f80020 reg: 1t swiz: X/ X/ U/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 108: op: 0x00706203 dst: 3o op: VE_ADD src0: 0x01da2041 reg: 2i swiz: Y/ Z/ W/ U src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 109: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00000140 reg: 10t swiz: X/ X/ X/ X src1: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 110: op: 0x0030a203 dst: 5o op: VE_ADD src0: 0x01f90160 reg: 11t swiz: X/ Y/ U/ U src1: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 111: op: 0x00708203 dst: 4o op: VE_ADD src0: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 112: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00db6081 reg: 4i swiz: W/ W/ W/ W src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 113: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 114: op: 0x00f0c203 dst: 6o op: VE_ADD src0: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL IN[4], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0..1] DCL CONST[6..9] 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 DCL TEMP[7], LOCAL DCL TEMP[8], LOCAL DCL TEMP[9], LOCAL IMM FLT32 { 0.5000, 255.0000, 1.0323, 0.0312} IMM FLT32 { 0.0000, 1.0000, 0.0156, 2.0000} IMM FLT32 { 128.0000, 1020.0000, 10.6250, -0.5000} IMM FLT32 { 26.0000, 0.0000, 0.0000, 0.0000} 0: ADD TEMP[0].x, IN[2].zzzz, IMM[0].xxxx 1: RCP TEMP[1].x, CONST[8].xxxx 2: MUL TEMP[2].x, TEMP[0].xxxx, TEMP[1].xxxx 3: FRC TEMP[3].x, TEMP[2].xxxx 4: FLR TEMP[2].x, TEMP[2].xxxx 5: ADD TEMP[2].x, TEMP[2].xxxx, IMM[0].xxxx 6: RCP TEMP[4].x, CONST[8].yyyy 7: MUL TEMP[2].x, TEMP[2].xxxx, TEMP[4].xxxx 8: MOV TEMP[3].y, TEMP[2].xxxx 9: TEX TEMP[2], TEMP[3].xyyy, SAMP[2], 2D 10: MAD TEMP[2], IMM[0].yyyy, TEMP[2], IMM[0].xxxx 11: FLR TEMP[2].x, TEMP[2] 12: MUL TEMP[3].x, TEMP[2].xxxx, IMM[0].wwww 13: FRC TEMP[3].x, TEMP[3].xxxx 14: MUL TEMP[3].x, IMM[0].zzzz, TEMP[3].xxxx 15: SEQ TEMP[5].x, TEMP[3].xxxx, IMM[1].xxxx 16: CMP TEMP[4].x, -TEMP[5].xxxx, IMM[1].yyyy, IMM[1].xxxx 17: KIL -TEMP[4].xxxx 18: MUL TEMP[4].x, TEMP[2].xxxx, IMM[1].zzzz 19: FLR TEMP[4].x, TEMP[4].xxxx 20: MOV_SAT TEMP[4].x, TEMP[4].xxxx 21: SLT TEMP[4].x, IMM[0].xxxx, TEMP[4].xxxx 22: ABS TEMP[5].x, IN[4].yyyy 23: MUL TEMP[6].x, IN[0].xxxx, IMM[0].xxxx 24: SLT TEMP[5].x, TEMP[6].xxxx, TEMP[5].xxxx 25: ADD TEMP[6].x, -TEMP[4].xxxx, IMM[1].yyyy 26: CMP TEMP[5].x, -TEMP[6].xxxx, IMM[1].xxxx, TEMP[5].xxxx 27: CMP TEMP[5].x, -TEMP[5].xxxx, IMM[1].yyyy, IMM[1].xxxx 28: KIL -TEMP[5].xxxx 29: MUL TEMP[2].x, IMM[1].zzzz, TEMP[2].xxxx 30: FRC TEMP[2].x, TEMP[2].xxxx 31: MUL TEMP[2].x, IMM[1].wwww, TEMP[2].xxxx 32: SGE TEMP[2].x, TEMP[2].xxxx, IMM[1].yyyy 33: MOV TEMP[5].y, IMM[1].xxxx 34: MOV TEMP[5].x, IN[3].zzzz 35: ADD TEMP[5].xy, TEMP[5].xyyy, -IN[4].xyyy 36: CMP TEMP[0].xy, -TEMP[2].xxxx, TEMP[5].xyxx, IN[4].xyyy 37: ADD TEMP[5].xy, IN[3].zzzz, -IN[3].yxxx 38: CMP TEMP[1].xy, -TEMP[2].xxxx, TEMP[5].xyxx, IN[3].xyyy 39: FLR TEMP[2].x, TEMP[0].xxxx 40: MOV TEMP[5].x, TEMP[2].xxxx 41: MOV TEMP[5].y, IN[1].xxxx 42: ADD TEMP[5].xy, TEMP[5].xyyy, IMM[0].xxxx 43: RCP TEMP[6].x, CONST[7].xxxx 44: RCP TEMP[6].y, CONST[7].yyyy 45: MUL TEMP[5].xy, TEMP[5].xyyy, TEMP[6].xyyy 46: TEX TEMP[5].xy, TEMP[5].xyyy, SAMP[1], 2D 47: MUL TEMP[6].xy, IMM[0].yyyy, TEMP[5].xyyy 48: ADD TEMP[6].xy, IMM[2].xxxx, -TEMP[6].xyyy 49: ADD TEMP[2].xy, TEMP[2].xxxx, TEMP[6].xyyy 50: SGE TEMP[7].x, TEMP[2].xxxx, TEMP[1].xxxx 51: MOV TEMP[7].x, TEMP[7].xxxx 52: SGE TEMP[8].x, TEMP[2].yyyy, TEMP[1].xxxx 53: MOV TEMP[7].y, TEMP[8].xxxx 54: SGE TEMP[8].x, TEMP[1].yyyy, TEMP[2].xxxx 55: MOV TEMP[8].x, TEMP[8].xxxx 56: SGE TEMP[1].x, TEMP[1].yyyy, TEMP[2].yyyy 57: MOV TEMP[8].y, TEMP[1].xxxx 58: MUL TEMP[1].xy, TEMP[7].xyyy, TEMP[8].xyyy 59: CEIL TEMP[5].xy, TEMP[5].xyyy 60: MUL TEMP[1].xy, TEMP[1].xyyy, TEMP[5].xyyy 61: ADD TEMP[7].x, TEMP[1].xxxx, TEMP[1].yyyy 62: SEQ TEMP[7].x, TEMP[7].xxxx, IMM[1].xxxx 63: CMP TEMP[5].x, -TEMP[7].xxxx, IMM[1].yyyy, IMM[1].xxxx 64: KIL -TEMP[5].xxxx 65: ADD TEMP[7].x, -TEMP[4].xxxx, IMM[1].yyyy 66: CMP TEMP[5].x, -TEMP[7].xxxx, IMM[1].xxxx, IMM[1].yyyy 67: ADD TEMP[5].x, TEMP[2].xxxx, TEMP[5].xxxx 68: MOV TEMP[5].y, IN[1].xxxx 69: MOV TEMP[7].x, -TEMP[0].yyyy 70: MOV TEMP[7].y, -TEMP[6].xxxx 71: ADD TEMP[8].x, -TEMP[4].xxxx, IMM[1].yyyy 72: MOV TEMP[9].x, -TEMP[6].xxxx 73: MOV TEMP[9].y, TEMP[0].yyyy 74: CMP TEMP[7].xy, -TEMP[8].xxxx, TEMP[9].xyxx, TEMP[7].xyyy 75: ADD TEMP[9].x, -TEMP[4].xxxx, IMM[1].yyyy 76: CMP TEMP[8].x, -TEMP[9].xxxx, IMM[1].xxxx, IMM[1].yyyy 77: ADD TEMP[2].x, TEMP[2].yyyy, TEMP[8].xxxx 78: MOV TEMP[2].y, IN[1].xxxx 79: MOV TEMP[8].x, -TEMP[0].yyyy 80: MOV TEMP[8].y, -TEMP[6].yyyy 81: ADD TEMP[4].x, -TEMP[4].xxxx, IMM[1].yyyy 82: MOV TEMP[6].x, -TEMP[6].yyyy 83: MOV TEMP[6].y, TEMP[0].yyyy 84: CMP TEMP[0].xy, -TEMP[4].xxxx, TEMP[6].xyxx, TEMP[8].xyyy 85: ADD TEMP[4].xy, TEMP[5].xyyy, IMM[0].xxxx 86: RCP TEMP[5].x, CONST[7].xxxx 87: RCP TEMP[5].y, CONST[7].yyyy 88: MUL TEMP[4].xy, TEMP[4].xyyy, TEMP[5].xyyy 89: TEX TEMP[4].zw, TEMP[4].xyyy, SAMP[1], 2D 90: MAD TEMP[4].xy, IMM[2].yyyy, TEMP[4].zwww, IMM[1].yyyy 91: ADD TEMP[4].xy, TEMP[4].xyyy, TEMP[7].xyyy 92: RCP TEMP[5].x, CONST[6].xxxx 93: RCP TEMP[5].y, CONST[6].yyyy 94: MUL TEMP[4].xy, TEMP[4].xyyy, TEMP[5].xyyy 95: TEX TEMP[4].w, TEMP[4].xyyy, SAMP[0], 2D 96: MOV TEMP[4].x, TEMP[4].wwww 97: ADD TEMP[2].xy, TEMP[2].xyyy, IMM[0].xxxx 98: RCP TEMP[5].x, CONST[7].xxxx 99: RCP TEMP[5].y, CONST[7].yyyy 100: MUL TEMP[2].xy, TEMP[2].xyyy, TEMP[5].xyyy 101: TEX TEMP[2].zw, TEMP[2].xyyy, SAMP[1], 2D 102: MAD TEMP[2].xy, IMM[2].yyyy, TEMP[2].zwww, IMM[1].yyyy 103: ADD TEMP[0].xy, TEMP[2].xyyy, TEMP[0].xyyy 104: RCP TEMP[2].x, CONST[6].xxxx 105: RCP TEMP[2].y, CONST[6].yyyy 106: MUL TEMP[0].xy, TEMP[0].xyyy, TEMP[2].xyyy 107: TEX TEMP[0].w, TEMP[0].xyyy, SAMP[0], 2D 108: MOV TEMP[4].y, TEMP[0].wwww 109: MUL TEMP[0].xy, TEMP[4].xyyy, TEMP[1].xyyy 110: MAX TEMP[0].x, TEMP[0].xxxx, TEMP[0].yyyy 111: ADD TEMP[0].x, TEMP[0].xxxx, IMM[2].wwww 112: MAD TEMP[0].x, IMM[2].zzzz, TEMP[0].xxxx, IMM[0].xxxx 113: ADD_SAT TEMP[0].x, TEMP[0].xxxx, CONST[0].xxxx 114: SEQ TEMP[2].x, TEMP[0].xxxx, IMM[1].xxxx 115: CMP TEMP[1].x, -TEMP[2].xxxx, IMM[1].yyyy, IMM[1].xxxx 116: KIL -TEMP[1].xxxx 117: ADD TEMP[1].x, IN[2].yyyy, IMM[0].xxxx 118: RCP TEMP[2].x, CONST[9].xxxx 119: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 120: FRC TEMP[2].x, TEMP[1].xxxx 121: FLR TEMP[1].x, TEMP[1].xxxx 122: MAD TEMP[1].x, IMM[3].xxxx, TEMP[1].xxxx, CONST[1].xxxx 123: ADD TEMP[1].x, TEMP[1].xxxx, IMM[0].xxxx 124: RCP TEMP[4].x, CONST[9].yyyy 125: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[4].xxxx 126: MOV TEMP[2].y, TEMP[1].xxxx 127: TEX TEMP[1], TEMP[2].xyyy, SAMP[3], 2D 128: MOV TEMP[2].xyz, TEMP[1].xyzx 129: MUL TEMP[1].x, TEMP[1].wwww, TEMP[3].xxxx 130: MUL TEMP[0].x, TEMP[1].xxxx, TEMP[0].xxxx 131: MOV TEMP[2].w, TEMP[0].xxxx 132: MOV OUT[0], TEMP[2] 133: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[5].xy, temp[5].xyyy, 2D[1]; 47: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 48: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 49: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 50: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 51: MOV temp[7].x, temp[7].xxxx; 52: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 53: MOV temp[7].y, temp[8].xxxx; 54: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 55: MOV temp[8].x, temp[8].xxxx; 56: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 57: MOV temp[8].y, temp[1].xxxx; 58: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 59: CEIL temp[5].xy, temp[5].xyyy; 60: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 61: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 62: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 63: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 64: KIL -temp[5].xxxx; 65: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 66: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 67: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 68: MOV temp[5].y, input[1].xxxx; 69: MOV temp[7].x, -temp[0].yyyy; 70: MOV temp[7].y, -temp[6].xxxx; 71: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 72: MOV temp[9].x, -temp[6].xxxx; 73: MOV temp[9].y, temp[0].yyyy; 74: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 75: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 76: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 77: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 78: MOV temp[2].y, input[1].xxxx; 79: MOV temp[8].x, -temp[0].yyyy; 80: MOV temp[8].y, -temp[6].yyyy; 81: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 82: MOV temp[6].x, -temp[6].yyyy; 83: MOV temp[6].y, temp[0].yyyy; 84: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 85: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 86: RCP temp[5].x, const[7].xxxx; 87: RCP temp[5].y, const[7].yyyy; 88: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 89: TEX temp[4].zw, temp[4].xyyy, 2D[1]; 90: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 91: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 92: RCP temp[5].x, const[6].xxxx; 93: RCP temp[5].y, const[6].yyyy; 94: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 95: TEX temp[4].w, temp[4].xyyy, 2D[0]; 96: MOV temp[4].x, temp[4].wwww; 97: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 98: RCP temp[5].x, const[7].xxxx; 99: RCP temp[5].y, const[7].yyyy; 100: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 101: TEX temp[2].zw, temp[2].xyyy, 2D[1]; 102: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 103: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 104: RCP temp[2].x, const[6].xxxx; 105: RCP temp[2].y, const[6].yyyy; 106: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 107: TEX temp[0].w, temp[0].xyyy, 2D[0]; 108: MOV temp[4].y, temp[0].wwww; 109: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 110: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 111: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 112: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 113: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 114: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 115: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 116: KIL -temp[1].xxxx; 117: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 118: RCP temp[2].x, const[9].xxxx; 119: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 120: FRC temp[2].x, temp[1].xxxx; 121: FLR temp[1].x, temp[1].xxxx; 122: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 123: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 124: RCP temp[4].x, const[9].yyyy; 125: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 126: MOV temp[2].y, temp[1].xxxx; 127: TEX temp[1], temp[2].xyyy, 2D[3]; 128: MOV temp[2].xyz, temp[1].xyzx; 129: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 130: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 131: MOV temp[2].w, temp[0].xxxx; 132: MOV output[0], temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[5].xy, temp[5].xyyy, 2D[1]; 47: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 48: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 49: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 50: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 51: MOV temp[7].x, temp[7].xxxx; 52: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 53: MOV temp[7].y, temp[8].xxxx; 54: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 55: MOV temp[8].x, temp[8].xxxx; 56: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 57: MOV temp[8].y, temp[1].xxxx; 58: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 59: CEIL temp[5].xy, temp[5].xyyy; 60: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 61: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 62: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 63: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 64: KIL -temp[5].xxxx; 65: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 66: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 67: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 68: MOV temp[5].y, input[1].xxxx; 69: MOV temp[7].x, -temp[0].yyyy; 70: MOV temp[7].y, -temp[6].xxxx; 71: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 72: MOV temp[9].x, -temp[6].xxxx; 73: MOV temp[9].y, temp[0].yyyy; 74: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 75: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 76: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 77: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 78: MOV temp[2].y, input[1].xxxx; 79: MOV temp[8].x, -temp[0].yyyy; 80: MOV temp[8].y, -temp[6].yyyy; 81: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 82: MOV temp[6].x, -temp[6].yyyy; 83: MOV temp[6].y, temp[0].yyyy; 84: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 85: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 86: RCP temp[5].x, const[7].xxxx; 87: RCP temp[5].y, const[7].yyyy; 88: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 89: TEX temp[4].zw, temp[4].xyyy, 2D[1]; 90: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 91: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 92: RCP temp[5].x, const[6].xxxx; 93: RCP temp[5].y, const[6].yyyy; 94: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 95: TEX temp[4].w, temp[4].xyyy, 2D[0]; 96: MOV temp[4].x, temp[4].wwww; 97: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 98: RCP temp[5].x, const[7].xxxx; 99: RCP temp[5].y, const[7].yyyy; 100: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 101: TEX temp[2].zw, temp[2].xyyy, 2D[1]; 102: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 103: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 104: RCP temp[2].x, const[6].xxxx; 105: RCP temp[2].y, const[6].yyyy; 106: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 107: TEX temp[0].w, temp[0].xyyy, 2D[0]; 108: MOV temp[4].y, temp[0].wwww; 109: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 110: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 111: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 112: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 113: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 114: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 115: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 116: KIL -temp[1].xxxx; 117: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 118: RCP temp[2].x, const[9].xxxx; 119: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 120: FRC temp[2].x, temp[1].xxxx; 121: FLR temp[1].x, temp[1].xxxx; 122: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 123: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 124: RCP temp[4].x, const[9].yyyy; 125: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 126: MOV temp[2].y, temp[1].xxxx; 127: TEX temp[1], temp[2].xyyy, 2D[3]; 128: MOV temp[2].xyz, temp[1].xyzx; 129: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 130: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 131: MOV temp[2].w, temp[0].xxxx; 132: MOV output[0], temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[5].xy, temp[5].xyyy, 2D[1]; 47: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 48: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 49: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 50: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 51: MOV temp[7].x, temp[7].xxxx; 52: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 53: MOV temp[7].y, temp[8].xxxx; 54: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 55: MOV temp[8].x, temp[8].xxxx; 56: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 57: MOV temp[8].y, temp[1].xxxx; 58: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 59: CEIL temp[5].xy, temp[5].xyyy; 60: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 61: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 62: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 63: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 64: KIL -temp[5].xxxx; 65: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 66: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 67: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 68: MOV temp[5].y, input[1].xxxx; 69: MOV temp[7].x, -temp[0].yyyy; 70: MOV temp[7].y, -temp[6].xxxx; 71: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 72: MOV temp[9].x, -temp[6].xxxx; 73: MOV temp[9].y, temp[0].yyyy; 74: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 75: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 76: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 77: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 78: MOV temp[2].y, input[1].xxxx; 79: MOV temp[8].x, -temp[0].yyyy; 80: MOV temp[8].y, -temp[6].yyyy; 81: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 82: MOV temp[6].x, -temp[6].yyyy; 83: MOV temp[6].y, temp[0].yyyy; 84: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 85: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 86: RCP temp[5].x, const[7].xxxx; 87: RCP temp[5].y, const[7].yyyy; 88: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 89: TEX temp[4].zw, temp[4].xyyy, 2D[1]; 90: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 91: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 92: RCP temp[5].x, const[6].xxxx; 93: RCP temp[5].y, const[6].yyyy; 94: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 95: TEX temp[4].w, temp[4].xyyy, 2D[0]; 96: MOV temp[4].x, temp[4].wwww; 97: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 98: RCP temp[5].x, const[7].xxxx; 99: RCP temp[5].y, const[7].yyyy; 100: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 101: TEX temp[2].zw, temp[2].xyyy, 2D[1]; 102: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 103: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 104: RCP temp[2].x, const[6].xxxx; 105: RCP temp[2].y, const[6].yyyy; 106: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 107: TEX temp[0].w, temp[0].xyyy, 2D[0]; 108: MOV temp[4].y, temp[0].wwww; 109: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 110: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 111: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 112: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 113: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 114: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 115: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 116: KIL -temp[1].xxxx; 117: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 118: RCP temp[2].x, const[9].xxxx; 119: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 120: FRC temp[2].x, temp[1].xxxx; 121: FLR temp[1].x, temp[1].xxxx; 122: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 123: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 124: RCP temp[4].x, const[9].yyyy; 125: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 126: MOV temp[2].y, temp[1].xxxx; 127: TEX temp[1], temp[2].xyyy, 2D[3]; 128: MOV temp[2].xyz, temp[1].xyzx; 129: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 130: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 131: MOV temp[2].w, temp[0].xxxx; 132: MOV output[0], temp[2]; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[5].xy, temp[5].xyyy, 2D[1]; 47: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 48: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 49: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 50: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 51: MOV temp[7].x, temp[7].xxxx; 52: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 53: MOV temp[7].y, temp[8].xxxx; 54: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 55: MOV temp[8].x, temp[8].xxxx; 56: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 57: MOV temp[8].y, temp[1].xxxx; 58: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 59: CEIL temp[5].xy, temp[5].xyyy; 60: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 61: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 62: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 63: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 64: KIL -temp[5].xxxx; 65: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 66: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 67: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 68: MOV temp[5].y, input[1].xxxx; 69: MOV temp[7].x, -temp[0].yyyy; 70: MOV temp[7].y, -temp[6].xxxx; 71: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 72: MOV temp[9].x, -temp[6].xxxx; 73: MOV temp[9].y, temp[0].yyyy; 74: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 75: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 76: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 77: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 78: MOV temp[2].y, input[1].xxxx; 79: MOV temp[8].x, -temp[0].yyyy; 80: MOV temp[8].y, -temp[6].yyyy; 81: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 82: MOV temp[6].x, -temp[6].yyyy; 83: MOV temp[6].y, temp[0].yyyy; 84: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 85: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 86: RCP temp[5].x, const[7].xxxx; 87: RCP temp[5].y, const[7].yyyy; 88: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 89: TEX temp[4].zw, temp[4].xyyy, 2D[1]; 90: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 91: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 92: RCP temp[5].x, const[6].xxxx; 93: RCP temp[5].y, const[6].yyyy; 94: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 95: TEX temp[4].w, temp[4].xyyy, 2D[0]; 96: MOV temp[4].x, temp[4].wwww; 97: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 98: RCP temp[5].x, const[7].xxxx; 99: RCP temp[5].y, const[7].yyyy; 100: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 101: TEX temp[2].zw, temp[2].xyyy, 2D[1]; 102: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 103: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 104: RCP temp[2].x, const[6].xxxx; 105: RCP temp[2].y, const[6].yyyy; 106: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 107: TEX temp[0].w, temp[0].xyyy, 2D[0]; 108: MOV temp[4].y, temp[0].wwww; 109: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 110: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 111: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 112: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 113: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 114: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 115: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 116: KIL -temp[1].xxxx; 117: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 118: RCP temp[2].x, const[9].xxxx; 119: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 120: FRC temp[2].x, temp[1].xxxx; 121: FLR temp[1].x, temp[1].xxxx; 122: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 123: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 124: RCP temp[4].x, const[9].yyyy; 125: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 126: MOV temp[2].y, temp[1].xxxx; 127: TEX temp[1], temp[2].xyyy, 2D[3]; 128: MOV temp[2].xyz, temp[1].xyzx; 129: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 130: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 131: MOV temp[2].w, temp[0].xxxx; 132: MOV output[0], temp[2]; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[5].xy, temp[5].xyyy, 2D[1]; 47: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 48: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 49: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 50: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 51: MOV temp[7].x, temp[7].xxxx; 52: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 53: MOV temp[7].y, temp[8].xxxx; 54: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 55: MOV temp[8].x, temp[8].xxxx; 56: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 57: MOV temp[8].y, temp[1].xxxx; 58: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 59: CEIL temp[5].xy, temp[5].xyyy; 60: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 61: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 62: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 63: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 64: KIL -temp[5].xxxx; 65: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 66: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 67: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 68: MOV temp[5].y, input[1].xxxx; 69: MOV temp[7].x, -temp[0].yyyy; 70: MOV temp[7].y, -temp[6].xxxx; 71: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 72: MOV temp[9].x, -temp[6].xxxx; 73: MOV temp[9].y, temp[0].yyyy; 74: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 75: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 76: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 77: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 78: MOV temp[2].y, input[1].xxxx; 79: MOV temp[8].x, -temp[0].yyyy; 80: MOV temp[8].y, -temp[6].yyyy; 81: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 82: MOV temp[6].x, -temp[6].yyyy; 83: MOV temp[6].y, temp[0].yyyy; 84: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 85: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 86: RCP temp[5].x, const[7].xxxx; 87: RCP temp[5].y, const[7].yyyy; 88: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 89: TEX temp[4].zw, temp[4].xyyy, 2D[1]; 90: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 91: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 92: RCP temp[5].x, const[6].xxxx; 93: RCP temp[5].y, const[6].yyyy; 94: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 95: TEX temp[4].w, temp[4].xyyy, 2D[0]; 96: MOV temp[4].x, temp[4].wwww; 97: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 98: RCP temp[5].x, const[7].xxxx; 99: RCP temp[5].y, const[7].yyyy; 100: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 101: TEX temp[2].zw, temp[2].xyyy, 2D[1]; 102: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 103: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 104: RCP temp[2].x, const[6].xxxx; 105: RCP temp[2].y, const[6].yyyy; 106: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 107: TEX temp[0].w, temp[0].xyyy, 2D[0]; 108: MOV temp[4].y, temp[0].wwww; 109: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 110: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 111: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 112: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 113: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 114: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 115: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 116: KIL -temp[1].xxxx; 117: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 118: RCP temp[2].x, const[9].xxxx; 119: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 120: FRC temp[2].x, temp[1].xxxx; 121: FLR temp[1].x, temp[1].xxxx; 122: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 123: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 124: RCP temp[4].x, const[9].yyyy; 125: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 126: MOV temp[2].y, temp[1].xxxx; 127: TEX temp[1], temp[2].xyyy, 2D[3]; 128: MOV temp[2].xyz, temp[1].xyzx; 129: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 130: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 131: MOV temp[2].w, temp[0].xxxx; 132: MOV output[0], temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FLR temp[2].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 6: RCP temp[4].x, const[8].yyyy; 7: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 8: MOV temp[3].y, temp[2].xxxx; 9: TEX temp[2], temp[3].xyyy, 2D[2]; 10: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 11: FLR temp[2].x, temp[2]; 12: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 13: FRC temp[3].x, temp[3].xxxx; 14: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 15: SEQ temp[5].x, temp[3].xxxx, const[11].xxxx; 16: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 17: KIL -temp[4].xxxx; 18: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 19: FLR temp[4].x, temp[4].xxxx; 20: MOV_SAT temp[4].x, temp[4].xxxx; 21: SLT temp[4].x, const[10].xxxx, temp[4].xxxx; 22: ABS temp[5].x, input[4].yyyy; 23: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 24: SLT temp[5].x, temp[6].xxxx, temp[5].xxxx; 25: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 26: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 27: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 28: KIL -temp[5].xxxx; 29: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 30: FRC temp[2].x, temp[2].xxxx; 31: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 32: SGE temp[2].x, temp[2].xxxx, const[11].yyyy; 33: MOV temp[5].y, const[11].xxxx; 34: MOV temp[5].x, input[3].zzzz; 35: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 36: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 37: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 38: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 39: FLR temp[2].x, temp[0].xxxx; 40: MOV temp[5].x, temp[2].xxxx; 41: MOV temp[5].y, input[1].xxxx; 42: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 43: RCP temp[6].x, const[7].xxxx; 44: RCP temp[6].y, const[7].yyyy; 45: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 46: TEX temp[10], temp[5].xyyy, 2D[1]; 47: MOV temp[5].xy, temp[10]; 48: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 49: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 50: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 51: SGE temp[7].x, temp[2].xxxx, temp[1].xxxx; 52: MOV temp[7].x, temp[7].xxxx; 53: SGE temp[8].x, temp[2].yyyy, temp[1].xxxx; 54: MOV temp[7].y, temp[8].xxxx; 55: SGE temp[8].x, temp[1].yyyy, temp[2].xxxx; 56: MOV temp[8].x, temp[8].xxxx; 57: SGE temp[1].x, temp[1].yyyy, temp[2].yyyy; 58: MOV temp[8].y, temp[1].xxxx; 59: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 60: CEIL temp[5].xy, temp[5].xyyy; 61: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 62: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 63: SEQ temp[7].x, temp[7].xxxx, const[11].xxxx; 64: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 65: KIL -temp[5].xxxx; 66: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 67: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 68: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 69: MOV temp[5].y, input[1].xxxx; 70: MOV temp[7].x, -temp[0].yyyy; 71: MOV temp[7].y, -temp[6].xxxx; 72: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 73: MOV temp[9].x, -temp[6].xxxx; 74: MOV temp[9].y, temp[0].yyyy; 75: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 76: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 77: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 78: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 79: MOV temp[2].y, input[1].xxxx; 80: MOV temp[8].x, -temp[0].yyyy; 81: MOV temp[8].y, -temp[6].yyyy; 82: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 83: MOV temp[6].x, -temp[6].yyyy; 84: MOV temp[6].y, temp[0].yyyy; 85: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 86: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 87: RCP temp[5].x, const[7].xxxx; 88: RCP temp[5].y, const[7].yyyy; 89: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 90: TEX temp[11], temp[4].xyyy, 2D[1]; 91: MOV temp[4].zw, temp[11]; 92: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 93: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 94: RCP temp[5].x, const[6].xxxx; 95: RCP temp[5].y, const[6].yyyy; 96: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 97: TEX temp[12], temp[4].xyyy, 2D[0]; 98: MOV temp[4].w, temp[12]; 99: MOV temp[4].x, temp[4].wwww; 100: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 101: RCP temp[5].x, const[7].xxxx; 102: RCP temp[5].y, const[7].yyyy; 103: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 104: TEX temp[13], temp[2].xyyy, 2D[1]; 105: MOV temp[2].zw, temp[13]; 106: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 107: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 108: RCP temp[2].x, const[6].xxxx; 109: RCP temp[2].y, const[6].yyyy; 110: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 111: TEX temp[14], temp[0].xyyy, 2D[0]; 112: MOV temp[0].w, temp[14]; 113: MOV temp[4].y, temp[0].wwww; 114: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 115: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 116: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 117: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 118: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 119: SEQ temp[2].x, temp[0].xxxx, const[11].xxxx; 120: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 121: KIL -temp[1].xxxx; 122: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 123: RCP temp[2].x, const[9].xxxx; 124: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 125: FRC temp[2].x, temp[1].xxxx; 126: FLR temp[1].x, temp[1].xxxx; 127: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 128: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 129: RCP temp[4].x, const[9].yyyy; 130: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 131: MOV temp[2].y, temp[1].xxxx; 132: TEX temp[1], temp[2].xyyy, 2D[3]; 133: MOV temp[2].xyz, temp[1].xyzx; 134: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 135: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 136: MOV temp[2].w, temp[0].xxxx; 137: MOV output[0], temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].x, input[2].zzzz, const[10].xxxx; 1: RCP temp[1].x, const[8].xxxx; 2: MUL temp[2].x, temp[0].xxxx, temp[1].xxxx; 3: FRC temp[3].x, temp[2].xxxx; 4: FRC temp[15].x, temp[2].xxxx; 5: ADD temp[2].x, temp[2].xxxx, -temp[15]; 6: ADD temp[2].x, temp[2].xxxx, const[10].xxxx; 7: RCP temp[4].x, const[8].yyyy; 8: MUL temp[2].x, temp[2].xxxx, temp[4].xxxx; 9: MOV temp[3].y, temp[2].xxxx; 10: TEX temp[2], temp[3].xyyy, 2D[2]; 11: MAD temp[2], const[10].yyyy, temp[2], const[10].xxxx; 12: FRC temp[16].x, temp[2]; 13: ADD temp[2].x, temp[2], -temp[16]; 14: MUL temp[3].x, temp[2].xxxx, const[10].wwww; 15: FRC temp[3].x, temp[3].xxxx; 16: MUL temp[3].x, const[10].zzzz, temp[3].xxxx; 17: ADD temp[5].x, temp[3].xxxx, -const[11].xxxx; 18: CMP temp[5].x, -|temp[5]|, none.0000, none.1111; 19: CMP temp[4].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 20: KIL -temp[4].xxxx; 21: MUL temp[4].x, temp[2].xxxx, const[11].zzzz; 22: FRC temp[17].x, temp[4].xxxx; 23: ADD temp[4].x, temp[4].xxxx, -temp[17]; 24: MOV_SAT temp[4].x, temp[4].xxxx; 25: ADD temp[18].x, const[10].xxxx, -temp[4].xxxx; 26: CMP temp[4].x, temp[18], none.1111, none.0000; 27: MOV temp[5].x, |input[4].yyyy|; 28: MUL temp[6].x, input[0].xxxx, const[10].xxxx; 29: ADD temp[19].x, temp[6].xxxx, -temp[5].xxxx; 30: CMP temp[5].x, temp[19], none.1111, none.0000; 31: ADD temp[6].x, -temp[4].xxxx, const[11].yyyy; 32: CMP temp[5].x, -temp[6].xxxx, const[11].xxxx, temp[5].xxxx; 33: CMP temp[5].x, -temp[5].xxxx, const[11].yyyy, const[11].xxxx; 34: KIL -temp[5].xxxx; 35: MUL temp[2].x, const[11].zzzz, temp[2].xxxx; 36: FRC temp[2].x, temp[2].xxxx; 37: MUL temp[2].x, const[11].wwww, temp[2].xxxx; 38: ADD temp[20].x, temp[2].xxxx, -const[11].yyyy; 39: CMP temp[2].x, temp[20], none.0000, none.1111; 40: MOV temp[5].y, const[11].xxxx; 41: MOV temp[5].x, input[3].zzzz; 42: ADD temp[5].xy, temp[5].xyyy, -input[4].xyyy; 43: CMP temp[0].xy, -temp[2].xxxx, temp[5].xyxx, input[4].xyyy; 44: ADD temp[5].xy, input[3].zzzz, -input[3].yxxx; 45: CMP temp[1].xy, -temp[2].xxxx, temp[5].xyxx, input[3].xyyy; 46: FRC temp[2].x, temp[0].xxxx; 47: ADD temp[2].x, temp[0].xxxx, -temp[2]; 48: MOV temp[5].x, temp[2].xxxx; 49: MOV temp[5].y, input[1].xxxx; 50: ADD temp[5].xy, temp[5].xyyy, const[10].xxxx; 51: RCP temp[6].x, const[7].xxxx; 52: RCP temp[6].y, const[7].yyyy; 53: MUL temp[5].xy, temp[5].xyyy, temp[6].xyyy; 54: TEX temp[10], temp[5].xyyy, 2D[1]; 55: MOV temp[5].xy, temp[10]; 56: MUL temp[6].xy, const[10].yyyy, temp[5].xyyy; 57: ADD temp[6].xy, const[12].xxxx, -temp[6].xyyy; 58: ADD temp[2].xy, temp[2].xxxx, temp[6].xyyy; 59: ADD temp[7].x, temp[2].xxxx, -temp[1].xxxx; 60: CMP temp[7].x, temp[7], none.0000, none.1111; 61: MOV temp[7].x, temp[7].xxxx; 62: ADD temp[8].x, temp[2].yyyy, -temp[1].xxxx; 63: CMP temp[8].x, temp[8], none.0000, none.1111; 64: MOV temp[7].y, temp[8].xxxx; 65: ADD temp[8].x, temp[1].yyyy, -temp[2].xxxx; 66: CMP temp[8].x, temp[8], none.0000, none.1111; 67: MOV temp[8].x, temp[8].xxxx; 68: ADD temp[21].x, temp[1].yyyy, -temp[2].yyyy; 69: CMP temp[1].x, temp[21], none.0000, none.1111; 70: MOV temp[8].y, temp[1].xxxx; 71: MUL temp[1].xy, temp[7].xyyy, temp[8].xyyy; 72: FRC temp[22].xy, -temp[5].xyyy; 73: ADD temp[5].xy, temp[5].xyyy, temp[22]; 74: MUL temp[1].xy, temp[1].xyyy, temp[5].xyyy; 75: ADD temp[7].x, temp[1].xxxx, temp[1].yyyy; 76: ADD temp[23].x, temp[7].xxxx, -const[11].xxxx; 77: CMP temp[7].x, -|temp[23]|, none.0000, none.1111; 78: CMP temp[5].x, -temp[7].xxxx, const[11].yyyy, const[11].xxxx; 79: KIL -temp[5].xxxx; 80: ADD temp[7].x, -temp[4].xxxx, const[11].yyyy; 81: CMP temp[5].x, -temp[7].xxxx, const[11].xxxx, const[11].yyyy; 82: ADD temp[5].x, temp[2].xxxx, temp[5].xxxx; 83: MOV temp[5].y, input[1].xxxx; 84: MOV temp[7].x, -temp[0].yyyy; 85: MOV temp[7].y, -temp[6].xxxx; 86: ADD temp[8].x, -temp[4].xxxx, const[11].yyyy; 87: MOV temp[9].x, -temp[6].xxxx; 88: MOV temp[9].y, temp[0].yyyy; 89: CMP temp[7].xy, -temp[8].xxxx, temp[9].xyxx, temp[7].xyyy; 90: ADD temp[9].x, -temp[4].xxxx, const[11].yyyy; 91: CMP temp[8].x, -temp[9].xxxx, const[11].xxxx, const[11].yyyy; 92: ADD temp[2].x, temp[2].yyyy, temp[8].xxxx; 93: MOV temp[2].y, input[1].xxxx; 94: MOV temp[8].x, -temp[0].yyyy; 95: MOV temp[8].y, -temp[6].yyyy; 96: ADD temp[4].x, -temp[4].xxxx, const[11].yyyy; 97: MOV temp[6].x, -temp[6].yyyy; 98: MOV temp[6].y, temp[0].yyyy; 99: CMP temp[0].xy, -temp[4].xxxx, temp[6].xyxx, temp[8].xyyy; 100: ADD temp[4].xy, temp[5].xyyy, const[10].xxxx; 101: RCP temp[5].x, const[7].xxxx; 102: RCP temp[5].y, const[7].yyyy; 103: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 104: TEX temp[11], temp[4].xyyy, 2D[1]; 105: MOV temp[4].zw, temp[11]; 106: MAD temp[4].xy, const[12].yyyy, temp[4].zwww, const[11].yyyy; 107: ADD temp[4].xy, temp[4].xyyy, temp[7].xyyy; 108: RCP temp[5].x, const[6].xxxx; 109: RCP temp[5].y, const[6].yyyy; 110: MUL temp[4].xy, temp[4].xyyy, temp[5].xyyy; 111: TEX temp[12], temp[4].xyyy, 2D[0]; 112: MOV temp[4].w, temp[12]; 113: MOV temp[4].x, temp[4].wwww; 114: ADD temp[2].xy, temp[2].xyyy, const[10].xxxx; 115: RCP temp[5].x, const[7].xxxx; 116: RCP temp[5].y, const[7].yyyy; 117: MUL temp[2].xy, temp[2].xyyy, temp[5].xyyy; 118: TEX temp[13], temp[2].xyyy, 2D[1]; 119: MOV temp[2].zw, temp[13]; 120: MAD temp[2].xy, const[12].yyyy, temp[2].zwww, const[11].yyyy; 121: ADD temp[0].xy, temp[2].xyyy, temp[0].xyyy; 122: RCP temp[2].x, const[6].xxxx; 123: RCP temp[2].y, const[6].yyyy; 124: MUL temp[0].xy, temp[0].xyyy, temp[2].xyyy; 125: TEX temp[14], temp[0].xyyy, 2D[0]; 126: MOV temp[0].w, temp[14]; 127: MOV temp[4].y, temp[0].wwww; 128: MUL temp[0].xy, temp[4].xyyy, temp[1].xyyy; 129: MAX temp[0].x, temp[0].xxxx, temp[0].yyyy; 130: ADD temp[0].x, temp[0].xxxx, const[12].wwww; 131: MAD temp[0].x, const[12].zzzz, temp[0].xxxx, const[10].xxxx; 132: ADD_SAT temp[0].x, temp[0].xxxx, const[0].xxxx; 133: ADD temp[2].x, temp[0].xxxx, -const[11].xxxx; 134: CMP temp[2].x, -|temp[2]|, none.0000, none.1111; 135: CMP temp[1].x, -temp[2].xxxx, const[11].yyyy, const[11].xxxx; 136: KIL -temp[1].xxxx; 137: ADD temp[1].x, input[2].yyyy, const[10].xxxx; 138: RCP temp[2].x, const[9].xxxx; 139: MUL temp[1].x, temp[1].xxxx, temp[2].xxxx; 140: FRC temp[2].x, temp[1].xxxx; 141: FRC temp[24].x, temp[1].xxxx; 142: ADD temp[1].x, temp[1].xxxx, -temp[24]; 143: MAD temp[1].x, const[13].xxxx, temp[1].xxxx, const[1].xxxx; 144: ADD temp[1].x, temp[1].xxxx, const[10].xxxx; 145: RCP temp[4].x, const[9].yyyy; 146: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 147: MOV temp[2].y, temp[1].xxxx; 148: TEX temp[1], temp[2].xyyy, 2D[3]; 149: MOV temp[2].xyz, temp[1].xyzx; 150: MUL temp[1].x, temp[1].wwww, temp[3].xxxx; 151: MUL temp[0].x, temp[1].xxxx, temp[0].xxxx; 152: MOV temp[2].w, temp[0].xxxx; 153: MOV output[0], temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].x, input[2].z___, const[10].x___; 1: RCP temp[1].x, const[8].x___; 2: MUL temp[2].x, temp[0].x___, temp[1].x___; 3: FRC temp[3].x, temp[2].x___; 4: FRC temp[15].x, temp[2].x___; 5: ADD temp[2].x, temp[2].x___, -temp[15].x___; 6: ADD temp[2].x, temp[2].x___, const[10].x___; 7: RCP temp[4].x, const[8].y___; 8: MUL temp[2].x, temp[2].x___, temp[4].x___; 9: MOV temp[3].y, temp[2]._x__; 10: TEX temp[2].x, temp[3].xy__, 2D[2]; 11: MAD temp[2].x, const[10].y___, temp[2].x___, const[10].x___; 12: FRC temp[16].x, temp[2].x___; 13: ADD temp[2].x, temp[2].x___, -temp[16].x___; 14: MUL temp[3].x, temp[2].x___, const[10].w___; 15: FRC temp[3].x, temp[3].x___; 16: MUL temp[3].x, const[10].z___, temp[3].x___; 17: ADD temp[5].x, temp[3].x___, -const[11].x___; 18: CMP temp[5].x, -|temp[5].x___|, none.0___, none.1___; 19: CMP temp[4].x, -temp[5].x___, const[11].y___, const[11].x___; 20: KIL -temp[4].xxxx; 21: MUL temp[4].x, temp[2].x___, const[11].z___; 22: FRC temp[17].x, temp[4].x___; 23: ADD temp[4].x, temp[4].x___, -temp[17].x___; 24: MOV_SAT temp[4].x, temp[4].x___; 25: ADD temp[18].x, const[10].x___, -temp[4].x___; 26: CMP temp[4].x, temp[18].x___, none.1___, none.0___; 27: MOV temp[5].x, |input[4].y___|; 28: MUL temp[6].x, input[0].x___, const[10].x___; 29: ADD temp[19].x, temp[6].x___, -temp[5].x___; 30: CMP temp[5].x, temp[19].x___, none.1___, none.0___; 31: ADD temp[6].x, -temp[4].x___, const[11].y___; 32: CMP temp[5].x, -temp[6].x___, const[11].x___, temp[5].x___; 33: CMP temp[5].x, -temp[5].x___, const[11].y___, const[11].x___; 34: KIL -temp[5].xxxx; 35: MUL temp[2].x, const[11].z___, temp[2].x___; 36: FRC temp[2].x, temp[2].x___; 37: MUL temp[2].x, const[11].w___, temp[2].x___; 38: ADD temp[20].x, temp[2].x___, -const[11].y___; 39: CMP temp[2].x, temp[20].x___, none.0___, none.1___; 40: MOV temp[5].y, const[11]._x__; 41: MOV temp[5].x, input[3].z___; 42: ADD temp[5].xy, temp[5].xy__, -input[4].xy__; 43: CMP temp[0].xy, -temp[2].xx__, temp[5].xy__, input[4].xy__; 44: ADD temp[5].xy, input[3].zz__, -input[3].yx__; 45: CMP temp[1].xy, -temp[2].xx__, temp[5].xy__, input[3].xy__; 46: FRC temp[2].x, temp[0].x___; 47: ADD temp[2].x, temp[0].x___, -temp[2].x___; 48: MOV temp[5].x, temp[2].x___; 49: MOV temp[5].y, input[1]._x__; 50: ADD temp[5].xy, temp[5].xy__, const[10].xx__; 51: RCP temp[6].x, const[7].x___; 52: RCP temp[6].y, const[7]._y__; 53: MUL temp[5].xy, temp[5].xy__, temp[6].xy__; 54: TEX temp[10].xy, temp[5].xy__, 2D[1]; 55: MOV temp[5].xy, temp[10].xy__; 56: MUL temp[6].xy, const[10].yy__, temp[5].xy__; 57: ADD temp[6].xy, const[12].xx__, -temp[6].xy__; 58: ADD temp[2].xy, temp[2].xx__, temp[6].xy__; 59: ADD temp[7].x, temp[2].x___, -temp[1].x___; 60: CMP temp[7].x, temp[7].x___, none.0___, none.1___; 61: MOV temp[7].x, temp[7].x___; 62: ADD temp[8].x, temp[2].y___, -temp[1].x___; 63: CMP temp[8].x, temp[8].x___, none.0___, none.1___; 64: MOV temp[7].y, temp[8]._x__; 65: ADD temp[8].x, temp[1].y___, -temp[2].x___; 66: CMP temp[8].x, temp[8].x___, none.0___, none.1___; 67: MOV temp[8].x, temp[8].x___; 68: ADD temp[21].x, temp[1].y___, -temp[2].y___; 69: CMP temp[1].x, temp[21].x___, none.0___, none.1___; 70: MOV temp[8].y, temp[1]._x__; 71: MUL temp[1].xy, temp[7].xy__, temp[8].xy__; 72: FRC temp[22].xy, -temp[5].xy__; 73: ADD temp[5].xy, temp[5].xy__, temp[22].xy__; 74: MUL temp[1].xy, temp[1].xy__, temp[5].xy__; 75: ADD temp[7].x, temp[1].x___, temp[1].y___; 76: ADD temp[23].x, temp[7].x___, -const[11].x___; 77: CMP temp[7].x, -|temp[23].x___|, none.0___, none.1___; 78: CMP temp[5].x, -temp[7].x___, const[11].y___, const[11].x___; 79: KIL -temp[5].xxxx; 80: ADD temp[7].x, -temp[4].x___, const[11].y___; 81: CMP temp[5].x, -temp[7].x___, const[11].x___, const[11].y___; 82: ADD temp[5].x, temp[2].x___, temp[5].x___; 83: MOV temp[5].y, input[1]._x__; 84: MOV temp[7].x, -temp[0].y___; 85: MOV temp[7].y, -temp[6]._x__; 86: ADD temp[8].x, -temp[4].x___, const[11].y___; 87: MOV temp[9].x, -temp[6].x___; 88: MOV temp[9].y, temp[0]._y__; 89: CMP temp[7].xy, -temp[8].xx__, temp[9].xy__, temp[7].xy__; 90: ADD temp[9].x, -temp[4].x___, const[11].y___; 91: CMP temp[8].x, -temp[9].x___, const[11].x___, const[11].y___; 92: ADD temp[2].x, temp[2].y___, temp[8].x___; 93: MOV temp[2].y, input[1]._x__; 94: MOV temp[8].x, -temp[0].y___; 95: MOV temp[8].y, -temp[6]._y__; 96: ADD temp[4].x, -temp[4].x___, const[11].y___; 97: MOV temp[6].x, -temp[6].y___; 98: MOV temp[6].y, temp[0]._y__; 99: CMP temp[0].xy, -temp[4].xx__, temp[6].xy__, temp[8].xy__; 100: ADD temp[4].xy, temp[5].xy__, const[10].xx__; 101: RCP temp[5].x, const[7].x___; 102: RCP temp[5].y, const[7]._y__; 103: MUL temp[4].xy, temp[4].xy__, temp[5].xy__; 104: TEX temp[11].zw, temp[4].xy__, 2D[1]; 105: MOV temp[4].zw, temp[11].__zw; 106: MAD temp[4].xy, const[12].yy__, temp[4].zw__, const[11].yy__; 107: ADD temp[4].xy, temp[4].xy__, temp[7].xy__; 108: RCP temp[5].x, const[6].x___; 109: RCP temp[5].y, const[6]._y__; 110: MUL temp[4].xy, temp[4].xy__, temp[5].xy__; 111: TEX temp[12].w, temp[4].xy__, 2D[0]; 112: MOV temp[4].w, temp[12].___w; 113: MOV temp[4].x, temp[4].w___; 114: ADD temp[2].xy, temp[2].xy__, const[10].xx__; 115: RCP temp[5].x, const[7].x___; 116: RCP temp[5].y, const[7]._y__; 117: MUL temp[2].xy, temp[2].xy__, temp[5].xy__; 118: TEX temp[13].zw, temp[2].xy__, 2D[1]; 119: MOV temp[2].zw, temp[13].__zw; 120: MAD temp[2].xy, const[12].yy__, temp[2].zw__, const[11].yy__; 121: ADD temp[0].xy, temp[2].xy__, temp[0].xy__; 122: RCP temp[2].x, const[6].x___; 123: RCP temp[2].y, const[6]._y__; 124: MUL temp[0].xy, temp[0].xy__, temp[2].xy__; 125: TEX temp[14].w, temp[0].xy__, 2D[0]; 126: MOV temp[0].w, temp[14].___w; 127: MOV temp[4].y, temp[0]._w__; 128: MUL temp[0].xy, temp[4].xy__, temp[1].xy__; 129: MAX temp[0].x, temp[0].x___, temp[0].y___; 130: ADD temp[0].x, temp[0].x___, const[12].w___; 131: MAD temp[0].x, const[12].z___, temp[0].x___, const[10].x___; 132: ADD_SAT temp[0].x, temp[0].x___, const[0].x___; 133: ADD temp[2].x, temp[0].x___, -const[11].x___; 134: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 135: CMP temp[1].x, -temp[2].x___, const[11].y___, const[11].x___; 136: KIL -temp[1].xxxx; 137: ADD temp[1].x, input[2].y___, const[10].x___; 138: RCP temp[2].x, const[9].x___; 139: MUL temp[1].x, temp[1].x___, temp[2].x___; 140: FRC temp[2].x, temp[1].x___; 141: FRC temp[24].x, temp[1].x___; 142: ADD temp[1].x, temp[1].x___, -temp[24].x___; 143: MAD temp[1].x, const[13].x___, temp[1].x___, const[1].x___; 144: ADD temp[1].x, temp[1].x___, const[10].x___; 145: RCP temp[4].x, const[9].y___; 146: MUL temp[1].x, temp[1].x___, temp[4].x___; 147: MOV temp[2].y, temp[1]._x__; 148: TEX temp[1], temp[2].xy__, 2D[3]; 149: MOV temp[2].xyz, temp[1].xyz_; 150: MUL temp[1].x, temp[1].w___, temp[3].x___; 151: MUL temp[0].x, temp[1].x___, temp[0].x___; 152: MOV temp[2].w, temp[0].___x; 153: MOV output[0], temp[2]; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: ADD temp[0].x, input[2].z___, const[10].x___; 1: RCP temp[1].x, const[8].x___; 2: MUL temp[2].x, temp[0].x___, temp[1].x___; 3: FRC temp[3].x, temp[2].x___; 4: FRC temp[15].x, temp[2].x___; 5: ADD temp[2].x, temp[2].x___, -temp[15].x___; 6: ADD temp[2].x, temp[2].x___, const[10].x___; 7: RCP temp[4].x, const[8].y___; 8: MUL temp[2].x, temp[2].x___, temp[4].x___; 9: MOV temp[3].y, temp[2]._x__; 10: TEX temp[2].x, temp[3].xy__, 2D[2]; 11: MAD temp[2].x, const[10].y___, temp[2].x___, const[10].x___; 12: FRC temp[16].x, temp[2].x___; 13: ADD temp[2].x, temp[2].x___, -temp[16].x___; 14: MUL temp[3].x, temp[2].x___, const[10].w___; 15: FRC temp[3].x, temp[3].x___; 16: MUL temp[3].x, const[10].z___, temp[3].x___; 17: ADD temp[5].x, temp[3].x___, -const[11].x___; 18: CMP temp[5].x, -|temp[5].x___|, none.0___, none.1___; 19: CMP temp[4].x, -temp[5].x___, const[11].y___, const[11].x___; 20: KIL -temp[4].xxxx; 21: MUL temp[4].x, temp[2].x___, const[11].z___; 22: FRC temp[17].x, temp[4].x___; 23: ADD temp[4].x, temp[4].x___, -temp[17].x___; 24: MOV_SAT temp[4].x, temp[4].x___; 25: ADD temp[18].x, const[10].x___, -temp[4].x___; 26: CMP temp[4].x, temp[18].x___, none.1___, none.0___; 27: MOV temp[5].x, |input[4].y___|; 28: MUL temp[6].x, input[0].x___, const[10].x___; 29: ADD temp[19].x, temp[6].x___, -temp[5].x___; 30: CMP temp[5].x, temp[19].x___, none.1___, none.0___; 31: ADD temp[6].x, -temp[4].x___, const[11].y___; 32: CMP temp[5].x, -temp[6].x___, const[11].x___, temp[5].x___; 33: CMP temp[5].x, -temp[5].x___, const[11].y___, const[11].x___; 34: KIL -temp[5].xxxx; 35: MUL temp[2].x, const[11].z___, temp[2].x___; 36: FRC temp[2].x, temp[2].x___; 37: MUL temp[2].x, const[11].w___, temp[2].x___; 38: ADD temp[20].x, temp[2].x___, -const[11].y___; 39: CMP temp[2].x, temp[20].x___, none.0___, none.1___; 40: MOV temp[5].y, const[11]._x__; 41: MOV temp[5].x, input[3].z___; 42: ADD temp[5].xy, temp[5].xy__, -input[4].xy__; 43: CMP temp[0].xy, -temp[2].xx__, temp[5].xy__, input[4].xy__; 44: ADD temp[5].xy, input[3].zz__, -input[3].yx__; 45: CMP temp[1].xy, -temp[2].xx__, temp[5].xy__, input[3].xy__; 46: FRC temp[2].x, temp[0].x___; 47: ADD temp[2].x, temp[0].x___, -temp[2].x___; 48: MOV temp[5].x, temp[2].x___; 49: MOV temp[5].y, input[1]._x__; 50: ADD temp[5].xy, temp[5].xy__, const[10].xx__; 51: RCP temp[6].x, const[7].x___; 52: RCP temp[6].y, const[7]._y__; 53: MUL temp[5].xy, temp[5].xy__, temp[6].xy__; 54: TEX temp[10].xy, temp[5].xy__, 2D[1]; 55: MOV temp[5].xy, temp[10].xy__; 56: MUL temp[6].xy, const[10].yy__, temp[5].xy__; 57: ADD temp[6].xy, const[12].xx__, -temp[6].xy__; 58: ADD temp[2].xy, temp[2].xx__, temp[6].xy__; 59: ADD temp[7].x, temp[2].x___, -temp[1].x___; 60: CMP temp[7].x, temp[7].x___, none.0___, none.1___; 61: MOV temp[7].x, temp[7].x___; 62: ADD temp[8].x, temp[2].y___, -temp[1].x___; 63: CMP temp[8].x, temp[8].x___, none.0___, none.1___; 64: MOV temp[7].y, temp[8]._x__; 65: ADD temp[8].x, temp[1].y___, -temp[2].x___; 66: CMP temp[8].x, temp[8].x___, none.0___, none.1___; 67: MOV temp[8].x, temp[8].x___; 68: ADD temp[21].x, temp[1].y___, -temp[2].y___; 69: CMP temp[1].x, temp[21].x___, none.0___, none.1___; 70: MOV temp[8].y, temp[1]._x__; 71: MUL temp[1].xy, temp[7].xy__, temp[8].xy__; 72: FRC temp[22].xy, -temp[5].xy__; 73: ADD temp[5].xy, temp[5].xy__, temp[22].xy__; 74: MUL temp[1].xy, temp[1].xy__, temp[5].xy__; 75: ADD temp[7].x, temp[1].x___, temp[1].y___; 76: ADD temp[23].x, temp[7].x___, -const[11].x___; 77: CMP temp[7].x, -|temp[23].x___|, none.0___, none.1___; 78: CMP temp[5].x, -temp[7].x___, const[11].y___, const[11].x___; 79: KIL -temp[5].xxxx; 80: ADD temp[7].x, -temp[4].x___, const[11].y___; 81: CMP temp[5].x, -temp[7].x___, const[11].x___, const[11].y___; 82: ADD temp[5].x, temp[2].x___, temp[5].x___; 83: MOV temp[5].y, input[1]._x__; 84: MOV temp[7].x, -temp[0].y___; 85: MOV temp[7].y, -temp[6]._x__; 86: ADD temp[8].x, -temp[4].x___, const[11].y___; 87: MOV temp[9].x, -temp[6].x___; 88: MOV temp[9].y, temp[0]._y__; 89: CMP temp[7].xy, -temp[8].xx__, temp[9].xy__, temp[7].xy__; 90: ADD temp[9].x, -temp[4].x___, const[11].y___; 91: CMP temp[8].x, -temp[9].x___, const[11].x___, const[11].y___; 92: ADD temp[2].x, temp[2].y___, temp[8].x___; 93: MOV temp[2].y, input[1]._x__; 94: MOV temp[8].x, -temp[0].y___; 95: MOV temp[8].y, -temp[6]._y__; 96: ADD temp[4].x, -temp[4].x___, const[11].y___; 97: MOV temp[6].x, -temp[6].y___; 98: MOV temp[6].y, temp[0]._y__; 99: CMP temp[0].xy, -temp[4].xx__, temp[6].xy__, temp[8].xy__; 100: ADD temp[4].xy, temp[5].xy__, const[10].xx__; 101: RCP temp[5].x, const[7].x___; 102: RCP temp[5].y, const[7]._y__; 103: MUL temp[4].xy, temp[4].xy__, temp[5].xy__; 104: TEX temp[11].zw, temp[4].xy__, 2D[1]; 105: MOV temp[4].zw, temp[11].__zw; 106: MAD temp[4].xy, const[12].yy__, temp[4].zw__, const[11].yy__; 107: ADD temp[4].xy, temp[4].xy__, temp[7].xy__; 108: RCP temp[5].x, const[6].x___; 109: RCP temp[5].y, const[6]._y__; 110: MUL temp[4].xy, temp[4].xy__, temp[5].xy__; 111: TEX temp[12].w, temp[4].xy__, 2D[0]; 112: MOV temp[4].w, temp[12].___w; 113: MOV temp[4].x, temp[4].w___; 114: ADD temp[2].xy, temp[2].xy__, const[10].xx__; 115: RCP temp[5].x, const[7].x___; 116: RCP temp[5].y, const[7]._y__; 117: MUL temp[2].xy, temp[2].xy__, temp[5].xy__; 118: TEX temp[13].zw, temp[2].xy__, 2D[1]; 119: MOV temp[2].zw, temp[13].__zw; 120: MAD temp[2].xy, const[12].yy__, temp[2].zw__, const[11].yy__; 121: ADD temp[0].xy, temp[2].xy__, temp[0].xy__; 122: RCP temp[2].x, const[6].x___; 123: RCP temp[2].y, const[6]._y__; 124: MUL temp[0].xy, temp[0].xy__, temp[2].xy__; 125: TEX temp[14].w, temp[0].xy__, 2D[0]; 126: MOV temp[0].w, temp[14].___w; 127: MOV temp[4].y, temp[0]._w__; 128: MUL temp[0].xy, temp[4].xy__, temp[1].xy__; 129: MAX temp[0].x, temp[0].x___, temp[0].y___; 130: ADD temp[0].x, temp[0].x___, const[12].w___; 131: MAD temp[0].x, const[12].z___, temp[0].x___, const[10].x___; 132: ADD_SAT temp[0].x, temp[0].x___, const[0].x___; 133: ADD temp[2].x, temp[0].x___, -const[11].x___; 134: CMP temp[2].x, -|temp[2].x___|, none.0___, none.1___; 135: CMP temp[1].x, -temp[2].x___, const[11].y___, const[11].x___; 136: KIL -temp[1].xxxx; 137: ADD temp[1].x, input[2].y___, const[10].x___; 138: RCP temp[2].x, const[9].x___; 139: MUL temp[1].x, temp[1].x___, temp[2].x___; 140: FRC temp[2].x, temp[1].x___; 141: FRC temp[24].x, temp[1].x___; 142: ADD temp[1].x, temp[1].x___, -temp[24].x___; 143: MAD temp[1].x, const[13].x___, temp[1].x___, const[1].x___; 144: ADD temp[1].x, temp[1].x___, const[10].x___; 145: RCP temp[4].x, const[9].y___; 146: MUL temp[1].x, temp[1].x___, temp[4].x___; 147: MOV temp[2].y, temp[1]._x__; 148: TEX temp[1], temp[2].xy__, 2D[3]; 149: MOV temp[2].xyz, temp[1].xyz_; 150: MUL temp[1].x, temp[1].w___, temp[3].x___; 151: MUL temp[0].x, temp[1].x___, temp[0].x___; 152: MOV temp[2].w, temp[0].___x; 153: MOV output[0], temp[2]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[25].x, input[2].z___, const[10].x___; 1: RCP temp[26].x, const[8].x___; 2: MUL temp[27].x, temp[25].x___, temp[26].x___; 3: FRC temp[28].x, temp[27].x___; 4: FRC temp[29].x, temp[27].x___; 5: ADD temp[30].x, temp[27].x___, -temp[29].x___; 6: ADD temp[31].x, temp[30].x___, const[10].x___; 7: RCP temp[32].x, const[8].y___; 8: MUL temp[33].x, temp[31].x___, temp[32].x___; 9: MOV temp[28].y, temp[33]._x__; 10: TEX temp[34].x, temp[28].xy__, 2D[2]; 11: MAD temp[35].x, const[10].y___, temp[34].x___, const[10].x___; 12: FRC temp[36].x, temp[35].x___; 13: ADD temp[37].x, temp[35].x___, -temp[36].x___; 14: MUL temp[38].x, temp[37].x___, const[10].w___; 15: FRC temp[39].x, temp[38].x___; 16: MUL temp[40].x, const[10].z___, temp[39].x___; 17: ADD temp[41].x, temp[40].x___, -const[11].x___; 18: CMP temp[42].x, -|temp[41].x___|, none.0___, none.1___; 19: CMP temp[43].x, -temp[42].x___, const[11].y___, const[11].x___; 20: KIL -temp[43].xxxx; 21: MUL temp[44].x, temp[37].x___, const[11].z___; 22: FRC temp[45].x, temp[44].x___; 23: ADD temp[46].x, temp[44].x___, -temp[45].x___; 24: MOV_SAT temp[47].x, temp[46].x___; 25: ADD temp[48].x, const[10].x___, -temp[47].x___; 26: CMP temp[49].x, temp[48].x___, none.1___, none.0___; 27: MOV temp[50].x, |input[4].y___|; 28: MUL temp[51].x, input[0].x___, const[10].x___; 29: ADD temp[52].x, temp[51].x___, -temp[50].x___; 30: CMP temp[53].x, temp[52].x___, none.1___, none.0___; 31: ADD temp[54].x, -temp[49].x___, const[11].y___; 32: CMP temp[55].x, -temp[54].x___, const[11].x___, temp[53].x___; 33: CMP temp[56].x, -temp[55].x___, const[11].y___, const[11].x___; 34: KIL -temp[56].xxxx; 35: MUL temp[57].x, const[11].z___, temp[37].x___; 36: FRC temp[58].x, temp[57].x___; 37: MUL temp[59].x, const[11].w___, temp[58].x___; 38: ADD temp[60].x, temp[59].x___, -const[11].y___; 39: CMP temp[61].x, temp[60].x___, none.0___, none.1___; 40: MOV temp[62].y, const[11]._x__; 41: MOV temp[62].x, input[3].z___; 42: ADD temp[63].xy, temp[62].xy__, -input[4].xy__; 43: CMP temp[64].xy, -temp[61].xx__, temp[63].xy__, input[4].xy__; 44: ADD temp[65].xy, input[3].zz__, -input[3].yx__; 45: CMP temp[66].xy, -temp[61].xx__, temp[65].xy__, input[3].xy__; 46: FRC temp[67].x, temp[64].x___; 47: ADD temp[68].x, temp[64].x___, -temp[67].x___; 48: MOV temp[69].x, temp[68].x___; 49: MOV temp[69].y, input[1]._x__; 50: ADD temp[70].xy, temp[69].xy__, const[10].xx__; 51: RCP temp[71].x, const[7].x___; 52: RCP temp[71].y, const[7]._y__; 53: MUL temp[72].xy, temp[70].xy__, temp[71].xy__; 54: TEX temp[73].xy, temp[72].xy__, 2D[1]; 55: MOV temp[74].xy, temp[73].xy__; 56: MUL temp[75].xy, const[10].yy__, temp[74].xy__; 57: ADD temp[76].xy, const[12].xx__, -temp[75].xy__; 58: ADD temp[77].xy, temp[68].xx__, temp[76].xy__; 59: ADD temp[78].x, temp[77].x___, -temp[66].x___; 60: CMP temp[79].x, temp[78].x___, none.0___, none.1___; 61: MOV temp[80].x, temp[79].x___; 62: ADD temp[81].x, temp[77].y___, -temp[66].x___; 63: CMP temp[82].x, temp[81].x___, none.0___, none.1___; 64: MOV temp[80].y, temp[82]._x__; 65: ADD temp[83].x, temp[66].y___, -temp[77].x___; 66: CMP temp[84].x, temp[83].x___, none.0___, none.1___; 67: MOV temp[85].x, temp[84].x___; 68: ADD temp[86].x, temp[66].y___, -temp[77].y___; 69: CMP temp[87].x, temp[86].x___, none.0___, none.1___; 70: MOV temp[85].y, temp[87]._x__; 71: MUL temp[88].xy, temp[80].xy__, temp[85].xy__; 72: FRC temp[89].xy, -temp[74].xy__; 73: ADD temp[90].xy, temp[74].xy__, temp[89].xy__; 74: MUL temp[91].xy, temp[88].xy__, temp[90].xy__; 75: ADD temp[92].x, temp[91].x___, temp[91].y___; 76: ADD temp[93].x, temp[92].x___, -const[11].x___; 77: CMP temp[94].x, -|temp[93].x___|, none.0___, none.1___; 78: CMP temp[95].x, -temp[94].x___, const[11].y___, const[11].x___; 79: KIL -temp[95].xxxx; 80: ADD temp[96].x, -temp[49].x___, const[11].y___; 81: CMP temp[97].x, -temp[96].x___, const[11].x___, const[11].y___; 82: ADD temp[98].x, temp[77].x___, temp[97].x___; 83: MOV temp[98].y, input[1]._x__; 84: MOV temp[99].x, -temp[64].y___; 85: MOV temp[99].y, -temp[76]._x__; 86: ADD temp[100].x, -temp[49].x___, const[11].y___; 87: MOV temp[101].x, -temp[76].x___; 88: MOV temp[101].y, temp[64]._y__; 89: CMP temp[102].xy, -temp[100].xx__, temp[101].xy__, temp[99].xy__; 90: ADD temp[103].x, -temp[49].x___, const[11].y___; 91: CMP temp[104].x, -temp[103].x___, const[11].x___, const[11].y___; 92: ADD temp[105].x, temp[77].y___, temp[104].x___; 93: MOV temp[105].y, input[1]._x__; 94: MOV temp[106].x, -temp[64].y___; 95: MOV temp[106].y, -temp[76]._y__; 96: ADD temp[107].x, -temp[49].x___, const[11].y___; 97: MOV temp[108].x, -temp[76].y___; 98: MOV temp[108].y, temp[64]._y__; 99: CMP temp[109].xy, -temp[107].xx__, temp[108].xy__, temp[106].xy__; 100: ADD temp[110].xy, temp[98].xy__, const[10].xx__; 101: RCP temp[111].x, const[7].x___; 102: RCP temp[111].y, const[7]._y__; 103: MUL temp[112].xy, temp[110].xy__, temp[111].xy__; 104: TEX temp[113].zw, temp[112].xy__, 2D[1]; 105: MOV temp[114].zw, temp[113].__zw; 106: MAD temp[115].xy, const[12].yy__, temp[114].zw__, const[11].yy__; 107: ADD temp[116].xy, temp[115].xy__, temp[102].xy__; 108: RCP temp[117].x, const[6].x___; 109: RCP temp[117].y, const[6]._y__; 110: MUL temp[118].xy, temp[116].xy__, temp[117].xy__; 111: TEX temp[119].w, temp[118].xy__, 2D[0]; 112: MOV temp[120].w, temp[119].___w; 113: MOV temp[121].x, temp[120].w___; 114: ADD temp[122].xy, temp[105].xy__, const[10].xx__; 115: RCP temp[123].x, const[7].x___; 116: RCP temp[123].y, const[7]._y__; 117: MUL temp[124].xy, temp[122].xy__, temp[123].xy__; 118: TEX temp[125].zw, temp[124].xy__, 2D[1]; 119: MOV temp[126].zw, temp[125].__zw; 120: MAD temp[127].xy, const[12].yy__, temp[126].zw__, const[11].yy__; 121: ADD temp[128].xy, temp[127].xy__, temp[109].xy__; 122: RCP temp[129].x, const[6].x___; 123: RCP temp[129].y, const[6]._y__; 124: MUL temp[130].xy, temp[128].xy__, temp[129].xy__; 125: TEX temp[131].w, temp[130].xy__, 2D[0]; 126: MOV temp[132].w, temp[131].___w; 127: MOV temp[121].y, temp[132]._w__; 128: MUL temp[133].xy, temp[121].xy__, temp[91].xy__; 129: MAX temp[134].x, temp[133].x___, temp[133].y___; 130: ADD temp[135].x, temp[134].x___, const[12].w___; 131: MAD temp[136].x, const[12].z___, temp[135].x___, const[10].x___; 132: ADD_SAT temp[137].x, temp[136].x___, const[0].x___; 133: ADD temp[138].x, temp[137].x___, -const[11].x___; 134: CMP temp[139].x, -|temp[138].x___|, none.0___, none.1___; 135: CMP temp[140].x, -temp[139].x___, const[11].y___, const[11].x___; 136: KIL -temp[140].xxxx; 137: ADD temp[141].x, input[2].y___, const[10].x___; 138: RCP temp[142].x, const[9].x___; 139: MUL temp[143].x, temp[141].x___, temp[142].x___; 140: FRC temp[144].x, temp[143].x___; 141: FRC temp[145].x, temp[143].x___; 142: ADD temp[146].x, temp[143].x___, -temp[145].x___; 143: MAD temp[147].x, const[13].x___, temp[146].x___, const[1].x___; 144: ADD temp[148].x, temp[147].x___, const[10].x___; 145: RCP temp[149].x, const[9].y___; 146: MUL temp[150].x, temp[148].x___, temp[149].x___; 147: MOV temp[144].y, temp[150]._x__; 148: TEX temp[151], temp[144].xy__, 2D[3]; 149: MOV temp[152].xyz, temp[151].xyz_; 150: MUL temp[153].x, temp[151].w___, temp[40].x___; 151: MUL temp[154].x, temp[153].x___, temp[137].x___; 152: MOV temp[152].w, temp[154].___x; 153: MOV output[0], temp[152]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: ADD temp[25].x, input[2].z___, none.H___; 1: RCP temp[26].x, const[8].x___; 2: MUL temp[27].x, temp[25].x___, temp[26].x___; 3: FRC temp[28].x, temp[27].x___; 4: FRC temp[29].x, temp[27].x___; 5: ADD temp[31].x, (temp[27] - temp[29]).x___, none.H___; 6: RCP temp[32].x, const[8].y___; 7: MUL temp[33].x, temp[31].x___, temp[32].x___; 8: MOV temp[28].y, temp[33]._x__; 9: TEX temp[34].x, temp[28].xy__, 2D[2]; 10: MAD temp[35].x, const[10].y___, temp[34].x___, none.H___; 11: FRC temp[36].x, temp[35].x___; 12: MUL temp[38].x, (temp[35] - temp[36]).x___, const[10].w___; 13: FRC temp[39].x, temp[38].x___; 14: MUL temp[40].x, const[10].z___, temp[39].x___; 15: CMP temp[42].x, -|temp[40].x___|, none.0___, none.1___; 16: CMP temp[43].x, -temp[42].x___, none.1___, none.0___; 17: KIL -temp[43].xxxx; 18: MUL temp[44].x, (temp[35] - temp[36]).x___, const[11].z___; 19: FRC temp[45].x, temp[44].x___; 20: MOV_SAT temp[47].x, (temp[44] - temp[45]).x___; 21: ADD temp[48].x, none.H___, -temp[47].x___; 22: CMP temp[49].x, temp[48].x___, none.1___, none.0___; 23: MUL temp[51].x, input[0].x___, none.H___; 24: ADD temp[52].x, temp[51].x___, -|input[4].y___|; 25: CMP temp[53].x, temp[52].x___, none.1___, none.0___; 26: ADD temp[54].x, -temp[49].x___, none.1___; 27: CMP temp[55].x, -temp[54].x___, none.0___, temp[53].x___; 28: CMP temp[56].x, -temp[55].x___, none.1___, none.0___; 29: KIL -temp[56].xxxx; 30: MUL temp[57].x, const[11].z___, (temp[35] - temp[36]).x___; 31: FRC temp[59].x * 2, temp[57].x___; 32: ADD temp[60].x, temp[59].x___, -none.1___; 33: CMP temp[61].x, temp[60].x___, none.0___, none.1___; 34: MOV temp[62].y, none._0__; 35: MOV temp[62].x, input[3].z___; 36: CMP temp[64].xy, -temp[61].xx__, (temp[62] - input[4]).xy__, input[4].xy__; 37: ADD temp[65].xy, input[3].zz__, -input[3].yx__; 38: CMP temp[66].xy, -temp[61].xx__, temp[65].xy__, input[3].xy__; 39: FRC temp[67].x, temp[64].x___; 40: MOV temp[69].x, (temp[64] - temp[67]).x___; 41: MOV temp[69].y, input[1]._x__; 42: ADD temp[70].xy, temp[69].xy__, none.HH__; 43: RCP temp[71].x, const[7].x___; 44: RCP temp[71].y, const[7]._y__; 45: MUL temp[72].xy, temp[70].xy__, temp[71].xy__; 46: TEX temp[73].xy, temp[72].xy__, 2D[1]; 47: MUL temp[75].xy, const[10].yy__, temp[73].xy__; 48: ADD temp[76].xy, const[12].xx__, -temp[75].xy__; 49: ADD temp[77].xy, (temp[64] - temp[67]).xx__, temp[76].xy__; 50: CMP temp[79].x, (temp[77] - temp[66]).x___, none.0___, none.1___; 51: MOV temp[80].x, temp[79].x___; 52: ADD temp[81].x, temp[77].y___, -temp[66].x___; 53: CMP temp[82].x, temp[81].x___, none.0___, none.1___; 54: MOV temp[80].y, temp[82]._x__; 55: ADD temp[83].x, temp[66].y___, -temp[77].x___; 56: CMP temp[84].x, temp[83].x___, none.0___, none.1___; 57: MOV temp[85].x, temp[84].x___; 58: CMP temp[87].x, (temp[66] - temp[77]).y___, none.0___, none.1___; 59: MOV temp[85].y, temp[87]._x__; 60: MUL temp[88].xy, temp[80].xy__, temp[85].xy__; 61: FRC temp[89].xy, -temp[73].xy__; 62: MUL temp[91].xy, temp[88].xy__, (temp[89] + temp[73]).xy__; 63: ADD temp[92].x, temp[91].x___, temp[91].y___; 64: CMP temp[94].x, -|temp[92].x___|, none.0___, none.1___; 65: CMP temp[95].x, -temp[94].x___, none.1___, none.0___; 66: KIL -temp[95].xxxx; 67: ADD temp[96].x, -temp[49].x___, none.1___; 68: CMP temp[97].x, -temp[96].x___, none.0___, none.1___; 69: ADD temp[98].x, temp[77].x___, temp[97].x___; 70: MOV temp[98].y, input[1]._x__; 71: MOV temp[99].x, -temp[64].y___; 72: MOV temp[99].y, -temp[76]._x__; 73: ADD temp[100].x, -temp[49].x___, none.1___; 74: MOV temp[101].x, -temp[76].x___; 75: MOV temp[101].y, temp[64]._y__; 76: CMP temp[102].xy, -temp[100].xx__, temp[101].xy__, temp[99].xy__; 77: ADD temp[103].x, -temp[49].x___, none.1___; 78: CMP temp[104].x, -temp[103].x___, none.0___, none.1___; 79: ADD temp[105].x, temp[77].y___, temp[104].x___; 80: MOV temp[105].y, input[1]._x__; 81: MOV temp[106].x, -temp[64].y___; 82: MOV temp[106].y, -temp[76]._y__; 83: ADD temp[107].x, -temp[49].x___, none.1___; 84: MOV temp[108].x, -temp[76].y___; 85: MOV temp[108].y, temp[64]._y__; 86: CMP temp[109].xy, -temp[107].xx__, temp[108].xy__, temp[106].xy__; 87: ADD temp[110].xy, temp[98].xy__, none.HH__; 88: RCP temp[111].x, const[7].x___; 89: RCP temp[111].y, const[7]._y__; 90: MUL temp[112].xy, temp[110].xy__, temp[111].xy__; 91: TEX temp[113].zw, temp[112].xy__, 2D[1]; 92: MAD temp[115].xy, const[12].yy__, temp[113].zw__, none.11__; 93: RCP temp[117].x, const[6].x___; 94: RCP temp[117].y, const[6]._y__; 95: MUL temp[118].xy, (temp[102] + temp[115]).xy__, temp[117].xy__; 96: TEX temp[119].w, temp[118].xy__, 2D[0]; 97: MOV temp[121].x, temp[119].w___; 98: ADD temp[122].xy, temp[105].xy__, none.HH__; 99: RCP temp[123].x, const[7].x___; 100: RCP temp[123].y, const[7]._y__; 101: MUL temp[124].xy, temp[122].xy__, temp[123].xy__; 102: TEX temp[125].zw, temp[124].xy__, 2D[1]; 103: MAD temp[127].xy, const[12].yy__, temp[125].zw__, none.11__; 104: RCP temp[129].x, const[6].x___; 105: RCP temp[129].y, const[6]._y__; 106: MUL temp[130].xy, (temp[109] + temp[127]).xy__, temp[129].xy__; 107: TEX temp[131].w, temp[130].xy__, 2D[0]; 108: MOV temp[121].y, temp[131]._w__; 109: MUL temp[133].xy, temp[121].xy__, temp[91].xy__; 110: MAX temp[134].x, temp[133].x___, temp[133].y___; 111: ADD temp[135].x, temp[134].x___, none.-H___; 112: MAD temp[136].x, const[12].z___, temp[135].x___, none.H___; 113: ADD_SAT temp[137].x, temp[136].x___, const[0].x___; 114: CMP temp[139].x, -|temp[137].x___|, none.0___, none.1___; 115: CMP temp[140].x, -temp[139].x___, none.1___, none.0___; 116: KIL -temp[140].xxxx; 117: ADD temp[141].x, input[2].y___, none.H___; 118: RCP temp[142].x, const[9].x___; 119: MUL temp[143].x, temp[141].x___, temp[142].x___; 120: FRC temp[144].x, temp[143].x___; 121: FRC temp[145].x, temp[143].x___; 122: ADD temp[146].x, temp[143].x___, -temp[145].x___; 123: MAD temp[147].x, const[13].x___, temp[146].x___, const[1].x___; 124: ADD temp[148].x, temp[147].x___, none.H___; 125: RCP temp[149].x, const[9].y___; 126: MUL temp[150].x, temp[148].x___, temp[149].x___; 127: MOV temp[144].y, temp[150]._x__; 128: TEX temp[151], temp[144].xy__, 2D[3]; 129: MOV temp[152].xyz, temp[151].xyz_; 130: MUL temp[153].x, temp[151].w___, temp[40].x___; 131: MUL temp[154].x, temp[153].x___, temp[137].x___; 132: MOV temp[152].w, temp[154].___x; 133: MOV output[0], temp[152]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: ADD temp[25].x, input[2].z___, none.H___; 1: RCP temp[26].x, const[8].x___; 2: MUL temp[27].x, temp[25].x___, temp[26].x___; 3: FRC temp[28].x, temp[27].x___; 4: FRC temp[29].x, temp[27].x___; 5: ADD temp[31].x, (temp[27] - temp[29]).x___, none.H___; 6: RCP temp[32].x, const[8].y___; 7: MUL temp[33].x, temp[31].x___, temp[32].x___; 8: MOV temp[28].y, temp[33]._x__; 9: TEX temp[34].x, temp[28].xy__, 2D[2]; 10: MAD temp[35].x, const[10].y___, temp[34].x___, none.H___; 11: FRC temp[36].x, temp[35].x___; 12: MUL temp[38].x, (temp[35] - temp[36]).x___, const[10].w___; 13: FRC temp[39].x, temp[38].x___; 14: MUL temp[40].x, const[10].z___, temp[39].x___; 15: CMP temp[42].x, -|temp[40].x___|, none.0___, none.1___; 16: CMP temp[43].x, -temp[42].x___, none.1___, none.0___; 17: MOV temp[0], -temp[43].xxxx; 18: KIL temp[0]; 19: MUL temp[44].x, (temp[35] - temp[36]).x___, const[11].z___; 20: FRC temp[45].x, temp[44].x___; 21: MOV_SAT temp[47].x, (temp[44] - temp[45]).x___; 22: ADD temp[48].x, none.H___, -temp[47].x___; 23: CMP temp[49].x, temp[48].x___, none.1___, none.0___; 24: MUL temp[51].x, input[0].x___, none.H___; 25: ADD temp[52].x, temp[51].x___, -|input[4].y___|; 26: CMP temp[53].x, temp[52].x___, none.1___, none.0___; 27: ADD temp[54].x, -temp[49].x___, none.1___; 28: CMP temp[55].x, -temp[54].x___, none.0___, temp[53].x___; 29: CMP temp[56].x, -temp[55].x___, none.1___, none.0___; 30: MOV temp[1], -temp[56].xxxx; 31: KIL temp[1]; 32: MUL temp[57].x, const[11].z___, (temp[35] - temp[36]).x___; 33: FRC temp[59].x * 2, temp[57].x___; 34: ADD temp[60].x, temp[59].x___, -none.1___; 35: CMP temp[61].x, temp[60].x___, none.0___, none.1___; 36: MOV temp[62].y, none._0__; 37: MOV temp[62].x, input[3].z___; 38: CMP temp[64].xy, -temp[61].xx__, (temp[62] - input[4]).xy__, input[4].xy__; 39: MOV temp[2].y, -input[3]._x__; 40: MOV temp[2].x, -input[3].y___; 41: ADD temp[65].xy, input[3].zz__, temp[2].xy__; 42: CMP temp[66].xy, -temp[61].xx__, temp[65].xy__, input[3].xy__; 43: FRC temp[67].x, temp[64].x___; 44: MOV temp[69].x, (temp[64] - temp[67]).x___; 45: MOV temp[69].y, input[1]._x__; 46: ADD temp[70].xy, temp[69].xy__, none.HH__; 47: RCP temp[71].x, const[7].x___; 48: RCP temp[71].y, const[7]._y__; 49: MUL temp[72].xy, temp[70].xy__, temp[71].xy__; 50: TEX temp[73].xy, temp[72].xy__, 2D[1]; 51: MUL temp[75].xy, const[10].yy__, temp[73].xy__; 52: ADD temp[76].xy, const[12].xx__, -temp[75].xy__; 53: ADD temp[77].xy, (temp[64] - temp[67]).xx__, temp[76].xy__; 54: CMP temp[79].x, (temp[77] - temp[66]).x___, none.0___, none.1___; 55: MOV temp[80].x, temp[79].x___; 56: ADD temp[81].x, temp[77].y___, -temp[66].x___; 57: CMP temp[82].x, temp[81].x___, none.0___, none.1___; 58: MOV temp[80].y, temp[82]._x__; 59: ADD temp[83].x, temp[66].y___, -temp[77].x___; 60: CMP temp[84].x, temp[83].x___, none.0___, none.1___; 61: MOV temp[85].x, temp[84].x___; 62: CMP temp[87].x, (temp[66] - temp[77]).y___, none.0___, none.1___; 63: MOV temp[85].y, temp[87]._x__; 64: MUL temp[88].xy, temp[80].xy__, temp[85].xy__; 65: FRC temp[89].xy, -temp[73].xy__; 66: MUL temp[91].xy, temp[88].xy__, (temp[89] + temp[73]).xy__; 67: ADD temp[92].x, temp[91].x___, temp[91].y___; 68: CMP temp[94].x, -|temp[92].x___|, none.0___, none.1___; 69: CMP temp[95].x, -temp[94].x___, none.1___, none.0___; 70: MOV temp[3], -temp[95].xxxx; 71: KIL temp[3]; 72: ADD temp[96].x, -temp[49].x___, none.1___; 73: CMP temp[97].x, -temp[96].x___, none.0___, none.1___; 74: ADD temp[98].x, temp[77].x___, temp[97].x___; 75: MOV temp[98].y, input[1]._x__; 76: MOV temp[99].x, -temp[64].y___; 77: MOV temp[99].y, -temp[76]._x__; 78: ADD temp[100].x, -temp[49].x___, none.1___; 79: MOV temp[101].x, -temp[76].x___; 80: MOV temp[101].y, temp[64]._y__; 81: CMP temp[102].xy, -temp[100].xx__, temp[101].xy__, temp[99].xy__; 82: ADD temp[103].x, -temp[49].x___, none.1___; 83: CMP temp[104].x, -temp[103].x___, none.0___, none.1___; 84: ADD temp[105].x, temp[77].y___, temp[104].x___; 85: MOV temp[105].y, input[1]._x__; 86: MOV temp[106].x, -temp[64].y___; 87: MOV temp[106].y, -temp[76]._y__; 88: ADD temp[107].x, -temp[49].x___, none.1___; 89: MOV temp[108].x, -temp[76].y___; 90: MOV temp[108].y, temp[64]._y__; 91: CMP temp[109].xy, -temp[107].xx__, temp[108].xy__, temp[106].xy__; 92: ADD temp[110].xy, temp[98].xy__, none.HH__; 93: RCP temp[111].x, const[7].x___; 94: RCP temp[111].y, const[7]._y__; 95: MUL temp[112].xy, temp[110].xy__, temp[111].xy__; 96: TEX temp[113].zw, temp[112].xy__, 2D[1]; 97: MOV temp[4].x, temp[113].z___; 98: MOV temp[4].y, temp[113]._w__; 99: MAD temp[115].xy, const[12].yy__, temp[4].xy__, none.11__; 100: RCP temp[117].x, const[6].x___; 101: RCP temp[117].y, const[6]._y__; 102: MUL temp[118].xy, (temp[102] + temp[115]).xy__, temp[117].xy__; 103: TEX temp[119].w, temp[118].xy__, 2D[0]; 104: MOV temp[121].x, temp[119].w___; 105: ADD temp[122].xy, temp[105].xy__, none.HH__; 106: RCP temp[123].x, const[7].x___; 107: RCP temp[123].y, const[7]._y__; 108: MUL temp[124].xy, temp[122].xy__, temp[123].xy__; 109: TEX temp[125].zw, temp[124].xy__, 2D[1]; 110: MOV temp[5].x, temp[125].z___; 111: MOV temp[5].y, temp[125]._w__; 112: MAD temp[127].xy, const[12].yy__, temp[5].xy__, none.11__; 113: RCP temp[129].x, const[6].x___; 114: RCP temp[129].y, const[6]._y__; 115: MUL temp[130].xy, (temp[109] + temp[127]).xy__, temp[129].xy__; 116: TEX temp[131].w, temp[130].xy__, 2D[0]; 117: MOV temp[121].y, temp[131]._w__; 118: MUL temp[133].xy, temp[121].xy__, temp[91].xy__; 119: MAX temp[134].x, temp[133].x___, temp[133].y___; 120: ADD temp[135].x, temp[134].x___, none.-H___; 121: MAD temp[136].x, const[12].z___, temp[135].x___, none.H___; 122: ADD_SAT temp[137].x, temp[136].x___, const[0].x___; 123: CMP temp[139].x, -|temp[137].x___|, none.0___, none.1___; 124: CMP temp[140].x, -temp[139].x___, none.1___, none.0___; 125: MOV temp[6], -temp[140].xxxx; 126: KIL temp[6]; 127: ADD temp[141].x, input[2].y___, none.H___; 128: RCP temp[142].x, const[9].x___; 129: MUL temp[143].x, temp[141].x___, temp[142].x___; 130: FRC temp[144].x, temp[143].x___; 131: FRC temp[145].x, temp[143].x___; 132: ADD temp[146].x, temp[143].x___, -temp[145].x___; 133: MAD temp[147].x, const[13].x___, temp[146].x___, const[1].x___; 134: ADD temp[148].x, temp[147].x___, none.H___; 135: RCP temp[149].x, const[9].y___; 136: MUL temp[150].x, temp[148].x___, temp[149].x___; 137: MOV temp[144].y, temp[150]._x__; 138: TEX temp[151], temp[144].xy__, 2D[3]; 139: MOV temp[152].xyz, temp[151].xyz_; 140: MUL temp[153].x, temp[151].w___, temp[40].x___; 141: MUL temp[154].x, temp[153].x___, temp[137].x___; 142: MOV temp[152].w, temp[154].___x; 143: MOV output[0], temp[152]; CONST[6] = { 0.5000 255.0000 1.0323 0.0312 } CONST[7] = { 0.0000 1.0000 0.0156 2.0000 } CONST[8] = { 128.0000 1020.0000 10.6250 -0.5000 } CONST[9] = { 26.0000 0.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: ADD temp[25].x, input[2].z___, none.H___; 1: RCP temp[26].x, const[4].x___; 2: MUL temp[27].x, temp[25].x___, temp[26].x___; 3: FRC temp[28].x, temp[27].x___; 4: FRC temp[29].x, temp[27].x___; 5: ADD temp[31].x, (temp[27] - temp[29]).x___, none.H___; 6: RCP temp[32].x, const[4].y___; 7: MUL temp[33].x, temp[31].x___, temp[32].x___; 8: MOV temp[28].y, temp[33]._x__; 9: TEX temp[34].x, temp[28].xy__, 2D[2]; 10: MAD temp[35].x, const[6].y___, temp[34].x___, none.H___; 11: FRC temp[36].x, temp[35].x___; 12: MUL temp[38].x, (temp[35] - temp[36]).x___, const[6].w___; 13: FRC temp[39].x, temp[38].x___; 14: MUL temp[40].x, const[6].z___, temp[39].x___; 15: CMP temp[42].x, -|temp[40].x___|, none.0___, none.1___; 16: CMP temp[43].x, -temp[42].x___, none.1___, none.0___; 17: MOV temp[0], -temp[43].xxxx; 18: KIL temp[0]; 19: MUL temp[44].x, (temp[35] - temp[36]).x___, const[7].z___; 20: FRC temp[45].x, temp[44].x___; 21: MOV_SAT temp[47].x, (temp[44] - temp[45]).x___; 22: ADD temp[48].x, none.H___, -temp[47].x___; 23: CMP temp[49].x, temp[48].x___, none.1___, none.0___; 24: MUL temp[51].x, input[0].x___, none.H___; 25: ADD temp[52].x, temp[51].x___, -|input[4].y___|; 26: CMP temp[53].x, temp[52].x___, none.1___, none.0___; 27: ADD temp[54].x, -temp[49].x___, none.1___; 28: CMP temp[55].x, -temp[54].x___, none.0___, temp[53].x___; 29: CMP temp[56].x, -temp[55].x___, none.1___, none.0___; 30: MOV temp[1], -temp[56].xxxx; 31: KIL temp[1]; 32: MUL temp[57].x, const[7].z___, (temp[35] - temp[36]).x___; 33: FRC temp[59].x * 2, temp[57].x___; 34: ADD temp[60].x, temp[59].x___, -none.1___; 35: CMP temp[61].x, temp[60].x___, none.0___, none.1___; 36: MOV temp[62].y, none._0__; 37: MOV temp[62].x, input[3].z___; 38: CMP temp[64].xy, -temp[61].xx__, (temp[62] - input[4]).xy__, input[4].xy__; 39: MOV temp[2].y, -input[3]._x__; 40: MOV temp[2].x, -input[3].y___; 41: ADD temp[65].xy, input[3].zz__, temp[2].xy__; 42: CMP temp[66].xy, -temp[61].xx__, temp[65].xy__, input[3].xy__; 43: FRC temp[67].x, temp[64].x___; 44: MOV temp[69].x, (temp[64] - temp[67]).x___; 45: MOV temp[69].y, input[1]._x__; 46: ADD temp[70].xy, temp[69].xy__, none.HH__; 47: RCP temp[71].x, const[3].x___; 48: RCP temp[71].y, const[3]._y__; 49: MUL temp[72].xy, temp[70].xy__, temp[71].xy__; 50: TEX temp[73].xy, temp[72].xy__, 2D[1]; 51: MUL temp[75].xy, const[6].yy__, temp[73].xy__; 52: ADD temp[76].xy, const[8].xx__, -temp[75].xy__; 53: ADD temp[77].xy, (temp[64] - temp[67]).xx__, temp[76].xy__; 54: CMP temp[79].x, (temp[77] - temp[66]).x___, none.0___, none.1___; 55: MOV temp[80].x, temp[79].x___; 56: ADD temp[81].x, temp[77].y___, -temp[66].x___; 57: CMP temp[82].x, temp[81].x___, none.0___, none.1___; 58: MOV temp[80].y, temp[82]._x__; 59: ADD temp[83].x, temp[66].y___, -temp[77].x___; 60: CMP temp[84].x, temp[83].x___, none.0___, none.1___; 61: MOV temp[85].x, temp[84].x___; 62: CMP temp[87].x, (temp[66] - temp[77]).y___, none.0___, none.1___; 63: MOV temp[85].y, temp[87]._x__; 64: MUL temp[88].xy, temp[80].xy__, temp[85].xy__; 65: FRC temp[89].xy, -temp[73].xy__; 66: MUL temp[91].xy, temp[88].xy__, (temp[89] + temp[73]).xy__; 67: ADD temp[92].x, temp[91].x___, temp[91].y___; 68: CMP temp[94].x, -|temp[92].x___|, none.0___, none.1___; 69: CMP temp[95].x, -temp[94].x___, none.1___, none.0___; 70: MOV temp[3], -temp[95].xxxx; 71: KIL temp[3]; 72: ADD temp[96].x, -temp[49].x___, none.1___; 73: CMP temp[97].x, -temp[96].x___, none.0___, none.1___; 74: ADD temp[98].x, temp[77].x___, temp[97].x___; 75: MOV temp[98].y, input[1]._x__; 76: MOV temp[99].x, -temp[64].y___; 77: MOV temp[99].y, -temp[76]._x__; 78: ADD temp[100].x, -temp[49].x___, none.1___; 79: MOV temp[101].x, -temp[76].x___; 80: MOV temp[101].y, temp[64]._y__; 81: CMP temp[102].xy, -temp[100].xx__, temp[101].xy__, temp[99].xy__; 82: ADD temp[103].x, -temp[49].x___, none.1___; 83: CMP temp[104].x, -temp[103].x___, none.0___, none.1___; 84: ADD temp[105].x, temp[77].y___, temp[104].x___; 85: MOV temp[105].y, input[1]._x__; 86: MOV temp[106].x, -temp[64].y___; 87: MOV temp[106].y, -temp[76]._y__; 88: ADD temp[107].x, -temp[49].x___, none.1___; 89: MOV temp[108].x, -temp[76].y___; 90: MOV temp[108].y, temp[64]._y__; 91: CMP temp[109].xy, -temp[107].xx__, temp[108].xy__, temp[106].xy__; 92: ADD temp[110].xy, temp[98].xy__, none.HH__; 93: RCP temp[111].x, const[3].x___; 94: RCP temp[111].y, const[3]._y__; 95: MUL temp[112].xy, temp[110].xy__, temp[111].xy__; 96: TEX temp[113].zw, temp[112].xy__, 2D[1]; 97: MOV temp[4].x, temp[113].z___; 98: MOV temp[4].y, temp[113]._w__; 99: MAD temp[115].xy, const[8].yy__, temp[4].xy__, none.11__; 100: RCP temp[117].x, const[2].x___; 101: RCP temp[117].y, const[2]._y__; 102: MUL temp[118].xy, (temp[102] + temp[115]).xy__, temp[117].xy__; 103: TEX temp[119].w, temp[118].xy__, 2D[0]; 104: MOV temp[121].x, temp[119].w___; 105: ADD temp[122].xy, temp[105].xy__, none.HH__; 106: RCP temp[123].x, const[3].x___; 107: RCP temp[123].y, const[3]._y__; 108: MUL temp[124].xy, temp[122].xy__, temp[123].xy__; 109: TEX temp[125].zw, temp[124].xy__, 2D[1]; 110: MOV temp[5].x, temp[125].z___; 111: MOV temp[5].y, temp[125]._w__; 112: MAD temp[127].xy, const[8].yy__, temp[5].xy__, none.11__; 113: RCP temp[129].x, const[2].x___; 114: RCP temp[129].y, const[2]._y__; 115: MUL temp[130].xy, (temp[109] + temp[127]).xy__, temp[129].xy__; 116: TEX temp[131].w, temp[130].xy__, 2D[0]; 117: MOV temp[121].y, temp[131]._w__; 118: MUL temp[133].xy, temp[121].xy__, temp[91].xy__; 119: MAX temp[134].x, temp[133].x___, temp[133].y___; 120: ADD temp[135].x, temp[134].x___, none.-H___; 121: MAD temp[136].x, const[8].z___, temp[135].x___, none.H___; 122: ADD_SAT temp[137].x, temp[136].x___, const[0].x___; 123: CMP temp[139].x, -|temp[137].x___|, none.0___, none.1___; 124: CMP temp[140].x, -temp[139].x___, none.1___, none.0___; 125: MOV temp[6], -temp[140].xxxx; 126: KIL temp[6]; 127: ADD temp[141].x, input[2].y___, none.H___; 128: RCP temp[142].x, const[5].x___; 129: MUL temp[143].x, temp[141].x___, temp[142].x___; 130: FRC temp[144].x, temp[143].x___; 131: FRC temp[145].x, temp[143].x___; 132: ADD temp[146].x, temp[143].x___, -temp[145].x___; 133: MAD temp[147].x, const[9].x___, temp[146].x___, const[1].x___; 134: ADD temp[148].x, temp[147].x___, none.H___; 135: RCP temp[149].x, const[5].y___; 136: MUL temp[150].x, temp[148].x___, temp[149].x___; 137: MOV temp[144].y, temp[150]._x__; 138: TEX temp[151], temp[144].xy__, 2D[3]; 139: MOV temp[152].xyz, temp[151].xyz_; 140: MUL temp[153].x, temp[151].w___, temp[40].x___; 141: MUL temp[154].x, temp[153].x___, temp[137].x___; 142: MOV temp[152].w, temp[154].___x; 143: MOV output[0], temp[152]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[2] MAD temp[25].x, src0.z__, src0.111, src0.H__ 1: src0.xyz = const[4] REPL_ALPHA temp[26].x RCP, src0.x 2: src0.xyz = temp[25], src1.xyz = temp[26] MAD temp[27].x, src0.x__, src1.x__, src0.000 3: src0.xyz = temp[27] FRC temp[28].x, src0.x__ 4: src0.xyz = temp[27] FRC temp[29].x, src0.x__ 5: src0.xyz = temp[29], src1.xyz = temp[27], srcp.xyz = (src1 - src0) MAD temp[31].x, srcp.x__, src0.111, src0.H__ 6: src0.xyz = const[4] REPL_ALPHA temp[32].x RCP, src0.y 7: src0.xyz = temp[31], src1.xyz = temp[32] MAD temp[33].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[33] MAD temp[28].y, src0._x_, src0.111, src0.000 9: TEX temp[34].x, temp[28].xy__, 2D[2]; 10: src0.xyz = const[6], src1.xyz = temp[34] MAD temp[35].x, src0.y__, src1.x__, src0.H__ 11: src0.xyz = temp[35] FRC temp[36].x, src0.x__ 12: src0.xyz = temp[36], src0.w = const[6], src1.xyz = temp[35], srcp.xyz = (src1 - src0) MAD temp[38].x, srcp.x__, src0.w__, src0.000 13: src0.xyz = temp[38] FRC temp[39].x, src0.x__ 14: src0.xyz = const[6], src1.xyz = temp[39] MAD temp[40].x, src0.z__, src1.x__, src0.000 15: src0.xyz = temp[40] CMP temp[42].x, src0.1__, src0.0__, -|src0.x__| 16: src0.xyz = temp[42] CMP temp[43].x, src0.0__, src0.1__, -src0.x__ 17: src0.xyz = temp[43] MAD temp[0].xyz, -src0.xxx, src0.111, src0.000 MAD temp[0].w, -src0.x, src0.1, src0.0 18: KIL temp[0]; 19: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[44].x, srcp.x__, src2.z__, src0.000 20: src0.xyz = temp[44] FRC temp[45].x, src0.x__ 21: src0.xyz = temp[45], src1.xyz = temp[44], srcp.xyz = (src1 - src0) MAD_SAT temp[47].x, srcp.x__, src0.111, src0.000 22: src0.xyz = temp[47] MAD temp[48].x, src0.H__, src0.111, -src0.x__ 23: src0.xyz = temp[48] CMP temp[49].x, src0.0__, src0.1__, src0.x__ 24: src0.xyz = input[0] MAD temp[51].x, src0.x__, src0.H__, src0.000 25: src0.xyz = temp[51], src1.xyz = input[4] MAD temp[52].x, src0.x__, |src0.111|, -|src1.y__| 26: src0.xyz = temp[52] CMP temp[53].x, src0.0__, src0.1__, src0.x__ 27: src0.xyz = temp[49] MAD temp[54].x, -src0.x__, src0.111, src0.1__ 28: src0.xyz = temp[53], src1.xyz = temp[54] CMP temp[55].x, src0.x__, src0.0__, -src1.x__ 29: src0.xyz = temp[55] CMP temp[56].x, src0.0__, src0.1__, -src0.x__ 30: src0.xyz = temp[56] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 31: KIL temp[1]; 32: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[57].x, src2.z__, srcp.x__, src0.000 33: src0.xyz = temp[57] FRC temp[59].x * 2, src0.x__ 34: src0.xyz = temp[59] MAD temp[60].x, src0.x__, src0.111, -src0.1__ 35: src0.xyz = temp[60] CMP temp[61].x, src0.1__, src0.0__, src0.x__ 36: MAD temp[62].y, src0._0_, src0.111, src0.000 37: src0.xyz = input[3] MAD temp[62].x, src0.z__, src0.111, src0.000 38: src0.xyz = input[4], src1.xyz = temp[62], src2.xyz = temp[61], srcp.xyz = (src1 - src0) CMP temp[64].xy, src0.xy_, srcp.xy_, -src2.xx_ 39: src0.xyz = input[3] MAD temp[2].y, -src0._x_, src0.111, src0.000 40: src0.xyz = input[3] MAD temp[2].x, -src0.y__, src0.111, src0.000 41: src0.xyz = input[3], src1.xyz = temp[2] MAD temp[65].xy, src0.zz_, src0.111, src1.xy_ 42: src0.xyz = input[3], src1.xyz = temp[65], src2.xyz = temp[61] CMP temp[66].xy, src0.xy_, src1.xy_, -src2.xx_ 43: src0.xyz = temp[64] FRC temp[67].x, src0.x__ 44: src0.xyz = temp[67], src1.xyz = temp[64], srcp.xyz = (src1 - src0) MAD temp[69].x, srcp.x__, src0.111, src0.000 45: src0.xyz = input[1] MAD temp[69].y, src0._x_, src0.111, src0.000 46: src0.xyz = temp[69] MAD temp[70].xy, src0.xy_, src0.111, src0.HH_ 47: src0.xyz = const[3] REPL_ALPHA temp[71].x RCP, src0.x 48: src0.xyz = const[3] REPL_ALPHA temp[71].y RCP, src0.y 49: src0.xyz = temp[70], src1.xyz = temp[71] MAD temp[72].xy, src0.xy_, src1.xy_, src0.000 50: TEX temp[73].xy, temp[72].xy__, 2D[1]; 51: src0.xyz = const[6], src1.xyz = temp[73] MAD temp[75].xy, src0.yy_, src1.xy_, src0.000 52: src0.xyz = const[8], src1.xyz = temp[75] MAD temp[76].xy, src0.xx_, src0.111, -src1.xy_ 53: src0.xyz = temp[67], src1.xyz = temp[64], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[77].xy, srcp.xx_, src0.111, src2.xy_ 54: src0.xyz = temp[66], src1.xyz = temp[77], srcp.xyz = (src1 - src0) CMP temp[79].x, src0.1__, src0.0__, srcp.x__ 55: src0.xyz = temp[79] MAD temp[80].x, src0.x__, src0.111, src0.000 56: src0.xyz = temp[77], src1.xyz = temp[66] MAD temp[81].x, src0.y__, src0.111, -src1.x__ 57: src0.xyz = temp[81] CMP temp[82].x, src0.1__, src0.0__, src0.x__ 58: src0.xyz = temp[82] MAD temp[80].y, src0._x_, src0.111, src0.000 59: src0.xyz = temp[66], src1.xyz = temp[77] MAD temp[83].x, src0.y__, src0.111, -src1.x__ 60: src0.xyz = temp[83] CMP temp[84].x, src0.1__, src0.0__, src0.x__ 61: src0.xyz = temp[84] MAD temp[85].x, src0.x__, src0.111, src0.000 62: src0.xyz = temp[77], src1.xyz = temp[66], srcp.xyz = (src1 - src0) CMP temp[87].x, src0.1__, src0.0__, srcp.y__ 63: src0.xyz = temp[87] MAD temp[85].y, src0._x_, src0.111, src0.000 64: src0.xyz = temp[80], src1.xyz = temp[85] MAD temp[88].xy, src0.xy_, src1.xy_, src0.000 65: src0.xyz = temp[73] FRC temp[89].xy, -src0.xy_ 66: src0.xyz = temp[73], src1.xyz = temp[89], src2.xyz = temp[88], srcp.xyz = (src1 + src0) MAD temp[91].xy, src2.xy_, srcp.xy_, src0.000 67: src0.xyz = temp[91] MAD temp[92].x, src0.x__, src0.111, src0.y__ 68: src0.xyz = temp[92] CMP temp[94].x, src0.1__, src0.0__, -|src0.x__| 69: src0.xyz = temp[94] CMP temp[95].x, src0.0__, src0.1__, -src0.x__ 70: src0.xyz = temp[95] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 71: KIL temp[3]; 72: src0.xyz = temp[49] MAD temp[96].x, -src0.x__, src0.111, src0.1__ 73: src0.xyz = temp[96] CMP temp[97].x, src0.1__, src0.0__, -src0.x__ 74: src0.xyz = temp[77], src1.xyz = temp[97] MAD temp[98].x, src0.x__, src0.111, src1.x__ 75: src0.xyz = input[1] MAD temp[98].y, src0._x_, src0.111, src0.000 76: src0.xyz = temp[64] MAD temp[99].x, -src0.y__, src0.111, src0.000 77: src0.xyz = temp[76] MAD temp[99].y, -src0._x_, src0.111, src0.000 78: src0.xyz = temp[49] MAD temp[100].x, -src0.x__, src0.111, src0.1__ 79: src0.xyz = temp[76] MAD temp[101].x, -src0.x__, src0.111, src0.000 80: src0.xyz = temp[64] MAD temp[101].y, src0._y_, src0.111, src0.000 81: src0.xyz = temp[99], src1.xyz = temp[101], src2.xyz = temp[100] CMP temp[102].xy, src0.xy_, src1.xy_, -src2.xx_ 82: src0.xyz = temp[49] MAD temp[103].x, -src0.x__, src0.111, src0.1__ 83: src0.xyz = temp[103] CMP temp[104].x, src0.1__, src0.0__, -src0.x__ 84: src0.xyz = temp[77], src1.xyz = temp[104] MAD temp[105].x, src0.y__, src0.111, src1.x__ 85: src0.xyz = input[1] MAD temp[105].y, src0._x_, src0.111, src0.000 86: src0.xyz = temp[64] MAD temp[106].x, -src0.y__, src0.111, src0.000 87: src0.xyz = temp[76] MAD temp[106].y, -src0._y_, src0.111, src0.000 88: src0.xyz = temp[49] MAD temp[107].x, -src0.x__, src0.111, src0.1__ 89: src0.xyz = temp[76] MAD temp[108].x, -src0.y__, src0.111, src0.000 90: src0.xyz = temp[64] MAD temp[108].y, src0._y_, src0.111, src0.000 91: src0.xyz = temp[106], src1.xyz = temp[108], src2.xyz = temp[107] CMP temp[109].xy, src0.xy_, src1.xy_, -src2.xx_ 92: src0.xyz = temp[98] MAD temp[110].xy, src0.xy_, src0.111, src0.HH_ 93: src0.xyz = const[3] REPL_ALPHA temp[111].x RCP, src0.x 94: src0.xyz = const[3] REPL_ALPHA temp[111].y RCP, src0.y 95: src0.xyz = temp[110], src1.xyz = temp[111] MAD temp[112].xy, src0.xy_, src1.xy_, src0.000 96: TEX temp[113].zw, temp[112].xy__, 2D[1]; 97: src0.xyz = temp[113] MAD temp[4].x, src0.z__, src0.111, src0.000 98: src0.w = temp[113] MAD temp[4].y, src0._w_, src0.111, src0.000 99: src0.xyz = const[8], src1.xyz = temp[4] MAD temp[115].xy, src0.yy_, src1.xy_, src0.11_ 100: src0.xyz = const[2] REPL_ALPHA temp[117].x RCP, src0.x 101: src0.xyz = const[2] REPL_ALPHA temp[117].y RCP, src0.y 102: src0.xyz = temp[115], src1.xyz = temp[102], src2.xyz = temp[117], srcp.xyz = (src1 + src0) MAD temp[118].xy, srcp.xy_, src2.xy_, src0.000 103: TEX temp[119].w, temp[118].xy__, 2D[0]; 104: src0.w = temp[119] MAD temp[121].x, src0.w__, src0.111, src0.000 105: src0.xyz = temp[105] MAD temp[122].xy, src0.xy_, src0.111, src0.HH_ 106: src0.xyz = const[3] REPL_ALPHA temp[123].x RCP, src0.x 107: src0.xyz = const[3] REPL_ALPHA temp[123].y RCP, src0.y 108: src0.xyz = temp[122], src1.xyz = temp[123] MAD temp[124].xy, src0.xy_, src1.xy_, src0.000 109: TEX temp[125].zw, temp[124].xy__, 2D[1]; 110: src0.xyz = temp[125] MAD temp[5].x, src0.z__, src0.111, src0.000 111: src0.w = temp[125] MAD temp[5].y, src0._w_, src0.111, src0.000 112: src0.xyz = const[8], src1.xyz = temp[5] MAD temp[127].xy, src0.yy_, src1.xy_, src0.11_ 113: src0.xyz = const[2] REPL_ALPHA temp[129].x RCP, src0.x 114: src0.xyz = const[2] REPL_ALPHA temp[129].y RCP, src0.y 115: src0.xyz = temp[127], src1.xyz = temp[109], src2.xyz = temp[129], srcp.xyz = (src1 + src0) MAD temp[130].xy, srcp.xy_, src2.xy_, src0.000 116: TEX temp[131].w, temp[130].xy__, 2D[0]; 117: src0.w = temp[131] MAD temp[121].y, src0._w_, src0.111, src0.000 118: src0.xyz = temp[121], src1.xyz = temp[91] MAD temp[133].xy, src0.xy_, src1.xy_, src0.000 119: src0.xyz = temp[133] MAX temp[134].x, src0.x__, src0.y__ 120: src0.xyz = temp[134] MAD temp[135].x, src0.x__, src0.111, -src0.H__ 121: src0.xyz = const[8], src1.xyz = temp[135] MAD temp[136].x, src0.z__, src1.x__, src0.H__ 122: src0.xyz = temp[136], src1.xyz = const[0] MAD_SAT temp[137].x, src0.x__, src0.111, src1.x__ 123: src0.xyz = temp[137] CMP temp[139].x, src0.1__, src0.0__, -|src0.x__| 124: src0.xyz = temp[139] CMP temp[140].x, src0.0__, src0.1__, -src0.x__ 125: src0.xyz = temp[140] MAD temp[6].xyz, -src0.xxx, src0.111, src0.000 MAD temp[6].w, -src0.x, src0.1, src0.0 126: KIL temp[6]; 127: src0.xyz = input[2] MAD temp[141].x, src0.y__, src0.111, src0.H__ 128: src0.xyz = const[5] REPL_ALPHA temp[142].x RCP, src0.x 129: src0.xyz = temp[141], src1.xyz = temp[142] MAD temp[143].x, src0.x__, src1.x__, src0.000 130: src0.xyz = temp[143] FRC temp[144].x, src0.x__ 131: src0.xyz = temp[143] FRC temp[145].x, src0.x__ 132: src0.xyz = temp[143], src1.xyz = temp[145] MAD temp[146].x, src0.x__, src0.111, -src1.x__ 133: src0.xyz = const[9], src1.xyz = temp[146], src2.xyz = const[1] MAD temp[147].x, src0.x__, src1.x__, src2.x__ 134: src0.xyz = temp[147] MAD temp[148].x, src0.x__, src0.111, src0.H__ 135: src0.xyz = const[5] REPL_ALPHA temp[149].x RCP, src0.y 136: src0.xyz = temp[148], src1.xyz = temp[149] MAD temp[150].x, src0.x__, src1.x__, src0.000 137: src0.xyz = temp[150] MAD temp[144].y, src0._x_, src0.111, src0.000 138: TEX temp[151], temp[144].xy__, 2D[3]; 139: src0.xyz = temp[151] MAD temp[152].xyz, src0.xyz, src0.111, src0.000 140: src0.xyz = temp[40], src0.w = temp[151] MAD temp[153].x, src0.w__, src0.x__, src0.000 141: src0.xyz = temp[153], src1.xyz = temp[137] MAD temp[154].x, src0.x__, src1.x__, src0.000 142: src0.xyz = temp[154] MAD temp[152].w, src0.x, src0.1, src0.0 143: src0.xyz = temp[152], src0.w = temp[152] 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[3], src1.xyz = input[2] MAD temp[2].y, -src0._x_, src0.111, src0.000 MAD temp[141].w, src1.y, src0.1, src0.H 1: src0.xyz = input[3], src1.xyz = const[5] MAD temp[62].x, src0.z__, src0.111, src0.000 RCP temp[149].w, src1.y 2: src0.xyz = const[5] MAD temp[62].y, src0._0_, src0.111, src0.000 RCP temp[142].w, src0.x 3: src0.xyz = input[3], src0.w = temp[141], src1.w = temp[142] MAD temp[2].x, -src0.y__, src0.111, src0.000 MAD temp[143].w, src0.w, src1.w, src0.0 4: src0.xyz = input[1], src0.w = temp[143] MAD temp[69].y, src0._x_, src0.111, src0.000 FRC temp[145].w, src0.w 5: src0.xyz = input[1], src0.w = temp[143], src1.w = temp[145] MAD temp[98].y, src0._x_, src0.111, src0.000 MAD temp[146].w, src0.w, src0.1, -src1.w 6: src0.xyz = input[1], src0.w = temp[146], src1.xyz = const[9], src2.xyz = const[1] MAD temp[105].y, src0._x_, src0.111, src0.000 MAD temp[147].w, src1.x, src0.w, src2.x 7: src0.xyz = input[3], src0.w = temp[147], src1.xyz = temp[2] MAD temp[65].xy, src0.zz_, src0.111, src1.xy_ MAD temp[148].w, src0.w, src0.1, src0.H 8: src0.xyz = temp[143], src0.w = temp[143], src1.w = temp[148], src2.w = temp[149] FRC temp[144].x, src0.w__ MAD temp[150].w, src1.w, src2.w, src0.0 9: src0.xyz = input[0], src1.xyz = const[4] MAD temp[51].x, src0.x__, src0.H__, src0.000 RCP temp[32].w, src1.y 10: src0.xyz = temp[150], src0.w = temp[150], src1.xyz = temp[51], src2.xyz = input[4] MAD temp[144].y, src0._w_, src0.111, src0.000 MAD temp[52].w, src1.x, |src0.1|, -|src2.y| 11: src0.xyz = input[2], src1.xyz = const[4] MAD temp[25].x, src0.z__, src0.111, src0.H__ RCP temp[26].w, src1.x 12: src0.xyz = temp[25], src0.w = temp[26], src1.xyz = temp[26], src1.w = temp[52] MAD temp[27].x, src0.x__, src0.w__, src0.000 CMP temp[53].w, src0.0, src0.1, src1.w 13: src0.xyz = const[3] REPL_ALPHA temp[71].x RCP, src0.x 14: src0.xyz = const[3] REPL_ALPHA temp[71].y RCP, src0.y 15: src0.xyz = const[3] REPL_ALPHA temp[111].x RCP, src0.x 16: src0.xyz = const[3] REPL_ALPHA temp[111].y RCP, src0.y 17: src0.xyz = const[2] REPL_ALPHA temp[117].x RCP, src0.x 18: src0.xyz = const[2] REPL_ALPHA temp[117].y RCP, src0.y 19: src0.xyz = const[3] REPL_ALPHA temp[123].x RCP, src0.x 20: src0.xyz = const[3] REPL_ALPHA temp[123].y RCP, src0.y 21: src0.xyz = const[2] REPL_ALPHA temp[129].x RCP, src0.x 22: src0.xyz = const[2] REPL_ALPHA temp[129].y RCP, src0.y 23: src0.xyz = temp[27] FRC temp[29].x, src0.x__ 24: src0.xyz = temp[29], src1.xyz = temp[27], srcp.xyz = (src1 - src0) FRC temp[28].x, src1.x__ MAD temp[31].w, srcp.x, src0.1, src0.H 25: src0.xyz = temp[31], src0.w = temp[32], src1.xyz = temp[32], src1.w = temp[31] MAD temp[33].x, src1.w__, src0.w__, src0.000 26: src0.xyz = temp[33] MAD temp[28].y, src0._x_, src0.111, src0.000 27: BEGIN_TEX; 28: TEX temp[151], temp[144].xy__, 2D[3]; 29: TEX temp[34].x, temp[28].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 30: src0.xyz = const[6], src1.xyz = temp[34] SEM_WAIT MAD temp[35].x, src0.y__, src1.x__, src0.H__ 31: src0.xyz = temp[151] MAD temp[152].xyz, src0.xyz, src0.111, src0.000 32: src0.xyz = temp[35] FRC temp[36].x, src0.x__ 33: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[44].x, srcp.x__, src2.z__, src0.000 34: src0.xyz = temp[36], src0.w = const[6], src1.xyz = temp[35], src2.xyz = temp[44], srcp.xyz = (src1 - src0) FRC temp[45].x, src2.x__ MAD temp[38].w, srcp.x, src0.w, src0.0 35: src0.xyz = temp[45], src0.w = temp[38], src1.xyz = temp[44], src2.xyz = temp[38], srcp.xyz = (src1 - src0) FRC temp[39].x, src0.w__ MAD_SAT temp[47].w, srcp.x, src0.1, src0.0 36: src0.xyz = temp[47], src0.w = temp[47], src1.xyz = const[6], src2.xyz = temp[39] MAD temp[48].x, src0.H__, src0.111, -src0.w__ MAD temp[40].w, src1.z, src2.x, src0.0 37: src0.xyz = temp[40], src0.w = temp[151], src1.xyz = temp[48], src1.w = temp[40] MAD temp[153].x, src0.w__, src1.w__, src0.000 CMP temp[49].w, src0.0, src0.1, src1.x 38: src0.xyz = temp[49], src0.w = temp[49] MAD temp[54].x, -src0.w__, src0.111, src0.1__ MAD temp[96].w, -src0.w, src0.1, src0.1 39: src0.xyz = temp[96], src0.w = temp[96], src1.xyz = temp[54], src1.w = temp[53] CMP temp[97].x, src0.1__, src0.0__, -src0.w__ CMP temp[55].w, src1.w, src0.0, -src1.x 40: src0.xyz = temp[49], src0.w = temp[49] MAD temp[100].x, -src0.w__, src0.111, src0.1__ MAD temp[103].w, -src0.w, src0.1, src0.1 41: src0.xyz = temp[103], src0.w = temp[103], src1.w = temp[55] CMP temp[104].x, src0.1__, src0.0__, -src0.w__ CMP temp[56].w, src0.0, src0.1, -src1.w 42: src0.xyz = temp[49], src0.w = temp[49], src1.w = temp[40] MAD temp[107].x, -src0.w__, src0.111, src0.1__ CMP temp[42].w, src0.1, src0.0, -|src1.w| 43: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[57].w, src2.z, srcp.x, src0.0 44: src0.xyz = temp[57], src0.w = temp[57], src1.w = temp[42] FRC temp[59].x * 2, src0.w__ CMP temp[43].w, src0.0, src0.1, -src1.w 45: src0.xyz = temp[56], src0.w = temp[56] MAD temp[1].xyz, -src0.www, src0.111, src0.000 MAD temp[1].w, -src0.w, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[1]; 48: src0.xyz = temp[43], src0.w = temp[43] MAD temp[0].xyz, -src0.www, src0.111, src0.000 MAD temp[0].w, -src0.w, src0.1, src0.0 49: BEGIN_TEX; 50: KIL temp[0]; 51: src0.xyz = temp[59] MAD temp[60].x, src0.x__, src0.111, -src0.1__ 52: src0.xyz = temp[60] CMP temp[61].x, src0.1__, src0.0__, src0.x__ 53: src0.xyz = input[4], src1.xyz = temp[62], src2.xyz = temp[61], srcp.xyz = (src1 - src0) CMP temp[64].xy, src0.xy_, srcp.xy_, -src2.xx_ 54: src0.xyz = input[3], src1.xyz = temp[65], src2.xyz = temp[61] CMP temp[66].xy, src0.xy_, src1.xy_, -src2.xx_ 55: src0.xyz = temp[64] FRC temp[67].x, src0.x__ 56: src0.xyz = temp[64] MAD temp[108].y, src0._y_, src0.111, src0.000 57: src0.xyz = temp[67], src1.xyz = temp[64], srcp.xyz = (src1 - src0) MAD temp[69].x, srcp.x__, src0.111, src0.000 58: src0.xyz = temp[64] MAD temp[106].x, -src0.y__, src0.111, src0.000 59: src0.xyz = temp[64] MAD temp[101].y, src0._y_, src0.111, src0.000 60: src0.xyz = temp[64] MAD temp[99].x, -src0.y__, src0.111, src0.000 61: src0.xyz = temp[69] MAD temp[70].xy, src0.xy_, src0.111, src0.HH_ 62: src0.xyz = temp[70], src1.xyz = temp[71] MAD temp[72].xy, src0.xy_, src1.xy_, src0.000 63: BEGIN_TEX; 64: TEX temp[73].xy, temp[72].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 65: src0.xyz = const[6], src1.xyz = temp[73] SEM_WAIT MAD temp[75].xy, src0.yy_, src1.xy_, src0.000 66: src0.xyz = temp[73] FRC temp[89].xy, -src0.xy_ 67: src0.xyz = const[8], src1.xyz = temp[75] MAD temp[76].xy, src0.xx_, src0.111, -src1.xy_ 68: src0.xyz = temp[67], src1.xyz = temp[64], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[77].xy, srcp.xx_, src0.111, src2.xy_ 69: src0.xyz = temp[76], src1.xyz = temp[77], src2.xyz = temp[66] MAD temp[106].y, -src0._y_, src0.111, src0.000 MAD temp[81].w, src1.y, src0.1, -src2.x 70: src0.xyz = temp[77], src0.w = temp[81], src1.xyz = temp[97] MAD temp[98].x, src0.x__, src0.111, src1.x__ CMP temp[82].w, src0.1, src0.0, src0.w 71: src0.xyz = temp[77], src1.xyz = temp[66], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[108].x, -src2.y__, src0.111, src0.000 CMP temp[87].w, src0.1, src0.0, srcp.y 72: src0.xyz = temp[66], src1.xyz = temp[77], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[99].y, -src2._x_, src0.111, src0.000 CMP temp[79].w, src0.1, src0.0, srcp.x 73: src0.xyz = temp[76], src1.xyz = temp[66], src2.xyz = temp[77] MAD temp[101].x, -src0.x__, src0.111, src0.000 MAD temp[83].w, src1.y, src0.1, -src2.x 74: src0.xyz = temp[77], src0.w = temp[83], src1.xyz = temp[104] MAD temp[105].x, src0.y__, src0.111, src1.x__ CMP temp[84].w, src0.1, src0.0, src0.w 75: src0.xyz = temp[106], src1.xyz = temp[108], src2.xyz = temp[107] CMP temp[109].xy, src0.xy_, src1.xy_, -src2.xx_ 76: src0.xyz = temp[82], src0.w = temp[82] MAD temp[80].y, src0._w_, src0.111, src0.000 77: src0.xyz = temp[87], src0.w = temp[87] MAD temp[85].y, src0._w_, src0.111, src0.000 78: src0.xyz = temp[99], src1.xyz = temp[101], src2.xyz = temp[100] CMP temp[102].xy, src0.xy_, src1.xy_, -src2.xx_ 79: src0.xyz = temp[79], src0.w = temp[79] MAD temp[80].x, src0.w__, src0.111, src0.000 80: src0.xyz = temp[84], src0.w = temp[84] MAD temp[85].x, src0.w__, src0.111, src0.000 81: src0.xyz = temp[98] MAD temp[110].xy, src0.xy_, src0.111, src0.HH_ 82: src0.xyz = temp[105] MAD temp[122].xy, src0.xy_, src0.111, src0.HH_ 83: src0.xyz = temp[80], src1.xyz = temp[85] MAD temp[88].xy, src0.xy_, src1.xy_, src0.000 84: src0.xyz = temp[110], src1.xyz = temp[111] MAD temp[112].xy, src0.xy_, src1.xy_, src0.000 85: src0.xyz = temp[73], src1.xyz = temp[89], src2.xyz = temp[88], srcp.xyz = (src1 + src0) MAD temp[91].xy, src2.xy_, srcp.xy_, src0.000 86: src0.xyz = temp[122], src1.xyz = temp[123], src2.xyz = temp[91] MAD temp[124].xy, src0.xy_, src1.xy_, src0.000 MAD temp[92].w, src2.x, src0.1, src2.y 87: src0.xyz = temp[92], src0.w = temp[92] CMP temp[94].x, src0.1__, src0.0__, -|src0.w__| 88: src0.xyz = temp[94] CMP temp[95].x, src0.0__, src0.1__, -src0.x__ 89: src0.xyz = temp[95] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 90: BEGIN_TEX; 91: TEX temp[113].zw, temp[112].xy__, 2D[1]; 92: TEX temp[125].zw, temp[124].xy__, 2D[1]; 93: KIL temp[3]; 94: src0.xyz = temp[113] SEM_WAIT MAD temp[4].x, src0.z__, src0.111, src0.000 95: src0.w = temp[113] MAD temp[4].y, src0._w_, src0.111, src0.000 96: src0.xyz = temp[125] MAD temp[5].x, src0.z__, src0.111, src0.000 97: src0.w = temp[125] MAD temp[5].y, src0._w_, src0.111, src0.000 98: src0.xyz = const[8], src1.xyz = temp[4] MAD temp[115].xy, src0.yy_, src1.xy_, src0.11_ 99: src0.xyz = const[8], src1.xyz = temp[5] MAD temp[127].xy, src0.yy_, src1.xy_, src0.11_ 100: src0.xyz = temp[115], src1.xyz = temp[102], src2.xyz = temp[117], srcp.xyz = (src1 + src0) MAD temp[118].xy, srcp.xy_, src2.xy_, src0.000 101: src0.xyz = temp[127], src1.xyz = temp[109], src2.xyz = temp[129], srcp.xyz = (src1 + src0) MAD temp[130].xy, srcp.xy_, src2.xy_, src0.000 102: BEGIN_TEX; 103: TEX temp[119].w, temp[118].xy__, 2D[0]; 104: TEX temp[131].w, temp[130].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 105: src0.w = temp[119] SEM_WAIT MAD temp[121].x, src0.w__, src0.111, src0.000 106: src0.w = temp[131] MAD temp[121].y, src0._w_, src0.111, src0.000 107: src0.xyz = temp[121], src1.xyz = temp[91] MAD temp[133].xy, src0.xy_, src1.xy_, src0.000 108: src0.xyz = temp[133] MAX temp[134].x, src0.x__, src0.y__ 109: src0.xyz = temp[134] MAD temp[135].x, src0.x__, src0.111, -src0.H__ 110: src0.xyz = const[8], src1.xyz = temp[135] MAD temp[136].x, src0.z__, src1.x__, src0.H__ 111: src0.xyz = temp[136], src1.xyz = const[0] MAD_SAT temp[137].x, src0.x__, src0.111, src1.x__ 112: src0.xyz = temp[137], src1.xyz = temp[153] CMP temp[139].x, src0.1__, src0.0__, -|src0.x__| MAD temp[154].w, src1.x, src0.x, src0.0 113: src0.xyz = temp[139], src0.w = temp[154] CMP temp[140].x, src0.0__, src0.1__, -src0.x__ MAD temp[152].w, src0.w, src0.1, src0.0 114: src0.xyz = temp[140] MAD temp[6].xyz, -src0.xxx, src0.111, src0.000 MAD temp[6].w, -src0.x, src0.1, src0.0 115: BEGIN_TEX; 116: KIL temp[6]; 117: src0.xyz = temp[152], src0.w = temp[152] 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[3], src1.xyz = input[2] MAD temp[2].y, -src0._x_, src0.111, src0.000 MAD temp[141].w, src1.y, src0.1, src0.H 1: src0.xyz = input[3], src1.xyz = const[5] MAD temp[62].x, src0.z__, src0.111, src0.000 RCP temp[149].w, src1.y 2: src0.xyz = const[5] MAD temp[62].y, src0._0_, src0.111, src0.000 RCP temp[142].w, src0.x 3: src0.xyz = input[3], src0.w = temp[141], src1.w = temp[142] MAD temp[2].x, -src0.y__, src0.111, src0.000 MAD temp[143].w, src0.w, src1.w, src0.0 4: src0.xyz = input[1], src0.w = temp[143] MAD temp[69].y, src0._x_, src0.111, src0.000 FRC temp[145].w, src0.w 5: src0.xyz = input[1], src0.w = temp[143], src1.w = temp[145] MAD temp[98].y, src0._x_, src0.111, src0.000 MAD temp[146].w, src0.w, src0.1, -src1.w 6: src0.xyz = input[1], src0.w = temp[146], src1.xyz = const[9], src2.xyz = const[1] MAD temp[105].y, src0._x_, src0.111, src0.000 MAD temp[147].w, src1.x, src0.w, src2.x 7: src0.xyz = input[3], src0.w = temp[147], src1.xyz = temp[2] MAD temp[65].xy, src0.zz_, src0.111, src1.xy_ MAD temp[148].w, src0.w, src0.1, src0.H 8: src0.w = temp[143], src1.w = temp[148], src2.w = temp[149] FRC temp[144].x, src0.w__ MAD temp[150].w, src1.w, src2.w, src0.0 9: src0.xyz = input[0], src1.xyz = const[4] MAD temp[51].x, src0.x__, src0.H__, src0.000 RCP temp[32].w, src1.y 10: src0.w = temp[150], src1.xyz = temp[51], src2.xyz = input[4] MAD temp[144].y, src0._w_, src0.111, src0.000 MAD temp[52].w, src1.x, |src0.1|, -|src2.y| 11: src0.xyz = input[2], src1.xyz = const[4] MAD temp[25].x, src0.z__, src0.111, src0.H__ RCP temp[26].w, src1.x 12: src0.xyz = temp[25], src0.w = temp[26], src1.w = temp[52] MAD temp[27].x, src0.x__, src0.w__, src0.000 CMP temp[53].w, src0.0, src0.1, src1.w 13: src0.xyz = const[3] REPL_ALPHA temp[71].x RCP, src0.x 14: src0.xyz = const[3] REPL_ALPHA temp[71].y RCP, src0.y 15: src0.xyz = const[3] REPL_ALPHA temp[111].x RCP, src0.x 16: src0.xyz = const[3] REPL_ALPHA temp[111].y RCP, src0.y 17: src0.xyz = const[2] REPL_ALPHA temp[117].x RCP, src0.x 18: src0.xyz = const[2] REPL_ALPHA temp[117].y RCP, src0.y 19: src0.xyz = const[3] REPL_ALPHA temp[123].x RCP, src0.x 20: src0.xyz = const[3] REPL_ALPHA temp[123].y RCP, src0.y 21: src0.xyz = const[2] REPL_ALPHA temp[129].x RCP, src0.x 22: src0.xyz = const[2] REPL_ALPHA temp[129].y RCP, src0.y 23: src0.xyz = temp[27] FRC temp[29].x, src0.x__ 24: src0.xyz = temp[29], src1.xyz = temp[27], srcp.xyz = (src1 - src0) FRC temp[28].x, src1.x__ MAD temp[31].w, srcp.x, src0.1, src0.H 25: src0.w = temp[32], src1.w = temp[31] MAD temp[33].x, src1.w__, src0.w__, src0.000 26: src0.xyz = temp[33] MAD temp[28].y, src0._x_, src0.111, src0.000 27: BEGIN_TEX; 28: TEX temp[151], temp[144].xy__, 2D[3]; 29: TEX temp[34].x, temp[28].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 30: src0.xyz = const[6], src1.xyz = temp[34] SEM_WAIT MAD temp[35].x, src0.y__, src1.x__, src0.H__ 31: src0.xyz = temp[151] MAD temp[152].xyz, src0.xyz, src0.111, src0.000 32: src0.xyz = temp[35] FRC temp[36].x, src0.x__ 33: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[44].x, srcp.x__, src2.z__, src0.000 34: src0.xyz = temp[36], src0.w = const[6], src1.xyz = temp[35], src2.xyz = temp[44], srcp.xyz = (src1 - src0) FRC temp[45].x, src2.x__ MAD temp[38].w, srcp.x, src0.w, src0.0 35: src0.xyz = temp[45], src0.w = temp[38], src1.xyz = temp[44], srcp.xyz = (src1 - src0) FRC temp[39].x, src0.w__ MAD_SAT temp[47].w, srcp.x, src0.1, src0.0 36: src0.w = temp[47], src1.xyz = const[6], src2.xyz = temp[39] MAD temp[48].x, src0.H__, src0.111, -src0.w__ MAD temp[40].w, src1.z, src2.x, src0.0 37: src0.w = temp[151], src1.xyz = temp[48], src1.w = temp[40] MAD temp[153].x, src0.w__, src1.w__, src0.000 CMP temp[49].w, src0.0, src0.1, src1.x 38: src0.w = temp[49] MAD temp[54].x, -src0.w__, src0.111, src0.1__ MAD temp[96].w, -src0.w, src0.1, src0.1 39: src0.w = temp[96], src1.xyz = temp[54], src1.w = temp[53] CMP temp[97].x, src0.1__, src0.0__, -src0.w__ CMP temp[55].w, src1.w, src0.0, -src1.x 40: src0.w = temp[49] MAD temp[100].x, -src0.w__, src0.111, src0.1__ MAD temp[103].w, -src0.w, src0.1, src0.1 41: src0.w = temp[103], src1.w = temp[55] CMP temp[104].x, src0.1__, src0.0__, -src0.w__ CMP temp[56].w, src0.0, src0.1, -src1.w 42: src0.w = temp[49], src1.w = temp[40] MAD temp[107].x, -src0.w__, src0.111, src0.1__ CMP temp[42].w, src0.1, src0.0, -|src1.w| 43: src0.xyz = temp[36], src1.xyz = temp[35], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[57].w, src2.z, srcp.x, src0.0 44: src0.w = temp[57], src1.w = temp[42] FRC temp[59].x * 2, src0.w__ CMP temp[43].w, src0.0, src0.1, -src1.w 45: src0.w = temp[56] MAD temp[1].xyz, -src0.www, src0.111, src0.000 MAD temp[1].w, -src0.w, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[1]; 48: src0.w = temp[43] MAD temp[0].xyz, -src0.www, src0.111, src0.000 MAD temp[0].w, -src0.w, src0.1, src0.0 49: BEGIN_TEX; 50: KIL temp[0]; 51: src0.xyz = temp[59] MAD temp[60].x, src0.x__, src0.111, -src0.1__ 52: src0.xyz = temp[60] CMP temp[61].x, src0.1__, src0.0__, src0.x__ 53: src0.xyz = input[4], src1.xyz = temp[62], src2.xyz = temp[61], srcp.xyz = (src1 - src0) CMP temp[64].xy, src0.xy_, srcp.xy_, -src2.xx_ 54: src0.xyz = input[3], src1.xyz = temp[65], src2.xyz = temp[61] CMP temp[66].xy, src0.xy_, src1.xy_, -src2.xx_ 55: src0.xyz = temp[64] FRC temp[67].x, src0.x__ 56: src0.xyz = temp[64] MAD temp[108].y, src0._y_, src0.111, src0.000 57: src0.xyz = temp[67], src1.xyz = temp[64], srcp.xyz = (src1 - src0) MAD temp[69].x, srcp.x__, src0.111, src0.000 58: src0.xyz = temp[64] MAD temp[106].x, -src0.y__, src0.111, src0.000 59: src0.xyz = temp[64] MAD temp[101].y, src0._y_, src0.111, src0.000 60: src0.xyz = temp[64] MAD temp[99].x, -src0.y__, src0.111, src0.000 61: src0.xyz = temp[69] MAD temp[70].xy, src0.xy_, src0.111, src0.HH_ 62: src0.xyz = temp[70], src1.xyz = temp[71] MAD temp[72].xy, src0.xy_, src1.xy_, src0.000 63: BEGIN_TEX; 64: TEX temp[73].xy, temp[72].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 65: src0.xyz = const[6], src1.xyz = temp[73] SEM_WAIT MAD temp[75].xy, src0.yy_, src1.xy_, src0.000 66: src0.xyz = temp[73] FRC temp[89].xy, -src0.xy_ 67: src0.xyz = const[8], src1.xyz = temp[75] MAD temp[76].xy, src0.xx_, src0.111, -src1.xy_ 68: src0.xyz = temp[67], src1.xyz = temp[64], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[77].xy, srcp.xx_, src0.111, src2.xy_ 69: src0.xyz = temp[76], src1.xyz = temp[77], src2.xyz = temp[66] MAD temp[106].y, -src0._y_, src0.111, src0.000 MAD temp[81].w, src1.y, src0.1, -src2.x 70: src0.xyz = temp[77], src0.w = temp[81], src1.xyz = temp[97] MAD temp[98].x, src0.x__, src0.111, src1.x__ CMP temp[82].w, src0.1, src0.0, src0.w 71: src0.xyz = temp[77], src1.xyz = temp[66], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[108].x, -src2.y__, src0.111, src0.000 CMP temp[87].w, src0.1, src0.0, srcp.y 72: src0.xyz = temp[66], src1.xyz = temp[77], src2.xyz = temp[76], srcp.xyz = (src1 - src0) MAD temp[99].y, -src2._x_, src0.111, src0.000 CMP temp[79].w, src0.1, src0.0, srcp.x 73: src0.xyz = temp[76], src1.xyz = temp[66], src2.xyz = temp[77] MAD temp[101].x, -src0.x__, src0.111, src0.000 MAD temp[83].w, src1.y, src0.1, -src2.x 74: src0.xyz = temp[77], src0.w = temp[83], src1.xyz = temp[104] MAD temp[105].x, src0.y__, src0.111, src1.x__ CMP temp[84].w, src0.1, src0.0, src0.w 75: src0.xyz = temp[106], src1.xyz = temp[108], src2.xyz = temp[107] CMP temp[109].xy, src0.xy_, src1.xy_, -src2.xx_ 76: src0.w = temp[82] MAD temp[80].y, src0._w_, src0.111, src0.000 77: src0.w = temp[87] MAD temp[85].y, src0._w_, src0.111, src0.000 78: src0.xyz = temp[99], src1.xyz = temp[101], src2.xyz = temp[100] CMP temp[102].xy, src0.xy_, src1.xy_, -src2.xx_ 79: src0.w = temp[79] MAD temp[80].x, src0.w__, src0.111, src0.000 80: src0.w = temp[84] MAD temp[85].x, src0.w__, src0.111, src0.000 81: src0.xyz = temp[98] MAD temp[110].xy, src0.xy_, src0.111, src0.HH_ 82: src0.xyz = temp[105] MAD temp[122].xy, src0.xy_, src0.111, src0.HH_ 83: src0.xyz = temp[80], src1.xyz = temp[85] MAD temp[88].xy, src0.xy_, src1.xy_, src0.000 84: src0.xyz = temp[110], src1.xyz = temp[111] MAD temp[112].xy, src0.xy_, src1.xy_, src0.000 85: src0.xyz = temp[73], src1.xyz = temp[89], src2.xyz = temp[88], srcp.xyz = (src1 + src0) MAD temp[91].xy, src2.xy_, srcp.xy_, src0.000 86: src0.xyz = temp[122], src1.xyz = temp[123], src2.xyz = temp[91] MAD temp[124].xy, src0.xy_, src1.xy_, src0.000 MAD temp[92].w, src2.x, src0.1, src2.y 87: src0.w = temp[92] CMP temp[94].x, src0.1__, src0.0__, -|src0.w__| 88: src0.xyz = temp[94] CMP temp[95].x, src0.0__, src0.1__, -src0.x__ 89: src0.xyz = temp[95] MAD temp[3].xyz, -src0.xxx, src0.111, src0.000 MAD temp[3].w, -src0.x, src0.1, src0.0 90: BEGIN_TEX; 91: TEX temp[113].zw, temp[112].xy__, 2D[1]; 92: TEX temp[125].zw, temp[124].xy__, 2D[1]; 93: KIL temp[3]; 94: src0.xyz = temp[113] SEM_WAIT MAD temp[4].x, src0.z__, src0.111, src0.000 95: src0.w = temp[113] MAD temp[4].y, src0._w_, src0.111, src0.000 96: src0.xyz = temp[125] MAD temp[5].x, src0.z__, src0.111, src0.000 97: src0.w = temp[125] MAD temp[5].y, src0._w_, src0.111, src0.000 98: src0.xyz = const[8], src1.xyz = temp[4] MAD temp[115].xy, src0.yy_, src1.xy_, src0.11_ 99: src0.xyz = const[8], src1.xyz = temp[5] MAD temp[127].xy, src0.yy_, src1.xy_, src0.11_ 100: src0.xyz = temp[115], src1.xyz = temp[102], src2.xyz = temp[117], srcp.xyz = (src1 + src0) MAD temp[118].xy, srcp.xy_, src2.xy_, src0.000 101: src0.xyz = temp[127], src1.xyz = temp[109], src2.xyz = temp[129], srcp.xyz = (src1 + src0) MAD temp[130].xy, srcp.xy_, src2.xy_, src0.000 102: BEGIN_TEX; 103: TEX temp[119].w, temp[118].xy__, 2D[0]; 104: TEX temp[131].w, temp[130].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 105: src0.w = temp[119] SEM_WAIT MAD temp[121].x, src0.w__, src0.111, src0.000 106: src0.w = temp[131] MAD temp[121].y, src0._w_, src0.111, src0.000 107: src0.xyz = temp[121], src1.xyz = temp[91] MAD temp[133].xy, src0.xy_, src1.xy_, src0.000 108: src0.xyz = temp[133] MAX temp[134].x, src0.x__, src0.y__ 109: src0.xyz = temp[134] MAD temp[135].x, src0.x__, src0.111, -src0.H__ 110: src0.xyz = const[8], src1.xyz = temp[135] MAD temp[136].x, src0.z__, src1.x__, src0.H__ 111: src0.xyz = temp[136], src1.xyz = const[0] MAD_SAT temp[137].x, src0.x__, src0.111, src1.x__ 112: src0.xyz = temp[137], src1.xyz = temp[153] CMP temp[139].x, src0.1__, src0.0__, -|src0.x__| MAD temp[154].w, src1.x, src0.x, src0.0 113: src0.xyz = temp[139], src0.w = temp[154] CMP temp[140].x, src0.0__, src0.1__, -src0.x__ MAD temp[152].w, src0.w, src0.1, src0.0 114: src0.xyz = temp[140] MAD temp[6].xyz, -src0.xxx, src0.111, src0.000 MAD temp[6].w, -src0.x, src0.1, src0.0 115: BEGIN_TEX; 116: KIL temp[6]; 117: src0.xyz = temp[152], src0.w = temp[152] 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[3], src1.xyz = input[2] MAD temp[5].y, -src0._x_, src0.11_, src0.00_ MAD temp[0].w, src1.y, src0.1, src0.H 1: src0.xyz = input[3], src1.xyz = const[5] MAD temp[6].x, src0.z__, src0.11_, src0.00_ RCP temp[1].w, src1.y 2: src0.xyz = const[5] MAD temp[6].y, src0._0_, src0.11_, src0.00_ RCP temp[2].w, src0.x 3: src0.xyz = input[3], src0.w = temp[0], src1.w = temp[2] MAD temp[5].x, -src0.y__, src0.11_, src0.00_ MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = input[1], src0.w = temp[0] MAD temp[7].y, src0._x_, src0.11_, src0.00_ FRC temp[2].w, src0.w 5: src0.xyz = input[1], src0.w = temp[0], src1.w = temp[2] MAD temp[8].y, src0._x_, src0.11_, src0.00_ MAD temp[2].w, src0.w, src0.1, -src1.w 6: src0.xyz = input[1], src0.w = temp[2], src1.xyz = const[9], src2.xyz = const[1] MAD temp[1].y, src0._x_, src0.11_, src0.00_ MAD temp[2].w, src1.x, src0.w, src2.x 7: src0.xyz = input[3], src0.w = temp[2], src1.xyz = temp[5] MAD temp[5].xy, src0.zz_, src0.11_, src1.xy_ MAD temp[2].w, src0.w, src0.1, src0.H 8: src0.w = temp[0], src1.w = temp[2], src2.w = temp[1] FRC temp[9].x, src0.w__ MAD temp[0].w, src1.w, src2.w, src0.0 9: src0.xyz = input[0], src1.xyz = const[4] MAD temp[0].x, src0.x__, src0.H__, src0.0__ RCP temp[1].w, src1.y 10: src0.w = temp[0], src1.xyz = temp[0], src2.xyz = input[4] MAD temp[9].y, src0._w_, src0.11_, src0.00_ MAD temp[0].w, src1.x, |src0.1|, -|src2.y| 11: src0.xyz = input[2], src1.xyz = const[4] MAD temp[0].x, src0.z__, src0.1__, src0.H__ RCP temp[2].w, src1.x 12: src0.xyz = temp[0], src0.w = temp[2], src1.w = temp[0] MAD temp[0].x, src0.x__, src0.w__, src0.0__ CMP temp[0].w, src0.0, src0.1, src1.w 13: src0.xyz = const[3] REPL_ALPHA temp[2].x RCP, src0.x 14: src0.xyz = const[3] REPL_ALPHA temp[2].y RCP, src0.y 15: src0.xyz = const[3] REPL_ALPHA temp[10].x RCP, src0.x 16: src0.xyz = const[3] REPL_ALPHA temp[10].y RCP, src0.y 17: src0.xyz = const[2] REPL_ALPHA temp[11].x RCP, src0.x 18: src0.xyz = const[2] REPL_ALPHA temp[11].y RCP, src0.y 19: src0.xyz = const[3] REPL_ALPHA temp[12].x RCP, src0.x 20: src0.xyz = const[3] REPL_ALPHA temp[12].y RCP, src0.y 21: src0.xyz = const[2] REPL_ALPHA temp[13].x RCP, src0.x 22: src0.xyz = const[2] REPL_ALPHA temp[13].y RCP, src0.y 23: src0.xyz = temp[0] FRC temp[14].x, src0.x__ 24: src0.xyz = temp[14], src1.xyz = temp[0], srcp.xyz = (src1 - src0) FRC temp[0].x, src1.x__ MAD temp[2].w, srcp.x, src0.1, src0.H 25: src0.w = temp[1], src1.w = temp[2] MAD temp[0].z, src1.__w, src0.__w, src0.__0 26: src0.xyz = temp[0] MAD temp[0].y, src0._z_, src0.11_, src0.00_ 27: BEGIN_TEX; 28: TEX temp[9], temp[9].xy__, 2D[3]; 29: TEX temp[14].x, temp[0].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 30: src0.xyz = const[6], src1.xyz = temp[14] SEM_WAIT MAD temp[0].x, src0.y__, src1.x__, src0.H__ 31: src0.xyz = temp[9] MAD temp[14].xyz, src0.xyz, src0.111, src0.000 32: src0.xyz = temp[0] FRC temp[15].x, src0.x__ 33: src0.xyz = temp[15], src1.xyz = temp[0], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[16].x, srcp.x__, src2.z__, src0.0__ 34: src0.xyz = temp[15], src0.w = const[6], src1.xyz = temp[0], src2.xyz = temp[16], srcp.xyz = (src1 - src0) FRC temp[17].x, src2.x__ MAD temp[1].w, srcp.x, src0.w, src0.0 35: src0.xyz = temp[17], src0.w = temp[1], src1.xyz = temp[16], srcp.xyz = (src1 - src0) FRC temp[0].y, src0._w_ MAD_SAT temp[1].w, srcp.x, src0.1, src0.0 36: src0.w = temp[1], src1.xyz = const[6], src2.xyz = temp[0] MAD temp[0].y, src0._H_, src0._1_, -src0._w_ MAD temp[1].w, src1.z, src2.y, src0.0 37: src0.w = temp[9], src1.xyz = temp[0], src1.w = temp[1] MAD temp[0].y, src0._w_, src1._w_, src0._0_ CMP temp[2].w, src0.0, src0.1, src1.y 38: src0.w = temp[2] MAD temp[0].z, -src0.__w, src0.__1, src0.__1 MAD temp[3].w, -src0.w, src0.1, src0.1 39: src0.w = temp[3], src1.xyz = temp[0], src1.w = temp[0] CMP temp[0].z, src0.__1, src0.__0, -src0.__w CMP temp[0].w, src1.w, src0.0, -src1.z 40: src0.w = temp[2] MAD temp[1].z, -src0.__w, src0.__1, src0.__1 MAD temp[3].w, -src0.w, src0.1, src0.1 41: src0.w = temp[3], src1.w = temp[0] CMP temp[2].z, src0.__1, src0.__0, -src0.__w CMP temp[0].w, src0.0, src0.1, -src1.w 42: src0.w = temp[2], src1.w = temp[1] MAD temp[4].z, -src0.__w, src0.__1, src0.__1 CMP temp[1].w, src0.1, src0.0, -|src1.w| 43: src0.xyz = temp[15], src1.xyz = temp[0], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD temp[2].w, src2.z, srcp.x, src0.0 44: src0.w = temp[2], src1.w = temp[1] FRC temp[0].x * 2, src0.w__ CMP temp[1].w, src0.0, src0.1, -src1.w 45: src0.w = temp[0] MAD temp[9].xyz, -src0.www, src0.111, src0.000 MAD temp[9].w, -src0.w, src0.1, src0.0 46: BEGIN_TEX; 47: KIL temp[9]; 48: src0.w = temp[1] MAD temp[9].xyz, -src0.www, src0.111, src0.000 MAD temp[9].w, -src0.w, src0.1, src0.0 49: BEGIN_TEX; 50: KIL temp[9]; 51: src0.xyz = temp[0] MAD temp[0].x, src0.x__, src0.1__, -src0.1__ 52: src0.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, src0.x__ 53: src0.xyz = input[4], src1.xyz = temp[6], src2.xyz = temp[0], srcp.xyz = (src1 - src0) CMP temp[4].xy, src0.xy_, srcp.xy_, -src2.xx_ 54: src0.xyz = input[3], src1.xyz = temp[5], src2.xyz = temp[0] CMP temp[3].xy, src0.xy_, src1.xy_, -src2.xx_ 55: src0.xyz = temp[4] FRC temp[0].x, src0.x__ 56: src0.xyz = temp[4] MAD temp[5].y, src0._y_, src0.11_, src0.00_ 57: src0.xyz = temp[0], src1.xyz = temp[4], srcp.xyz = (src1 - src0) MAD temp[7].x, srcp.x__, src0.11_, src0.00_ 58: src0.xyz = temp[4] MAD temp[6].x, -src0.y__, src0.11_, src0.00_ 59: src0.xyz = temp[4] MAD temp[9].y, src0._y_, src0.11_, src0.00_ 60: src0.xyz = temp[4] MAD temp[15].x, -src0.y__, src0.11_, src0.00_ 61: src0.xyz = temp[7] MAD temp[7].xy, src0.xy_, src0.11_, src0.HH_ 62: src0.xyz = temp[7], src1.xyz = temp[2] MAD temp[2].xy, src0.xy_, src1.xy_, src0.00_ 63: BEGIN_TEX; 64: TEX temp[7].xy, temp[2].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 65: src0.xyz = const[6], src1.xyz = temp[7] SEM_WAIT MAD temp[2].xy, src0.yy_, src1.xy_, src0.00_ 66: src0.xyz = temp[7] FRC temp[16].xy, -src0.xy_ 67: src0.xyz = const[8], src1.xyz = temp[2] MAD temp[2].xy, src0.xx_, src0.11_, -src1.xy_ 68: src0.xyz = temp[0], src1.xyz = temp[4], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[4].xy, srcp.xx_, src0.11_, src2.xy_ 69: src0.xyz = temp[2], src1.xyz = temp[4], src2.xyz = temp[3] MAD temp[6].y, -src0._y_, src0.11_, src0.00_ MAD temp[0].w, src1.y, src0.1, -src2.x 70: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = temp[0] MAD temp[8].x, src0.x__, src0.11_, src1.z__ CMP temp[0].w, src0.1, src0.0, src0.w 71: src0.xyz = temp[4], src1.xyz = temp[3], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[5].x, -src2.y__, src0.11_, src0.00_ CMP temp[1].w, src0.1, src0.0, srcp.y 72: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = temp[2], srcp.xyz = (src1 - src0) MAD temp[15].y, -src2._x_, src0.11_, src0.00_ CMP temp[2].w, src0.1, src0.0, srcp.x 73: src0.xyz = temp[2], src1.xyz = temp[3], src2.xyz = temp[4] MAD temp[9].x, -src0.x__, src0.11_, src0.00_ MAD temp[3].w, src1.y, src0.1, -src2.x 74: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = temp[2] MAD temp[1].x, src0.y__, src0.11_, src1.z__ CMP temp[3].w, src0.1, src0.0, src0.w 75: src0.xyz = temp[6], src1.xyz = temp[5], src2.xyz = temp[4] CMP temp[2].xy, src0.xy_, src1.xy_, -src2.zz_ 76: src0.w = temp[0] MAD temp[3].y, src0._w_, src0.11_, src0.00_ 77: src0.w = temp[1] MAD temp[4].y, src0._w_, src0.11_, src0.00_ 78: src0.xyz = temp[15], src1.xyz = temp[9], src2.xyz = temp[1] CMP temp[5].xy, src0.xy_, src1.xy_, -src2.zz_ 79: src0.w = temp[2] MAD temp[3].x, src0.w__, src0.11_, src0.00_ 80: src0.w = temp[3] MAD temp[4].x, src0.w__, src0.11_, src0.00_ 81: src0.xyz = temp[8] MAD temp[6].xy, src0.xy_, src0.11_, src0.HH_ 82: src0.xyz = temp[1] MAD temp[1].xy, src0.xy_, src0.11_, src0.HH_ 83: src0.xyz = temp[3], src1.xyz = temp[4] MAD temp[3].xy, src0.xy_, src1.xy_, src0.00_ 84: src0.xyz = temp[6], src1.xyz = temp[10] MAD temp[4].xy, src0.xy_, src1.xy_, src0.00_ 85: src0.xyz = temp[7], src1.xyz = temp[16], src2.xyz = temp[3], srcp.xyz = (src1 + src0) MAD temp[3].xy, src2.xy_, srcp.xy_, src0.00_ 86: src0.xyz = temp[1], src1.xyz = temp[12], src2.xyz = temp[3] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ MAD temp[0].w, src2.x, src0.1, src2.y 87: src0.w = temp[0] CMP temp[0].x, src0.1__, src0.0__, -|src0.w__| 88: src0.xyz = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ 89: src0.xyz = temp[0] MAD temp[6].xyz, -src0.xxx, src0.111, src0.000 MAD temp[6].w, -src0.x, src0.1, src0.0 90: BEGIN_TEX; 91: TEX temp[4].zw, temp[4].xy__, 2D[1]; 92: TEX temp[1].zw, temp[1].xy__, 2D[1]; 93: KIL temp[6]; 94: src0.xyz = temp[4] SEM_WAIT MAD temp[6].x, src0.z__, src0.11_, src0.00_ 95: src0.w = temp[4] MAD temp[6].y, src0._w_, src0.11_, src0.00_ 96: src0.xyz = temp[1] MAD temp[4].x, src0.z__, src0.11_, src0.00_ 97: src0.w = temp[1] MAD temp[4].y, src0._w_, src0.11_, src0.00_ 98: src0.xyz = const[8], src1.xyz = temp[6] MAD temp[1].xy, src0.yy_, src1.xy_, src0.11_ 99: src0.xyz = const[8], src1.xyz = temp[4] MAD temp[4].xy, src0.yy_, src1.xy_, src0.11_ 100: src0.xyz = temp[1], src1.xyz = temp[5], src2.xyz = temp[11], srcp.xyz = (src1 + src0) MAD temp[1].xy, srcp.xy_, src2.xy_, src0.00_ 101: src0.xyz = temp[4], src1.xyz = temp[2], src2.xyz = temp[13], srcp.xyz = (src1 + src0) MAD temp[2].xy, srcp.xy_, src2.xy_, src0.00_ 102: BEGIN_TEX; 103: TEX temp[1].w, temp[1].xy__, 2D[0]; 104: TEX temp[2].w, temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 105: src0.w = temp[1] SEM_WAIT MAD temp[1].x, src0.w__, src0.11_, src0.00_ 106: src0.w = temp[2] MAD temp[1].y, src0._w_, src0.11_, src0.00_ 107: src0.xyz = temp[1], src1.xyz = temp[3] MAD temp[1].xy, src0.xy_, src1.xy_, src0.00_ 108: src0.xyz = temp[1] MAX temp[0].x, src0.x__, src0.y__ 109: src0.xyz = temp[0] MAD temp[0].x, src0.x__, src0.1__, -src0.H__ 110: src0.xyz = const[8], src1.xyz = temp[0] MAD temp[0].x, src0.z__, src1.x__, src0.H__ 111: src0.xyz = temp[0], src1.xyz = const[0] MAD_SAT temp[0].x, src0.x__, src0.1__, src1.x__ 112: src0.xyz = temp[0], src1.xyz = temp[0] CMP temp[0].x, src0.1__, src0.0__, -|src0.x__| MAD temp[0].w, src1.y, src0.x, src0.0 113: src0.xyz = temp[0], src0.w = temp[0] CMP temp[0].x, src0.0__, src0.1__, -src0.x__ MAD temp[0].w, src0.w, src0.1, src0.0 114: src0.xyz = temp[0] MAD temp[1].xyz, -src0.xxx, src0.111, src0.000 MAD temp[1].w, -src0.x, src0.1, src0.0 115: BEGIN_TEX; 116: KIL temp[1]; 117: src0.xyz = temp[14], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 r300compiler error: compiler/r300_fragprog_emit.c::begin_tex(): Too many texture indirections r300 FP: Compiler Error: compiler/r300_fragprog_emit.c::begin_tex(): Too many texture indirections Using a dummy shader instead. r300: Initial fragment program FRAG DCL OUT[0], COLOR IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[0], IMM[0].xxxy 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate branches' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'emulate loops' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], temp[0].0001; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], none.0001; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], none.0001; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], none.0001; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: MAD color[0].xyz, src0.000, src0.111, src0.000 MAD color[0].w, src0.1, src0.1, src0.0 pc=12************************************* 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