warning: The VAD has been replaced by a hack pending a complete rewrite debug_get_bool_option: RADEON_HYPERZ = FALSE radeon: Successfully grabbed chipset info from kernel! radeon: DRM version: 2.5.0 ID: 0x71c5 GB: 1 Z: 2 radeon: GART size: 509 MB VRAM size: 256 MB radeon: HyperZ: NO debug_get_flags_option: RADEON_DEBUG = 0x4 (vp) debug_get_bool_option: RADEON_NO_TCL = FALSE debug_get_bool_option: GALLIUM_RBUG = FALSE debug_get_option: GALLIUM_TRACE = (null) debug_get_bool_option: GALLIUM_GALAHAD = FALSE debug_get_bool_option: TGSI_PRINT_SANITY = TRUE 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 Mesa: CPU vendor: GenuineIntel Mesa: CPU name: Genuine Intel(R) CPU T2300 @ 1.66GHz Mesa warning: failed to remap index 22 Mesa warning: failed to remap index 23 Mesa warning: failed to remap index 156 Mesa warning: failed to remap index 157 Mesa warning: failed to remap index 158 Mesa warning: failed to remap index 174 Mesa warning: failed to remap index 175 Mesa warning: failed to remap index 176 Mesa warning: failed to remap index 177 Mesa warning: failed to remap index 178 Mesa warning: failed to remap index 179 Mesa warning: failed to remap index 180 Mesa warning: failed to remap index 399 Mesa warning: failed to remap index 400 Mesa warning: failed to remap index 401 Mesa warning: failed to remap index 402 Mesa warning: failed to remap index 403 Mesa warning: failed to remap index 404 Mesa warning: failed to remap index 405 Mesa: Mesa 7.9-devel DEBUG build Aug 10 2010 09:54:29 Mesa warning: software DXTn compression/decompression available debug_get_bool_option: MESA_MVP_DP4 = FALSE debug_get_flags_option: ST_DEBUG = 0x0 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 debug_get_bool_option: DRAW_FSE = FALSE debug_get_bool_option: DRAW_NO_FSE = FALSE debug_get_bool_option: GALLIUM_DUMP_VS = FALSE 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 Mesa warning: software DXTn compression/decompression available 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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: texture_from_handle: The buffer is not large enough. Got: 3715072, Need: 3717120, Info: r300: texture_from_handle: Macro: NO, Micro: YES, Pitch: 1280, Dim: 1280x725x1, LastLevel: 0, Size: 3717120, Format: x8z24_unorm 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 Mesa warning: software DXTn compression/decompression available 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 source conflict resolve # 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 # 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]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: 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 2: 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 3: 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 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 loops # 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 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 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 # 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[7]: Register never used Warning: CONST[21]: Register never used Warning: CONST[5]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..21] DCL TEMP[0..4] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xz, IN[1] 1: MUL TEMP[1], CONST[11], IN[0].yyyy 2: MAD TEMP[2], CONST[10], IN[0].xxxx, TEMP[1] 3: MAD TEMP[1], CONST[12], IN[0].zzzz, TEMP[2] 4: MAD TEMP[3].xyz, CONST[13], IN[0].wwww, TEMP[1] 5: MUL TEMP[2], CONST[15], IN[0].yyyy 6: MAD TEMP[3], CONST[14], IN[0].xxxx, TEMP[2] 7: MAD TEMP[2], CONST[16], IN[0].zzzz, TEMP[3] 8: MAD TEMP[1], CONST[17], IN[0].wwww, TEMP[2] 9: MOV OUT[0], TEMP[1] 10: MOV OUT[1], IN[2] 11: MOV OUT[2], CONST[0] 12: MOV TEMP[1].xyz, CONST[1] 13: MUL TEMP[1].xyz, CONST[19], IN[1].yyyw 14: MAD TEMP[4].xyz, CONST[18], TEMP[0].xxxw, TEMP[1] 15: MAD TEMP[1].xyz, CONST[20], TEMP[0].zzzw, TEMP[4] 16: DP3 TEMP[0].w, TEMP[1], TEMP[1] 17: RSQ TEMP[0].w, TEMP[0].wwww 18: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 19: MOV TEMP[2].xyz, TEMP[3] 20: DP3 TEMP[1].w, TEMP[3], CONST[1] 21: MAX TEMP[0].w, TEMP[1].wwww, IMM[0].xxxx 22: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 23: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[2], const[15], input[0].yyyy; 2: MAD temp[3], const[14], input[0].xxxx, temp[2]; 3: MAD temp[2], const[16], input[0].zzzz, temp[3]; 4: MAD temp[1], const[17], input[0].wwww, temp[2]; 5: MOV temp[5], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[5]; 18: MOV output[4], temp[5]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[1], const[15], input[0].yyyy; 2: MAD temp[2], const[14], input[0].xxxx, temp[1]; 3: MAD temp[1], const[16], input[0].zzzz, temp[2]; 4: MAD temp[1], const[17], input[0].wwww, temp[1]; 5: MOV temp[3], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[2].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[2].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[3]; 18: MOV output[4], temp[3]; Final vertex program code: 0: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d101c2 reg: 14c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 4: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 5: op: 0x00f06003 dst: 3t 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 6: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 7: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 8: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 9: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10242 reg: 18c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 10: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 11: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 12: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 13: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 15: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 16: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 17: 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 18: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV TEMP[0].x, IN[3] 1: MOV TEMP[1].x, IN[4] 2: MOV TEMP[2].xy, CONST[226] 3: MOV TEMP[3].yz, CONST[226].xyyy 4: MOV TEMP[4], CONST[226].yxyy 5: MOV TEMP[5], CONST[226].yyxy 6: MOV TEMP[6], CONST[226].yyyx 7: MOV TEMP[7], CONST[226].xyyy 8: MOV TEMP[8], CONST[226].yxyy 9: MOV TEMP[9], CONST[226].yyxy 10: MOV TEMP[10].w, CONST[226].xxxx 11: BGNLOOP :35 12: SGE TEMP[11].w, TEMP[10].wwww, CONST[226].zzzz 13: IF TEMP[11].wwww :15 14: BRK 15: ENDIF 16: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 17: TRUNC TEMP[5].y, TEMP[5].xxxx 18: ARL ADDR[0].x, TEMP[5].yyyy 19: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 20: ADD TEMP[7], TEMP[7], TEMP[4] 21: MOV TEMP[3].yz, TEMP[7] 22: ADD TEMP[6].x, TEMP[0].xxxx, CONST[226].wwww 23: TRUNC TEMP[6].y, TEMP[6].xxxx 24: ARL ADDR[0].x, TEMP[6].yyyy 25: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 26: ADD TEMP[8], TEMP[8], TEMP[5] 27: MOV TEMP[4], TEMP[8] 28: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].xxxx 29: TRUNC TEMP[2].y, TEMP[2].xxxx 30: ARL ADDR[0].x, TEMP[2].yyyy 31: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 32: ADD TEMP[9], TEMP[9], TEMP[6] 33: MOV TEMP[5], TEMP[9] 34: ADD TEMP[10].w, TEMP[10].wwww, CONST[226].wwww 35: ENDLOOP :11 36: MOV TEMP[0].xyz, TEMP[7] 37: MOV TEMP[1].xyz, TEMP[8] 38: MOV TEMP[11].xyz, TEMP[9] 39: MOV TEMP[2].xyz, TEMP[7] 40: MOV TEMP[12].xyz, TEMP[8] 41: MOV TEMP[13].xyz, TEMP[9] 42: MOV TEMP[4], TEMP[2] 43: MOV TEMP[5], TEMP[12] 44: MOV TEMP[6], TEMP[13] 45: MOV TEMP[3].y, TEMP[7].wwww 46: MOV TEMP[3].z, TEMP[8].wwww 47: MOV TEMP[12].x, TEMP[3].yyyy 48: MOV TEMP[12].y, TEMP[3].zzzw 49: MOV TEMP[12].z, TEMP[9].wwww 50: MOV TEMP[2].xyz, TEMP[12] 51: MOV TEMP[0].xyz, IN[0] 52: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 53: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 54: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 55: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 56: MOV TEMP[2].xyz, TEMP[12] 57: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 58: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 59: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 60: MOV TEMP[12].xyz, TEMP[13] 61: DP3 TEMP[3].y, TEMP[13], TEMP[13] 62: RSQ TEMP[3].y, TEMP[3].yyyy 63: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 64: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 65: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 66: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 67: MOV TEMP[12].xyz, TEMP[13] 68: DP3 TEMP[3].y, TEMP[13], TEMP[13] 69: RSQ TEMP[3].y, TEMP[3].yyyy 70: MUL TEMP[0], CONST[229], TEMP[2].yyyy 71: MAD TEMP[1], CONST[228], TEMP[2].xxxx, TEMP[0] 72: MAD TEMP[0], CONST[230], TEMP[2].zzzz, TEMP[1] 73: MAD TEMP[13], CONST[231], CONST[226].wwww, TEMP[0] 74: MOV TEMP[12].xyz, TEMP[13] 75: MUL TEMP[1], CONST[233], TEMP[2].yyyy 76: MAD TEMP[11], CONST[232], TEMP[2].xxxx, TEMP[1] 77: MAD TEMP[1], CONST[234], TEMP[2].zzzz, TEMP[11] 78: MAD TEMP[0], CONST[235], CONST[226].wwww, TEMP[1] 79: MOV OUT[0], TEMP[0] 80: MOV OUT[1], IN[2] 81: MOV OUT[2], CONST[0] 82: MOV TEMP[0].xyz, CONST[1] 83: MUL TEMP[0].xyz, CONST[237], TEMP[10].yyyw 84: MAD TEMP[2].xyz, CONST[236], TEMP[10].xxxw, TEMP[0] 85: MAD TEMP[0].xyz, CONST[238], TEMP[10].zzzw, TEMP[2] 86: DP3 TEMP[3].y, TEMP[0], TEMP[0] 87: RSQ TEMP[3].y, TEMP[3].yyyy 88: MUL TEMP[11].xyz, TEMP[0], TEMP[3].yyyy 89: MOV TEMP[1].xyz, TEMP[11] 90: DP3 TEMP[3].z, TEMP[11], CONST[1] 91: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 92: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 93: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SGE temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: BRK; 15: ENDIF; 16: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 17: FLR temp[5].y, temp[5].xxxx; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 23: FLR temp[6].y, temp[6].xxxx; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FLR temp[2].y, temp[2].xxxx; 30: ARL addr[0].x, temp[2].yyyy; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].wwww, const[226].wwww; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[2].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[2].yyyy; 71: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 73: MAD temp[13], const[231], const[226].wwww, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[2].yyyy; 76: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 78: MAD temp[0], const[235], const[226].wwww, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[0].xyz, const[237], temp[10].yyyw; 84: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 85: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 86: DP3 temp[3].y, temp[0], temp[0]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[0], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: MOV output[0], temp[14]; 94: MOV output[4], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FLR temp[5].y, temp[5].xxxx; 16: ARL addr[0].x, temp[5].yyyy; 17: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[7], temp[7], temp[4]; 19: MOV temp[3].yz, temp[7]; 20: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 21: FLR temp[6].y, temp[6].xxxx; 22: ARL addr[0].x, temp[6].yyyy; 23: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[8], temp[8], temp[5]; 25: MOV temp[4], temp[8]; 26: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 27: FLR temp[2].y, temp[2].xxxx; 28: ARL addr[0].x, temp[2].yyyy; 29: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 30: ADD temp[9], temp[9], temp[6]; 31: MOV temp[5], temp[9]; 32: ADD temp[10].w, temp[10].wwww, const[226].wwww; 33: ENDIF; 34: ENDLOOP; 35: MOV temp[0].xyz, temp[7]; 36: MOV temp[1].xyz, temp[8]; 37: MOV temp[11].xyz, temp[9]; 38: MOV temp[2].xyz, temp[7]; 39: MOV temp[12].xyz, temp[8]; 40: MOV temp[13].xyz, temp[9]; 41: MOV temp[4], temp[2]; 42: MOV temp[5], temp[12]; 43: MOV temp[6], temp[13]; 44: MOV temp[3].y, temp[7].wwww; 45: MOV temp[3].z, temp[8].wwww; 46: MOV temp[12].x, temp[3].yyyy; 47: MOV temp[12].y, temp[3].zzzw; 48: MOV temp[12].z, temp[9].wwww; 49: MOV temp[2].xyz, temp[12]; 50: MOV temp[0].xyz, input[0]; 51: MUL temp[1].xyz, temp[5], input[0].yyyw; 52: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 53: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 54: ADD temp[12].xyz, temp[13], temp[12]; 55: MOV temp[2].xyz, temp[12]; 56: MUL temp[0].xyz, temp[5], input[1].yyyw; 57: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 58: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 59: MOV temp[12].xyz, temp[13]; 60: DP3 temp[3].y, temp[13], temp[13]; 61: RSQ temp[3].y, temp[3].yyyy; 62: MUL temp[10].xyz, temp[13], temp[3].yyyy; 63: MUL temp[0].xyz, temp[5], input[5].yyyw; 64: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 65: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 66: MOV temp[12].xyz, temp[13]; 67: DP3 temp[3].y, temp[13], temp[13]; 68: RSQ temp[3].y, temp[3].yyyy; 69: MUL temp[0], const[229], temp[2].yyyy; 70: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 71: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 72: MAD temp[13], const[231], const[226].wwww, temp[0]; 73: MOV temp[12].xyz, temp[13]; 74: MUL temp[1], const[233], temp[2].yyyy; 75: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 76: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 77: MAD temp[0], const[235], const[226].wwww, temp[1]; 78: MOV temp[14], temp[0]; 79: MOV output[1], input[2]; 80: MOV output[2], const[0]; 81: MOV temp[0].xyz, const[1]; 82: MUL temp[0].xyz, const[237], temp[10].yyyw; 83: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 84: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 85: DP3 temp[3].y, temp[0], temp[0]; 86: RSQ temp[3].y, temp[3].yyyy; 87: MUL temp[11].xyz, temp[0], temp[3].yyyy; 88: MOV temp[1].xyz, temp[11]; 89: DP3 temp[3].z, temp[11], const[1]; 90: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 91: MUL output[3].xyz, const[3], temp[3].yyyy; 92: MOV output[0], temp[14]; 93: MOV output[4], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FRC temp[15], temp[5].xxxx; 16: ADD temp[5].y, temp[5].xxxx, -temp[15]; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 22: FRC temp[16], temp[6].xxxx; 23: ADD temp[6].y, temp[6].xxxx, -temp[16]; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FRC temp[17], temp[2].xxxx; 30: ADD temp[2].y, temp[2].xxxx, -temp[17]; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[226].wwww; 36: ENDIF; 37: ENDLOOP; 38: MOV temp[0].xyz, temp[7]; 39: MOV temp[1].xyz, temp[8]; 40: MOV temp[11].xyz, temp[9]; 41: MOV temp[2].xyz, temp[7]; 42: MOV temp[12].xyz, temp[8]; 43: MOV temp[13].xyz, temp[9]; 44: MOV temp[4], temp[2]; 45: MOV temp[5], temp[12]; 46: MOV temp[6], temp[13]; 47: MOV temp[3].y, temp[7].wwww; 48: MOV temp[3].z, temp[8].wwww; 49: MOV temp[12].x, temp[3].yyyy; 50: MOV temp[12].y, temp[3].zzzw; 51: MOV temp[12].z, temp[9].wwww; 52: MOV temp[2].xyz, temp[12]; 53: MOV temp[0].xyz, input[0]; 54: MUL temp[1].xyz, temp[5], input[0].yyyw; 55: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 56: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 57: ADD temp[12].xyz, temp[13], temp[12]; 58: MOV temp[2].xyz, temp[12]; 59: MUL temp[0].xyz, temp[5], input[1].yyyw; 60: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 61: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 62: MOV temp[12].xyz, temp[13]; 63: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 64: RSQ temp[3].y, temp[3].yyyy; 65: MUL temp[10].xyz, temp[13], temp[3].yyyy; 66: MUL temp[0].xyz, temp[5], input[5].yyyw; 67: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 68: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 69: MOV temp[12].xyz, temp[13]; 70: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 71: RSQ temp[3].y, temp[3].yyyy; 72: MUL temp[0], const[229], temp[2].yyyy; 73: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 74: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 75: MAD temp[13], const[231], const[226].wwww, temp[0]; 76: MOV temp[12].xyz, temp[13]; 77: MUL temp[1], const[233], temp[2].yyyy; 78: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 79: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 80: MAD temp[0], const[235], const[226].wwww, temp[1]; 81: MOV temp[14], temp[0]; 82: MOV output[1], input[2]; 83: MOV output[2], const[0]; 84: MOV temp[0].xyz, const[1]; 85: MUL temp[0].xyz, const[237], temp[10].yyyw; 86: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 87: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 88: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 89: RSQ temp[3].y, temp[3].yyyy; 90: MUL temp[11].xyz, temp[0], temp[3].yyyy; 91: MOV temp[1].xyz, temp[11]; 92: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 93: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 94: MUL output[3].xyz, const[3], temp[3].yyyy; 95: MOV output[0], temp[14]; 96: MOV output[4], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FRC temp[15], temp[5].xxxx; 16: ADD temp[5].y, temp[5].xxxx, -temp[15]; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 22: FRC temp[16], temp[6].xxxx; 23: ADD temp[6].y, temp[6].xxxx, -temp[16]; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FRC temp[17], temp[2].xxxx; 30: ADD temp[2].y, temp[2].xxxx, -temp[17]; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[226].wwww; 36: ENDIF; 37: ENDLOOP; 38: MOV temp[0].xyz, temp[7]; 39: MOV temp[1].xyz, temp[8]; 40: MOV temp[11].xyz, temp[9]; 41: MOV temp[2].xyz, temp[7]; 42: MOV temp[12].xyz, temp[8]; 43: MOV temp[13].xyz, temp[9]; 44: MOV temp[4], temp[2]; 45: MOV temp[5], temp[12]; 46: MOV temp[6], temp[13]; 47: MOV temp[3].y, temp[7].wwww; 48: MOV temp[3].z, temp[8].wwww; 49: MOV temp[12].x, temp[3].yyyy; 50: MOV temp[12].y, temp[3].zzzw; 51: MOV temp[12].z, temp[9].wwww; 52: MOV temp[2].xyz, temp[12]; 53: MOV temp[0].xyz, input[0]; 54: MUL temp[1].xyz, temp[5], input[0].yyyw; 55: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 56: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 57: ADD temp[12].xyz, temp[13], temp[12]; 58: MOV temp[2].xyz, temp[12]; 59: MUL temp[0].xyz, temp[5], input[1].yyyw; 60: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 61: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 62: MOV temp[12].xyz, temp[13]; 63: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 64: RSQ temp[3].y, temp[3].yyyy; 65: MUL temp[10].xyz, temp[13], temp[3].yyyy; 66: MUL temp[0].xyz, temp[5], input[5].yyyw; 67: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 68: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 69: MOV temp[12].xyz, temp[13]; 70: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 71: RSQ temp[3].y, temp[3].yyyy; 72: MUL temp[0], const[229], temp[2].yyyy; 73: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 74: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 75: MOV temp[18], const[226].wwww; 76: MAD temp[13], const[231], temp[18], temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[2].yyyy; 79: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 81: MOV temp[19], const[226].wwww; 82: MAD temp[0], const[235], temp[19], temp[1]; 83: MOV temp[14], temp[0]; 84: MOV output[1], input[2]; 85: MOV output[2], const[0]; 86: MOV temp[0].xyz, const[1]; 87: MUL temp[0].xyz, const[237], temp[10].yyyw; 88: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 89: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 90: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 91: RSQ temp[3].y, temp[3].yyyy; 92: MUL temp[11].xyz, temp[0], temp[3].yyyy; 93: MOV temp[1].xyz, temp[11]; 94: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 95: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 96: MUL output[3].xyz, const[3], temp[3].yyyy; 97: MOV output[0], temp[14]; 98: MOV output[4], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].x, input[3].x___; 1: MOV temp[1].x, input[4].x___; 2: MOV temp[2].xy, const[226].xy__; 3: MOV temp[4], const[226].yxyy; 4: MOV temp[5], const[226].yyxy; 5: MOV temp[6], const[226].yyyx; 6: MOV temp[7], const[226].xyyy; 7: MOV temp[8], const[226].yxyy; 8: MOV temp[9], const[226].yyxy; 9: MOV temp[10].w, const[226].___x; 10: BGNLOOP; 11: SLT temp[11].w, temp[10].___w, const[226].___z; 12: IF temp[11].w___; 13: ADD temp[5].x, temp[0].x___, const[226].x___; 14: FRC temp[15].y, temp[5]._x__; 15: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 16: ARL addr[0].x, temp[5].y___; 17: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[7], temp[7], temp[4]; 19: ADD temp[6].x, temp[0].x___, const[226].w___; 20: FRC temp[16].y, temp[6]._x__; 21: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 22: ARL addr[0].x, temp[6].y___; 23: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[8], temp[8], temp[5]; 25: MOV temp[4], temp[8]; 26: ADD temp[2].x, temp[0].x___, const[227].x___; 27: FRC temp[17].y, temp[2]._x__; 28: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 29: ARL addr[0].x, temp[2].y___; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].___w, const[226].___w; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[2].xyz, temp[7].xyz_; 37: MOV temp[12].xyz, temp[8].xyz_; 38: MOV temp[13].xyz, temp[9].xyz_; 39: MOV temp[4].xyz, temp[2].xyz_; 40: MOV temp[5].xyz, temp[12].xyz_; 41: MOV temp[6].xyz, temp[13].xyz_; 42: MOV temp[3].y, temp[7]._w__; 43: MOV temp[3].z, temp[8].__w_; 44: MOV temp[12].x, temp[3].y___; 45: MOV temp[12].y, temp[3]._z__; 46: MOV temp[12].z, temp[9].__w_; 47: MOV temp[0].xz, input[0].x_z_; 48: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 49: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 50: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 51: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 52: MOV temp[2].xyz, temp[12].xyz_; 53: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 54: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 55: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 56: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 57: RSQ temp[3].y, temp[3].y___; 58: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 59: MUL temp[1], const[233], temp[2].yyyy; 60: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 61: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 62: MOV temp[19], const[226].wwww; 63: MAD temp[0], const[235], temp[19], temp[1]; 64: MOV temp[14], temp[0]; 65: MOV output[1], input[2]; 66: MOV output[2], const[0]; 67: MUL temp[0].xyz, const[237].xyz_, temp[10].yyy_; 68: MAD temp[2].xyz, const[236].xyz_, temp[10].xxx_, temp[0].xyz_; 69: MAD temp[0].xyz, const[238].xyz_, temp[10].zzz_, temp[2].xyz_; 70: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 71: RSQ temp[3].y, temp[3].y___; 72: MUL temp[11].xyz, temp[0].xyz_, temp[3].yyy_; 73: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 74: MAX temp[3].y, temp[3]._z__, const[226]._x__; 75: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 76: MOV output[0], temp[14]; 77: MOV output[4], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].x, input[3].x___; 1: MOV temp[1].x, input[4].x___; 2: MOV temp[2].xy, const[226].xy__; 3: MOV temp[3], const[226].yxyy; 4: MOV temp[4], const[226].yyxy; 5: MOV temp[5], const[226].yyyx; 6: MOV temp[6], const[226].xyyy; 7: MOV temp[7], const[226].yxyy; 8: MOV temp[8], const[226].yyxy; 9: MOV temp[9].w, const[226].___x; 10: BGNLOOP; 11: SLT temp[10].w, temp[9].___w, const[226].___z; 12: IF temp[10].w___; 13: ADD temp[4].x, temp[0].x___, const[226].x___; 14: FRC temp[11].y, temp[4]._x__; 15: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 16: ARL addr[0].x, temp[4].y___; 17: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[6], temp[6], temp[3]; 19: ADD temp[5].x, temp[0].x___, const[226].w___; 20: FRC temp[12].y, temp[5]._x__; 21: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 22: ARL addr[0].x, temp[5].y___; 23: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[7], temp[7], temp[4]; 25: MOV temp[3], temp[7]; 26: ADD temp[2].x, temp[0].x___, const[227].x___; 27: FRC temp[13].y, temp[2]._x__; 28: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 29: ARL addr[0].x, temp[2].y___; 30: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[8], temp[8], temp[5]; 32: MOV temp[4], temp[8]; 33: ADD temp[9].w, temp[9].___w, const[226].___w; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[2].xyz, temp[6].xyz_; 37: MOV temp[14].xyz, temp[7].xyz_; 38: MOV temp[15].xyz, temp[8].xyz_; 39: MOV temp[3].xyz, temp[2].xyz_; 40: MOV temp[4].xyz, temp[14].xyz_; 41: MOV temp[5].xyz, temp[15].xyz_; 42: MOV temp[6].y, temp[6]._w__; 43: MOV temp[6].z, temp[7].__w_; 44: MOV temp[14].x, temp[6].y___; 45: MOV temp[14].y, temp[6]._z__; 46: MOV temp[14].z, temp[8].__w_; 47: MOV temp[0].xz, input[0].x_z_; 48: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 49: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 50: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 51: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 52: MOV temp[2].xyz, temp[14].xyz_; 53: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 54: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 55: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 56: DP4 temp[6].y, temp[15].xyz0, temp[15].xyz0; 57: RSQ temp[6].y, temp[6].y___; 58: MUL temp[9].xyz, temp[15].xyz_, temp[6].yyy_; 59: MUL temp[1], const[233], temp[2].yyyy; 60: MAD temp[10], const[232], temp[2].xxxx, temp[1]; 61: MAD temp[1], const[234], temp[2].zzzz, temp[10]; 62: MOV temp[3], const[226].wwww; 63: MAD temp[0], const[235], temp[3], temp[1]; 64: MOV temp[1], temp[0]; 65: MOV output[1], input[2]; 66: MOV output[2], const[0]; 67: MUL temp[0].xyz, const[237].xyz_, temp[9].yyy_; 68: MAD temp[2].xyz, const[236].xyz_, temp[9].xxx_, temp[0].xyz_; 69: MAD temp[0].xyz, const[238].xyz_, temp[9].zzz_, temp[2].xyz_; 70: DP4 temp[6].y, temp[0].xyz0, temp[0].xyz0; 71: RSQ temp[6].y, temp[6].y___; 72: MUL temp[10].xyz, temp[0].xyz_, temp[6].yyy_; 73: DP4 temp[6].z, temp[10].xyz0, const[1].xyz0; 74: MAX temp[6].y, temp[6]._z__, const[226]._x__; 75: MUL output[3].xyz, const[3].xyz_, temp[6].yyy_; 76: MOV output[0], temp[1]; 77: MOV output[4], temp[1]; Final vertex program code: 0: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 1: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 2: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 3: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x00bffc42 reg: 226c swiz: U/ U/ U/ Z src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x00858058 dst: 44t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 12: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 13: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 14: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 15: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 16: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 18: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff7c42 reg: 226c swiz: W/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 19: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 20: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 21: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 22: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 25: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c62 reg: 227c swiz: X/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 26: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 27: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 28: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 32: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x00fffc42 reg: 226c swiz: U/ U/ U/ W src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 33: op: 0x0085805b dst: 44t op: ME_PRED_SET_POP src0: 0x00e49580 reg: 172t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 34: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 36: op: 0x0071e003 dst: 15t 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 37: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 38: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 39: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 40: op: 0x0020c003 dst: 6t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 41: op: 0x0040c003 dst: 6t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 42: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff20c0 reg: 6t swiz: Y/ U/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 43: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae0c0 reg: 6t swiz: U/ Z/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 44: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 45: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 46: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 48: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 49: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 50: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 52: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 53: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 54: op: 0x0020c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 55: op: 0x0020c048 dst: 6t op: ME_RECIP_SQRT_DX src0: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 56: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 57: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x00492040 reg: 2t swiz: Y/ Y/ Y/ Y src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 58: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x00000040 reg: 2t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 59: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x00924040 reg: 2t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 60: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00db7c42 reg: 226c swiz: W/ W/ W/ W src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 61: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 62: op: 0x00f02003 dst: 1t 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 63: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 64: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 65: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 66: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 67: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 68: op: 0x0020c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src1: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 69: op: 0x0020c048 dst: 6t op: ME_RECIP_SQRT_DX src0: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 70: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 71: op: 0x0040c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 72: op: 0x0020c007 dst: 6t op: VE_MAXIMUM src0: 0x01fae0c0 reg: 6t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 73: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 74: 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 75: op: 0x00f08203 dst: 4o 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: 0x00000002 LOOP: uw-> 0x000a0021 lw-> 0xffff0009 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[7]: Register never used Warning: CONST[21]: Register never used Warning: CONST[5]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..21] DCL TEMP[0..4] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xz, IN[1] 1: MUL TEMP[1], CONST[11], IN[0].yyyy 2: MAD TEMP[2], CONST[10], IN[0].xxxx, TEMP[1] 3: MAD TEMP[1], CONST[12], IN[0].zzzz, TEMP[2] 4: MAD TEMP[3].xyz, CONST[13], IN[0].wwww, TEMP[1] 5: MUL TEMP[2], CONST[15], IN[0].yyyy 6: MAD TEMP[3], CONST[14], IN[0].xxxx, TEMP[2] 7: MAD TEMP[2], CONST[16], IN[0].zzzz, TEMP[3] 8: MAD TEMP[1], CONST[17], IN[0].wwww, TEMP[2] 9: MOV OUT[0], TEMP[1] 10: MOV OUT[1], IN[2] 11: MOV OUT[2], CONST[0] 12: MOV TEMP[1].xyz, CONST[1] 13: MUL TEMP[1].xyz, CONST[19], IN[1].yyyw 14: MAD TEMP[4].xyz, CONST[18], TEMP[0].xxxw, TEMP[1] 15: MAD TEMP[1].xyz, CONST[20], TEMP[0].zzzw, TEMP[4] 16: DP3 TEMP[0].w, TEMP[1], TEMP[1] 17: RSQ TEMP[0].w, TEMP[0].wwww 18: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 19: MOV TEMP[2].xyz, TEMP[3] 20: DP3 TEMP[1].w, TEMP[3], CONST[1] 21: MAX TEMP[0].w, TEMP[1].wwww, IMM[0].xxxx 22: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 23: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[2], const[15], input[0].yyyy; 2: MAD temp[3], const[14], input[0].xxxx, temp[2]; 3: MAD temp[2], const[16], input[0].zzzz, temp[3]; 4: MAD temp[1], const[17], input[0].wwww, temp[2]; 5: MOV temp[5], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[5]; 18: MOV output[4], temp[5]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[1], const[15], input[0].yyyy; 2: MAD temp[2], const[14], input[0].xxxx, temp[1]; 3: MAD temp[1], const[16], input[0].zzzz, temp[2]; 4: MAD temp[1], const[17], input[0].wwww, temp[1]; 5: MOV temp[3], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[2].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[2].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[3]; 18: MOV output[4], temp[3]; Final vertex program code: 0: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d101c2 reg: 14c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 4: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 5: op: 0x00f06003 dst: 3t 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 6: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 7: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 8: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 9: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10242 reg: 18c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 10: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 11: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 12: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 13: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 15: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 16: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 17: 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 18: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MAD TEMP[2].w, TEMP[1].wwww, CONST[9].xxxx, CONST[9].yyyy 32: MAX TEMP[4].w, TEMP[2].wwww, IMM[0].xxxx 33: MIN TEMP[1].w, TEMP[4].wwww, IMM[0].yyyy 34: MUL TEMP[4].w, TEMP[1].wwww, CONST[9].zzzz 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MAD temp[2].w, temp[1].___w, const[9].___x, const[9].___y; 30: MAX temp[4].w, temp[2].___w, temp[0].___0; 31: MIN temp[1].w, temp[4].___w, temp[0].___1; 32: MUL temp[4].w, temp[1].___w, const[9].___z; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[7]; 35: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MAD temp[2].w, temp[1].___w, const[9].___x, const[9].___y; 30: MAX temp[4].w, temp[2].___w, temp[0].___0; 31: MIN temp[1].w, temp[4].___w, temp[0].___1; 32: MUL temp[4].w, temp[1].___w, const[9].___z; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[5]; 35: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00804004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x003fe122 reg: 9c swiz: U/ U/ U/ X src2: 0x007fe122 reg: 9c swiz: U/ U/ U/ Y 30: op: 0x00808007 dst: 4t op: VE_MAXIMUM src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 31: op: 0x00802008 dst: 1t op: VE_MINIMUM src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x00bfe122 reg: 9c swiz: U/ U/ U/ Z src2: 0x01248122 reg: 9c swiz: 0/ 0/ 0/ 0 33: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 34: 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 35: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV OUT[4], CONST[226] 1: MOV TEMP[0].x, IN[3] 2: MOV TEMP[1].x, IN[4] 3: MOV TEMP[2].xy, CONST[226].xyyy 4: MOV TEMP[3].yz, CONST[226].xyyy 5: MOV TEMP[4], CONST[226].yxyy 6: MOV TEMP[5], CONST[226].yyxy 7: MOV TEMP[6], CONST[226].yyyx 8: MOV TEMP[7], CONST[226].xyyy 9: MOV TEMP[8], CONST[226].yxyy 10: MOV TEMP[9], CONST[226].yyxy 11: MOV TEMP[10].w, CONST[226].xxxx 12: BGNLOOP :36 13: SGE TEMP[11].w, TEMP[10].wwww, CONST[227].xxxx 14: IF TEMP[11].wwww :16 15: BRK 16: ENDIF 17: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 18: TRUNC TEMP[5].y, TEMP[5].xxxx 19: ARL ADDR[0].x, TEMP[5].yyyy 20: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 21: ADD TEMP[7], TEMP[7], TEMP[4] 22: MOV TEMP[3].yz, TEMP[7] 23: ADD TEMP[6].x, TEMP[0].xxxx, CONST[227].yyyy 24: TRUNC TEMP[6].y, TEMP[6].xxxx 25: ARL ADDR[0].x, TEMP[6].yyyy 26: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 27: ADD TEMP[8], TEMP[8], TEMP[5] 28: MOV TEMP[4], TEMP[8] 29: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].zzzz 30: TRUNC TEMP[2].y, TEMP[2].xxxx 31: ARL ADDR[0].x, TEMP[2].yyyy 32: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 33: ADD TEMP[9], TEMP[9], TEMP[6] 34: MOV TEMP[5], TEMP[9] 35: ADD TEMP[10].w, TEMP[10].wwww, CONST[227].yyyy 36: ENDLOOP :12 37: MOV TEMP[0].xyz, TEMP[7] 38: MOV TEMP[1].xyz, TEMP[8] 39: MOV TEMP[11].xyz, TEMP[9] 40: MOV TEMP[2].xyz, TEMP[7] 41: MOV TEMP[12].xyz, TEMP[8] 42: MOV TEMP[13].xyz, TEMP[9] 43: MOV TEMP[4], TEMP[2] 44: MOV TEMP[5], TEMP[12] 45: MOV TEMP[6], TEMP[13] 46: MOV TEMP[3].y, TEMP[7].wwww 47: MOV TEMP[3].z, TEMP[8].wwww 48: MOV TEMP[12].x, TEMP[3].yyyy 49: MOV TEMP[12].y, TEMP[3].zzzw 50: MOV TEMP[12].z, TEMP[9].wwww 51: MOV TEMP[2].xyz, TEMP[12] 52: MOV TEMP[0].xyz, IN[0] 53: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 54: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 55: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 56: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 57: MOV TEMP[7].xyz, TEMP[12] 58: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 59: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 60: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 61: MOV TEMP[12].xyz, TEMP[13] 62: DP3 TEMP[3].y, TEMP[13], TEMP[13] 63: RSQ TEMP[3].y, TEMP[3].yyyy 64: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 65: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 66: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 67: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 68: MOV TEMP[12].xyz, TEMP[13] 69: DP3 TEMP[3].y, TEMP[13], TEMP[13] 70: RSQ TEMP[3].y, TEMP[3].yyyy 71: MUL TEMP[0], CONST[229], TEMP[7].yyyy 72: MAD TEMP[1], CONST[228], TEMP[7].xxxx, TEMP[0] 73: MAD TEMP[0], CONST[230], TEMP[7].zzzz, TEMP[1] 74: MAD TEMP[13], CONST[231], CONST[227].yyyy, TEMP[0] 75: MOV TEMP[12].xyz, TEMP[13] 76: MUL TEMP[1], CONST[233], TEMP[7].yyyy 77: MAD TEMP[11], CONST[232], TEMP[7].xxxx, TEMP[1] 78: MAD TEMP[1], CONST[234], TEMP[7].zzzz, TEMP[11] 79: MAD TEMP[0], CONST[235], CONST[227].yyyy, TEMP[1] 80: MOV OUT[0], TEMP[0] 81: MOV OUT[1], IN[2] 82: MOV OUT[2], CONST[0] 83: MOV TEMP[0].xyz, CONST[1] 84: MUL TEMP[4].xyz, CONST[237], TEMP[10].yyyw 85: MAD TEMP[5].xyz, CONST[236], TEMP[10].xxxw, TEMP[4] 86: MAD TEMP[4].xyz, CONST[238], TEMP[10].zzzw, TEMP[5] 87: DP3 TEMP[3].y, TEMP[4], TEMP[4] 88: RSQ TEMP[3].y, TEMP[3].yyyy 89: MUL TEMP[11].xyz, TEMP[4], TEMP[3].yyyy 90: MOV TEMP[1].xyz, TEMP[11] 91: DP3 TEMP[3].z, TEMP[11], CONST[1] 92: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 93: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 94: DP3 TEMP[12].w, TEMP[13], TEMP[13] 95: RSQ TEMP[2].w, TEMP[12].wwww 96: MUL TEMP[3].z, TEMP[12].wwww, TEMP[2].wwww 97: MOV OUT[4].z, TEMP[3].zyzw 98: DP3 TEMP[0].w, TEMP[12], TEMP[12] 99: RSQ TEMP[12].w, TEMP[0].wwww 100: MUL TEMP[2].w, TEMP[0].wwww, TEMP[12].wwww 101: MAD TEMP[12].w, TEMP[2].wwww, CONST[9].xxxx, CONST[9].yyyy 102: MAX TEMP[0].w, TEMP[12].wwww, CONST[226].xxxx 103: MIN TEMP[2].w, TEMP[0].wwww, CONST[227].yyyy 104: MUL TEMP[0].w, TEMP[2].wwww, CONST[9].zzzz 105: MOV OUT[4].w, TEMP[0].wyzw 106: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SGE temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: BRK; 16: ENDIF; 17: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 18: FLR temp[5].y, temp[5].xxxx; 19: ARL addr[0].x, temp[5].yyyy; 20: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 21: ADD temp[7], temp[7], temp[4]; 22: MOV temp[3].yz, temp[7]; 23: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 24: FLR temp[6].y, temp[6].xxxx; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FLR temp[2].y, temp[2].xxxx; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 36: ENDLOOP; 37: MOV temp[0].xyz, temp[7]; 38: MOV temp[1].xyz, temp[8]; 39: MOV temp[11].xyz, temp[9]; 40: MOV temp[2].xyz, temp[7]; 41: MOV temp[12].xyz, temp[8]; 42: MOV temp[13].xyz, temp[9]; 43: MOV temp[4], temp[2]; 44: MOV temp[5], temp[12]; 45: MOV temp[6], temp[13]; 46: MOV temp[3].y, temp[7].wwww; 47: MOV temp[3].z, temp[8].wwww; 48: MOV temp[12].x, temp[3].yyyy; 49: MOV temp[12].y, temp[3].zzzw; 50: MOV temp[12].z, temp[9].wwww; 51: MOV temp[2].xyz, temp[12]; 52: MOV temp[0].xyz, input[0]; 53: MUL temp[1].xyz, temp[5], input[0].yyyw; 54: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 55: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 56: ADD temp[12].xyz, temp[13], temp[12]; 57: MOV temp[7].xyz, temp[12]; 58: MUL temp[0].xyz, temp[5], input[1].yyyw; 59: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 60: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 61: MOV temp[12].xyz, temp[13]; 62: DP3 temp[3].y, temp[13], temp[13]; 63: RSQ temp[3].y, temp[3].yyyy; 64: MUL temp[10].xyz, temp[13], temp[3].yyyy; 65: MUL temp[0].xyz, temp[5], input[5].yyyw; 66: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 67: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 68: MOV temp[12].xyz, temp[13]; 69: DP3 temp[3].y, temp[13], temp[13]; 70: RSQ temp[3].y, temp[3].yyyy; 71: MUL temp[0], const[229], temp[7].yyyy; 72: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 73: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 74: MAD temp[13], const[231], const[227].yyyy, temp[0]; 75: MOV temp[12].xyz, temp[13]; 76: MUL temp[1], const[233], temp[7].yyyy; 77: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 78: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 79: MAD temp[0], const[235], const[227].yyyy, temp[1]; 80: MOV temp[14], temp[0]; 81: MOV output[1], input[2]; 82: MOV output[2], const[0]; 83: MOV temp[0].xyz, const[1]; 84: MUL temp[4].xyz, const[237], temp[10].yyyw; 85: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 86: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 87: DP3 temp[3].y, temp[4], temp[4]; 88: RSQ temp[3].y, temp[3].yyyy; 89: MUL temp[11].xyz, temp[4], temp[3].yyyy; 90: MOV temp[1].xyz, temp[11]; 91: DP3 temp[3].z, temp[11], const[1]; 92: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 93: MUL output[3].xyz, const[3], temp[3].yyyy; 94: DP3 temp[12].w, temp[13], temp[13]; 95: RSQ temp[2].w, temp[12].wwww; 96: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 97: MOV output[4].z, temp[3].zyzw; 98: DP3 temp[0].w, temp[12], temp[12]; 99: RSQ temp[12].w, temp[0].wwww; 100: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 101: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 102: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 103: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 104: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 105: MOV output[4].w, temp[0].wyzw; 106: MOV output[0], temp[14]; 107: MOV output[5], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FLR temp[5].y, temp[5].xxxx; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 22: FLR temp[6].y, temp[6].xxxx; 23: ARL addr[0].x, temp[6].yyyy; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 28: FLR temp[2].y, temp[2].xxxx; 29: ARL addr[0].x, temp[2].yyyy; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[7].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[7].yyyy; 71: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 73: MAD temp[13], const[231], const[227].yyyy, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[7].yyyy; 76: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 78: MAD temp[0], const[235], const[227].yyyy, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[4].xyz, const[237], temp[10].yyyw; 84: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 85: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 86: DP3 temp[3].y, temp[4], temp[4]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[4], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: DP3 temp[12].w, temp[13], temp[13]; 94: RSQ temp[2].w, temp[12].wwww; 95: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 96: MOV output[4].z, temp[3].zyzw; 97: DP3 temp[0].w, temp[12], temp[12]; 98: RSQ temp[12].w, temp[0].wwww; 99: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 100: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 101: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 102: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 103: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 104: MOV output[4].w, temp[0].wyzw; 105: MOV output[0], temp[14]; 106: MOV output[5], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MAD temp[13], const[231], const[227].yyyy, temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[7].yyyy; 79: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 81: MAD temp[0], const[235], const[227].yyyy, temp[1]; 82: MOV temp[14], temp[0]; 83: MOV output[1], input[2]; 84: MOV output[2], const[0]; 85: MOV temp[0].xyz, const[1]; 86: MUL temp[4].xyz, const[237], temp[10].yyyw; 87: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 88: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 89: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 90: RSQ temp[3].y, temp[3].yyyy; 91: MUL temp[11].xyz, temp[4], temp[3].yyyy; 92: MOV temp[1].xyz, temp[11]; 93: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 94: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 95: MUL output[3].xyz, const[3], temp[3].yyyy; 96: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 97: RSQ temp[2].w, temp[12].wwww; 98: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 99: MOV output[4].z, temp[3].zyzw; 100: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 101: RSQ temp[12].w, temp[0].wwww; 102: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 103: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 104: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 105: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 106: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 107: MOV output[4].w, temp[0].wyzw; 108: MOV output[0], temp[14]; 109: MOV output[5], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MOV temp[18], const[227].yyyy; 77: MAD temp[13], const[231], temp[18], temp[0]; 78: MOV temp[12].xyz, temp[13]; 79: MUL temp[1], const[233], temp[7].yyyy; 80: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 81: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 82: MOV temp[19], const[227].yyyy; 83: MAD temp[0], const[235], temp[19], temp[1]; 84: MOV temp[14], temp[0]; 85: MOV output[1], input[2]; 86: MOV output[2], const[0]; 87: MOV temp[0].xyz, const[1]; 88: MUL temp[4].xyz, const[237], temp[10].yyyw; 89: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 90: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 91: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 92: RSQ temp[3].y, temp[3].yyyy; 93: MUL temp[11].xyz, temp[4], temp[3].yyyy; 94: MOV temp[1].xyz, temp[11]; 95: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 96: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 97: MUL output[3].xyz, const[3], temp[3].yyyy; 98: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 99: RSQ temp[2].w, temp[12].wwww; 100: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 101: MOV output[4].z, temp[3].zyzw; 102: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 103: RSQ temp[12].w, temp[0].wwww; 104: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 105: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 106: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 107: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 108: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 109: MOV output[4].w, temp[0].wyzw; 110: MOV output[0], temp[14]; 111: MOV output[5], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].___w, const[227].___x; 13: IF temp[11].w___; 14: ADD temp[5].x, temp[0].x___, const[226].x___; 15: FRC temp[15].y, temp[5]._x__; 16: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 17: ARL addr[0].x, temp[5].y___; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: ADD temp[6].x, temp[0].x___, const[227].y___; 21: FRC temp[16].y, temp[6]._x__; 22: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 23: ARL addr[0].x, temp[6].y___; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[17].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[7].xyz_; 38: MOV temp[12].xyz, temp[8].xyz_; 39: MOV temp[13].xyz, temp[9].xyz_; 40: MOV temp[4].xyz, temp[2].xyz_; 41: MOV temp[5].xyz, temp[12].xyz_; 42: MOV temp[6].xyz, temp[13].xyz_; 43: MOV temp[3].y, temp[7]._w__; 44: MOV temp[3].z, temp[8].__w_; 45: MOV temp[12].x, temp[3].y___; 46: MOV temp[12].y, temp[3]._z__; 47: MOV temp[12].z, temp[9].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 50: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 52: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 53: MOV temp[7].xyz, temp[12].xyz_; 54: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 58: RSQ temp[3].y, temp[3].y___; 59: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[7].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[7].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[7].zzz_, temp[1].xyz_; 63: MOV temp[18].xyz, const[227].yyy_; 64: MAD temp[13].xyz, const[231].xyz_, temp[18].xyz_, temp[0].xyz_; 65: MOV temp[12].xyz, temp[13].xyz_; 66: MUL temp[1], const[233], temp[7].yyyy; 67: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 69: MOV temp[19], const[227].yyyy; 70: MAD temp[0], const[235], temp[19], temp[1]; 71: MOV temp[14], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[4].xyz, const[237].xyz_, temp[10].yyy_; 75: MAD temp[5].xyz, const[236].xyz_, temp[10].xxx_, temp[4].xyz_; 76: MAD temp[4].xyz, const[238].xyz_, temp[10].zzz_, temp[5].xyz_; 77: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 78: RSQ temp[3].y, temp[3].y___; 79: MUL temp[11].xyz, temp[4].xyz_, temp[3].yyy_; 80: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 81: MAX temp[3].y, temp[3]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 83: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 84: RSQ temp[2].w, temp[12].w___; 85: MUL temp[3].z, temp[12].__w_, temp[2].__w_; 86: MOV output[4].z, temp[3].__z_; 87: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 88: RSQ temp[12].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[12].___w; 90: MAD temp[12].w, temp[2].___w, const[9].___x, const[9].___y; 91: MAX temp[0].w, temp[12].___w, const[226].___x; 92: MIN temp[2].w, temp[0].___w, const[227].___y; 93: MUL temp[0].w, temp[2].___w, const[9].___z; 94: MOV output[4].w, temp[0].___w; 95: MOV output[0], temp[14]; 96: MOV output[5], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[3], const[226].yxyy; 5: MOV temp[4], const[226].yyxy; 6: MOV temp[5], const[226].yyyx; 7: MOV temp[6], const[226].xyyy; 8: MOV temp[7], const[226].yxyy; 9: MOV temp[8], const[226].yyxy; 10: MOV temp[9].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[10].w, temp[9].___w, const[227].___x; 13: IF temp[10].w___; 14: ADD temp[4].x, temp[0].x___, const[226].x___; 15: FRC temp[11].y, temp[4]._x__; 16: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 17: ARL addr[0].x, temp[4].y___; 18: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[6], temp[6], temp[3]; 20: ADD temp[5].x, temp[0].x___, const[227].y___; 21: FRC temp[12].y, temp[5]._x__; 22: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 23: ARL addr[0].x, temp[5].y___; 24: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[7], temp[7], temp[4]; 26: MOV temp[3], temp[7]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[13].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[8], temp[8], temp[5]; 33: MOV temp[4], temp[8]; 34: ADD temp[9].w, temp[9].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[6].xyz_; 38: MOV temp[14].xyz, temp[7].xyz_; 39: MOV temp[15].xyz, temp[8].xyz_; 40: MOV temp[3].xyz, temp[2].xyz_; 41: MOV temp[4].xyz, temp[14].xyz_; 42: MOV temp[5].xyz, temp[15].xyz_; 43: MOV temp[16].y, temp[6]._w__; 44: MOV temp[16].z, temp[7].__w_; 45: MOV temp[14].x, temp[16].y___; 46: MOV temp[14].y, temp[16]._z__; 47: MOV temp[14].z, temp[8].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 50: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 52: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 53: MOV temp[6].xyz, temp[14].xyz_; 54: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[16].y, temp[15].xyz0, temp[15].xyz0; 58: RSQ temp[16].y, temp[16].y___; 59: MUL temp[9].xyz, temp[15].xyz_, temp[16].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[6].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[6].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[6].zzz_, temp[1].xyz_; 63: MOV temp[5].xyz, const[227].yyy_; 64: MAD temp[15].xyz, const[231].xyz_, temp[5].xyz_, temp[0].xyz_; 65: MOV temp[14].xyz, temp[15].xyz_; 66: MUL temp[1], const[233], temp[6].yyyy; 67: MAD temp[10], const[232], temp[6].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[6].zzzz, temp[10]; 69: MOV temp[5], const[227].yyyy; 70: MAD temp[0], const[235], temp[5], temp[1]; 71: MOV temp[1], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[3].xyz, const[237].xyz_, temp[9].yyy_; 75: MAD temp[4].xyz, const[236].xyz_, temp[9].xxx_, temp[3].xyz_; 76: MAD temp[3].xyz, const[238].xyz_, temp[9].zzz_, temp[4].xyz_; 77: DP4 temp[16].y, temp[3].xyz0, temp[3].xyz0; 78: RSQ temp[16].y, temp[16].y___; 79: MUL temp[10].xyz, temp[3].xyz_, temp[16].yyy_; 80: DP4 temp[16].z, temp[10].xyz0, const[1].xyz0; 81: MAX temp[16].y, temp[16]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[16].yyy_; 83: DP4 temp[14].w, temp[15].xyz0, temp[15].xyz0; 84: RSQ temp[2].w, temp[14].w___; 85: MUL temp[16].z, temp[14].__w_, temp[2].__w_; 86: MOV output[4].z, temp[16].__z_; 87: DP4 temp[0].w, temp[14].xyz0, temp[14].xyz0; 88: RSQ temp[14].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[14].___w; 90: MAD temp[14].w, temp[2].___w, const[9].___x, const[9].___y; 91: MAX temp[0].w, temp[14].___w, const[226].___x; 92: MIN temp[2].w, temp[0].___w, const[227].___y; 93: MUL temp[0].w, temp[2].___w, const[9].___z; 94: MOV output[4].w, temp[0].___w; 95: MOV output[0], temp[1]; 96: MOV output[5], temp[1]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 3: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x003ffc62 reg: 227c swiz: U/ U/ U/ X src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 12: op: 0x008f0058 dst: 120t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 13: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 14: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 15: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 16: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff3c62 reg: 227c swiz: Y/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 20: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 21: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 22: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 25: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 26: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff5c62 reg: 227c swiz: Z/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 27: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 28: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 29: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 32: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 33: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 34: op: 0x008f005b dst: 120t op: ME_PRED_SET_POP src0: 0x00e48f00 reg: 120t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 36: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 37: op: 0x0071e003 dst: 15t 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 38: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 39: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 40: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 41: op: 0x00220003 dst: 16t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 42: op: 0x00420003 dst: 16t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 43: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff2200 reg: 16t swiz: Y/ U/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 44: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 45: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 46: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 48: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 49: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 50: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 52: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 53: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 54: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 55: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 56: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 57: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 58: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11ca2 reg: 229c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 59: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d11c82 reg: 228c swiz: X/ Y/ Z/ U src1: 0x01c000c0 reg: 6t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 60: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11cc2 reg: 230c swiz: X/ Y/ Z/ U src1: 0x01d240c0 reg: 6t swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 61: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01c93c62 reg: 227c swiz: Y/ Y/ Y/ U src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 62: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d11ce2 reg: 231c swiz: X/ Y/ Z/ U src1: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 63: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 64: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 65: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 66: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x009240c0 reg: 6t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 67: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00493c62 reg: 227c swiz: Y/ Y/ Y/ Y src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 68: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 69: op: 0x00f02003 dst: 1t 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 70: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 71: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 72: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 73: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 74: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 75: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 76: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 77: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 78: op: 0x00420001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 79: op: 0x00220007 dst: 16t op: VE_MAXIMUM src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 80: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 81: op: 0x0081c001 dst: 14t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 82: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db61c0 reg: 14t swiz: W/ W/ W/ W src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 83: op: 0x00420002 dst: 16t op: VE_MULTIPLY src0: 0x01dfe1c0 reg: 14t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 84: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e200 reg: 16t swiz: U/ U/ Z/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 85: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src1: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 86: op: 0x0081c048 dst: 14t op: ME_RECIP_SQRT_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 87: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 88: op: 0x0081c004 dst: 14t op: VE_MULTIPLY_ADD src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x003fe122 reg: 9c swiz: U/ U/ U/ X src2: 0x007fe122 reg: 9c swiz: U/ U/ U/ Y 89: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src1: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 90: op: 0x00804008 dst: 2t op: VE_MINIMUM src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 91: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00bfe122 reg: 9c swiz: U/ U/ U/ Z src2: 0x01248122 reg: 9c swiz: 0/ 0/ 0/ 0 92: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 93: 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 94: op: 0x00f0a203 dst: 5o 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: 0x00000002 LOOP: uw-> 0x000b0022 lw-> 0xffff000a Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used 0 errors, 7 warnings Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[8]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..5] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MOV TEMP[4].xyz, TEMP[3] 7: MUL TEMP[2], CONST[16], IN[0].yyyy 8: MAD TEMP[3], CONST[15], IN[0].xxxx, TEMP[2] 9: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[3] 10: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 11: MOV OUT[0], TEMP[1] 12: MOV OUT[1], IN[2] 13: MOV OUT[2], CONST[0] 14: MOV TEMP[1].xyz, CONST[1] 15: MUL TEMP[1].xyz, CONST[20], IN[1].yyyw 16: MAD TEMP[5].xyz, CONST[19], TEMP[0].xxxw, TEMP[1] 17: MAD TEMP[1].xyz, CONST[21], TEMP[0].zzzw, TEMP[5] 18: MOV TEMP[5].x, TEMP[1] 19: DP3 TEMP[0].w, TEMP[1], TEMP[1] 20: RSQ TEMP[0].w, TEMP[0].wwww 21: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 22: MOV TEMP[2].xyz, TEMP[3] 23: DP3 TEMP[4].w, TEMP[3], CONST[1] 24: MAX TEMP[0].w, TEMP[4].wwww, IMM[0].xxxx 25: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 26: DP3 TEMP[3].w, TEMP[4], TEMP[4] 27: RSQ TEMP[2].w, TEMP[3].wwww 28: MUL TEMP[4].w, TEMP[3].wwww, TEMP[2].wwww 29: MOV OUT[4].z, TEMP[4].wyww 30: DP3 TEMP[5].x, TEMP[4], TEMP[4] 31: RSQ TEMP[3].w, TEMP[5].xxxx 32: MUL TEMP[2].w, TEMP[5].xxxx, TEMP[3].wwww 33: MAD TEMP[3].w, TEMP[2].wwww, CONST[9].xxxx, CONST[9].yyyy 34: MAX TEMP[5].x, TEMP[3].wwww, IMM[0].xxxx 35: MIN TEMP[2].w, TEMP[5].xxxx, IMM[0].yyyy 36: MUL TEMP[5].x, TEMP[2].wwww, CONST[9].zzzz 37: MOV OUT[4].w, TEMP[5].xyzx 38: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MAD temp[3].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 34: MAX temp[5].x, temp[3].wwww, temp[0].0000; 35: MIN temp[2].w, temp[5].xxxx, temp[0].1111; 36: MUL temp[5].x, temp[2].wwww, const[9].zzzz; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MAD temp[3].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 34: MAX temp[5].x, temp[3].wwww, temp[0].0000; 35: MIN temp[2].w, temp[5].xxxx, temp[0].1111; 36: MUL temp[5].x, temp[2].wwww, const[9].zzzz; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MAD temp[3].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 34: MAX temp[5].x, temp[3].wwww, temp[0].0000; 35: MIN temp[2].w, temp[5].xxxx, temp[0].1111; 36: MUL temp[5].x, temp[2].wwww, const[9].zzzz; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MAD temp[3].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 34: MAX temp[5].x, temp[3].wwww, temp[0].0000; 35: MIN temp[2].w, temp[5].xxxx, temp[0].1111; 36: MUL temp[5].x, temp[2].wwww, const[9].zzzz; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[5].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[5].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[5].x___; 29: MUL temp[2].w, temp[5].___x, temp[3].___w; 30: MAD temp[3].w, temp[2].___w, const[9].___x, const[9].___y; 31: MAX temp[5].x, temp[3].w___, temp[0].0___; 32: MIN temp[2].w, temp[5].___x, temp[0].___1; 33: MUL temp[5].x, temp[2].w___, const[9].z___; 34: MOV output[4].w, temp[5].___x; 35: MOV output[0], temp[6]; 36: MOV output[5], temp[6]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[5], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[6].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[6].x___; 29: MUL temp[2].w, temp[6].___x, temp[3].___w; 30: MAD temp[3].w, temp[2].___w, const[9].___x, const[9].___y; 31: MAX temp[6].x, temp[3].w___, temp[0].0___; 32: MIN temp[2].w, temp[6].___x, temp[0].___1; 33: MUL temp[6].x, temp[2].w___, const[9].z___; 34: MOV output[4].w, temp[6].___x; 35: MOV output[0], temp[5]; 36: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 7: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 8: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 9: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W 10: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 11: op: 0x00f0a003 dst: 5t 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 12: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 13: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 14: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 16: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 17: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 19: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 20: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 21: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 23: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 24: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 25: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 26: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe080 reg: 4t swiz: U/ U/ W/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 27: op: 0x0010c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 28: op: 0x00806048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 29: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 30: op: 0x00806004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x003fe122 reg: 9c swiz: U/ U/ U/ X src2: 0x007fe122 reg: 9c swiz: U/ U/ U/ Y 31: op: 0x0010c007 dst: 6t op: VE_MAXIMUM src0: 0x01ff6060 reg: 3t swiz: W/ U/ U/ U src1: 0x01ff8000 reg: 0t swiz: 0/ U/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00804008 dst: 2t op: VE_MINIMUM src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 33: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x01ff6040 reg: 2t swiz: W/ U/ U/ U src1: 0x01ff4122 reg: 9c swiz: Z/ U/ U/ U src2: 0x01248122 reg: 9c swiz: 0/ 0/ 0/ 0 34: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: 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 36: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MAD TEMP[2].w, TEMP[1].wwww, CONST[9].xxxx, CONST[9].yyyy 32: MAX TEMP[4].w, TEMP[2].wwww, IMM[0].xxxx 33: MIN TEMP[1].w, TEMP[4].wwww, IMM[0].yyyy 34: MUL TEMP[4].w, TEMP[1].wwww, CONST[9].zzzz 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MAD temp[2].w, temp[1].wwww, const[9].xxxx, const[9].yyyy; 32: MAX temp[4].w, temp[2].wwww, temp[0].0000; 33: MIN temp[1].w, temp[4].wwww, temp[0].1111; 34: MUL temp[4].w, temp[1].wwww, const[9].zzzz; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MAD temp[2].w, temp[1].___w, const[9].___x, const[9].___y; 30: MAX temp[4].w, temp[2].___w, temp[0].___0; 31: MIN temp[1].w, temp[4].___w, temp[0].___1; 32: MUL temp[4].w, temp[1].___w, const[9].___z; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[7]; 35: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MAD temp[2].w, temp[1].___w, const[9].___x, const[9].___y; 30: MAX temp[4].w, temp[2].___w, temp[0].___0; 31: MIN temp[1].w, temp[4].___w, temp[0].___1; 32: MUL temp[4].w, temp[1].___w, const[9].___z; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[5]; 35: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00804004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x003fe122 reg: 9c swiz: U/ U/ U/ X src2: 0x007fe122 reg: 9c swiz: U/ U/ U/ Y 30: op: 0x00808007 dst: 4t op: VE_MAXIMUM src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 31: op: 0x00802008 dst: 1t op: VE_MINIMUM src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x00bfe122 reg: 9c swiz: U/ U/ U/ Z src2: 0x01248122 reg: 9c swiz: 0/ 0/ 0/ 0 33: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 34: 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 35: op: 0x00f0a203 dst: 5o 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings Warning: CONST[7]: Register never used Warning: CONST[21]: Register never used Warning: CONST[5]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..21] DCL TEMP[0..4] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xz, IN[1] 1: MUL TEMP[1], CONST[11], IN[0].yyyy 2: MAD TEMP[2], CONST[10], IN[0].xxxx, TEMP[1] 3: MAD TEMP[1], CONST[12], IN[0].zzzz, TEMP[2] 4: MAD TEMP[3].xyz, CONST[13], IN[0].wwww, TEMP[1] 5: MUL TEMP[2], CONST[15], IN[0].yyyy 6: MAD TEMP[3], CONST[14], IN[0].xxxx, TEMP[2] 7: MAD TEMP[2], CONST[16], IN[0].zzzz, TEMP[3] 8: MAD TEMP[1], CONST[17], IN[0].wwww, TEMP[2] 9: MOV OUT[0], TEMP[1] 10: MOV OUT[1], IN[2] 11: MOV OUT[2], CONST[0] 12: MOV TEMP[1].xyz, CONST[1] 13: MUL TEMP[1].xyz, CONST[19], IN[1].yyyw 14: MAD TEMP[4].xyz, CONST[18], TEMP[0].xxxw, TEMP[1] 15: MAD TEMP[1].xyz, CONST[20], TEMP[0].zzzw, TEMP[4] 16: DP3 TEMP[0].w, TEMP[1], TEMP[1] 17: RSQ TEMP[0].w, TEMP[0].wwww 18: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 19: MOV TEMP[2].xyz, TEMP[3] 20: DP3 TEMP[1].w, TEMP[3], CONST[1] 21: MAX TEMP[0].w, TEMP[1].wwww, IMM[0].xxxx 22: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 23: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[2], const[15], input[0].yyyy; 2: MAD temp[3], const[14], input[0].xxxx, temp[2]; 3: MAD temp[2], const[16], input[0].zzzz, temp[3]; 4: MAD temp[1], const[17], input[0].wwww, temp[2]; 5: MOV temp[5], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[5]; 18: MOV output[4], temp[5]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[1], const[15], input[0].yyyy; 2: MAD temp[2], const[14], input[0].xxxx, temp[1]; 3: MAD temp[1], const[16], input[0].zzzz, temp[2]; 4: MAD temp[1], const[17], input[0].wwww, temp[1]; 5: MOV temp[3], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[2].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[2].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[3]; 18: MOV output[4], temp[3]; Final vertex program code: 0: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d101c2 reg: 14c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 4: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 5: op: 0x00f06003 dst: 3t 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 6: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 7: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 8: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 9: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10242 reg: 18c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 10: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 11: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 12: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 13: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 15: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 16: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 17: 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 18: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV TEMP[0].x, IN[3] 1: MOV TEMP[1].x, IN[4] 2: MOV TEMP[2].xy, CONST[226] 3: MOV TEMP[3].yz, CONST[226].xyyy 4: MOV TEMP[4], CONST[226].yxyy 5: MOV TEMP[5], CONST[226].yyxy 6: MOV TEMP[6], CONST[226].yyyx 7: MOV TEMP[7], CONST[226].xyyy 8: MOV TEMP[8], CONST[226].yxyy 9: MOV TEMP[9], CONST[226].yyxy 10: MOV TEMP[10].w, CONST[226].xxxx 11: BGNLOOP :35 12: SGE TEMP[11].w, TEMP[10].wwww, CONST[226].zzzz 13: IF TEMP[11].wwww :15 14: BRK 15: ENDIF 16: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 17: TRUNC TEMP[5].y, TEMP[5].xxxx 18: ARL ADDR[0].x, TEMP[5].yyyy 19: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 20: ADD TEMP[7], TEMP[7], TEMP[4] 21: MOV TEMP[3].yz, TEMP[7] 22: ADD TEMP[6].x, TEMP[0].xxxx, CONST[226].wwww 23: TRUNC TEMP[6].y, TEMP[6].xxxx 24: ARL ADDR[0].x, TEMP[6].yyyy 25: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 26: ADD TEMP[8], TEMP[8], TEMP[5] 27: MOV TEMP[4], TEMP[8] 28: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].xxxx 29: TRUNC TEMP[2].y, TEMP[2].xxxx 30: ARL ADDR[0].x, TEMP[2].yyyy 31: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 32: ADD TEMP[9], TEMP[9], TEMP[6] 33: MOV TEMP[5], TEMP[9] 34: ADD TEMP[10].w, TEMP[10].wwww, CONST[226].wwww 35: ENDLOOP :11 36: MOV TEMP[0].xyz, TEMP[7] 37: MOV TEMP[1].xyz, TEMP[8] 38: MOV TEMP[11].xyz, TEMP[9] 39: MOV TEMP[2].xyz, TEMP[7] 40: MOV TEMP[12].xyz, TEMP[8] 41: MOV TEMP[13].xyz, TEMP[9] 42: MOV TEMP[4], TEMP[2] 43: MOV TEMP[5], TEMP[12] 44: MOV TEMP[6], TEMP[13] 45: MOV TEMP[3].y, TEMP[7].wwww 46: MOV TEMP[3].z, TEMP[8].wwww 47: MOV TEMP[12].x, TEMP[3].yyyy 48: MOV TEMP[12].y, TEMP[3].zzzw 49: MOV TEMP[12].z, TEMP[9].wwww 50: MOV TEMP[2].xyz, TEMP[12] 51: MOV TEMP[0].xyz, IN[0] 52: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 53: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 54: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 55: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 56: MOV TEMP[2].xyz, TEMP[12] 57: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 58: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 59: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 60: MOV TEMP[12].xyz, TEMP[13] 61: DP3 TEMP[3].y, TEMP[13], TEMP[13] 62: RSQ TEMP[3].y, TEMP[3].yyyy 63: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 64: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 65: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 66: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 67: MOV TEMP[12].xyz, TEMP[13] 68: DP3 TEMP[3].y, TEMP[13], TEMP[13] 69: RSQ TEMP[3].y, TEMP[3].yyyy 70: MUL TEMP[0], CONST[229], TEMP[2].yyyy 71: MAD TEMP[1], CONST[228], TEMP[2].xxxx, TEMP[0] 72: MAD TEMP[0], CONST[230], TEMP[2].zzzz, TEMP[1] 73: MAD TEMP[13], CONST[231], CONST[226].wwww, TEMP[0] 74: MOV TEMP[12].xyz, TEMP[13] 75: MUL TEMP[1], CONST[233], TEMP[2].yyyy 76: MAD TEMP[11], CONST[232], TEMP[2].xxxx, TEMP[1] 77: MAD TEMP[1], CONST[234], TEMP[2].zzzz, TEMP[11] 78: MAD TEMP[0], CONST[235], CONST[226].wwww, TEMP[1] 79: MOV OUT[0], TEMP[0] 80: MOV OUT[1], IN[2] 81: MOV OUT[2], CONST[0] 82: MOV TEMP[0].xyz, CONST[1] 83: MUL TEMP[0].xyz, CONST[237], TEMP[10].yyyw 84: MAD TEMP[2].xyz, CONST[236], TEMP[10].xxxw, TEMP[0] 85: MAD TEMP[0].xyz, CONST[238], TEMP[10].zzzw, TEMP[2] 86: DP3 TEMP[3].y, TEMP[0], TEMP[0] 87: RSQ TEMP[3].y, TEMP[3].yyyy 88: MUL TEMP[11].xyz, TEMP[0], TEMP[3].yyyy 89: MOV TEMP[1].xyz, TEMP[11] 90: DP3 TEMP[3].z, TEMP[11], CONST[1] 91: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 92: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 93: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SGE temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: BRK; 15: ENDIF; 16: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 17: FLR temp[5].y, temp[5].xxxx; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 23: FLR temp[6].y, temp[6].xxxx; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FLR temp[2].y, temp[2].xxxx; 30: ARL addr[0].x, temp[2].yyyy; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].wwww, const[226].wwww; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[2].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[2].yyyy; 71: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 73: MAD temp[13], const[231], const[226].wwww, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[2].yyyy; 76: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 78: MAD temp[0], const[235], const[226].wwww, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[0].xyz, const[237], temp[10].yyyw; 84: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 85: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 86: DP3 temp[3].y, temp[0], temp[0]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[0], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: MOV output[0], temp[14]; 94: MOV output[4], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FLR temp[5].y, temp[5].xxxx; 16: ARL addr[0].x, temp[5].yyyy; 17: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[7], temp[7], temp[4]; 19: MOV temp[3].yz, temp[7]; 20: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 21: FLR temp[6].y, temp[6].xxxx; 22: ARL addr[0].x, temp[6].yyyy; 23: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[8], temp[8], temp[5]; 25: MOV temp[4], temp[8]; 26: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 27: FLR temp[2].y, temp[2].xxxx; 28: ARL addr[0].x, temp[2].yyyy; 29: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 30: ADD temp[9], temp[9], temp[6]; 31: MOV temp[5], temp[9]; 32: ADD temp[10].w, temp[10].wwww, const[226].wwww; 33: ENDIF; 34: ENDLOOP; 35: MOV temp[0].xyz, temp[7]; 36: MOV temp[1].xyz, temp[8]; 37: MOV temp[11].xyz, temp[9]; 38: MOV temp[2].xyz, temp[7]; 39: MOV temp[12].xyz, temp[8]; 40: MOV temp[13].xyz, temp[9]; 41: MOV temp[4], temp[2]; 42: MOV temp[5], temp[12]; 43: MOV temp[6], temp[13]; 44: MOV temp[3].y, temp[7].wwww; 45: MOV temp[3].z, temp[8].wwww; 46: MOV temp[12].x, temp[3].yyyy; 47: MOV temp[12].y, temp[3].zzzw; 48: MOV temp[12].z, temp[9].wwww; 49: MOV temp[2].xyz, temp[12]; 50: MOV temp[0].xyz, input[0]; 51: MUL temp[1].xyz, temp[5], input[0].yyyw; 52: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 53: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 54: ADD temp[12].xyz, temp[13], temp[12]; 55: MOV temp[2].xyz, temp[12]; 56: MUL temp[0].xyz, temp[5], input[1].yyyw; 57: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 58: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 59: MOV temp[12].xyz, temp[13]; 60: DP3 temp[3].y, temp[13], temp[13]; 61: RSQ temp[3].y, temp[3].yyyy; 62: MUL temp[10].xyz, temp[13], temp[3].yyyy; 63: MUL temp[0].xyz, temp[5], input[5].yyyw; 64: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 65: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 66: MOV temp[12].xyz, temp[13]; 67: DP3 temp[3].y, temp[13], temp[13]; 68: RSQ temp[3].y, temp[3].yyyy; 69: MUL temp[0], const[229], temp[2].yyyy; 70: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 71: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 72: MAD temp[13], const[231], const[226].wwww, temp[0]; 73: MOV temp[12].xyz, temp[13]; 74: MUL temp[1], const[233], temp[2].yyyy; 75: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 76: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 77: MAD temp[0], const[235], const[226].wwww, temp[1]; 78: MOV temp[14], temp[0]; 79: MOV output[1], input[2]; 80: MOV output[2], const[0]; 81: MOV temp[0].xyz, const[1]; 82: MUL temp[0].xyz, const[237], temp[10].yyyw; 83: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 84: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 85: DP3 temp[3].y, temp[0], temp[0]; 86: RSQ temp[3].y, temp[3].yyyy; 87: MUL temp[11].xyz, temp[0], temp[3].yyyy; 88: MOV temp[1].xyz, temp[11]; 89: DP3 temp[3].z, temp[11], const[1]; 90: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 91: MUL output[3].xyz, const[3], temp[3].yyyy; 92: MOV output[0], temp[14]; 93: MOV output[4], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FRC temp[15], temp[5].xxxx; 16: ADD temp[5].y, temp[5].xxxx, -temp[15]; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 22: FRC temp[16], temp[6].xxxx; 23: ADD temp[6].y, temp[6].xxxx, -temp[16]; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FRC temp[17], temp[2].xxxx; 30: ADD temp[2].y, temp[2].xxxx, -temp[17]; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[226].wwww; 36: ENDIF; 37: ENDLOOP; 38: MOV temp[0].xyz, temp[7]; 39: MOV temp[1].xyz, temp[8]; 40: MOV temp[11].xyz, temp[9]; 41: MOV temp[2].xyz, temp[7]; 42: MOV temp[12].xyz, temp[8]; 43: MOV temp[13].xyz, temp[9]; 44: MOV temp[4], temp[2]; 45: MOV temp[5], temp[12]; 46: MOV temp[6], temp[13]; 47: MOV temp[3].y, temp[7].wwww; 48: MOV temp[3].z, temp[8].wwww; 49: MOV temp[12].x, temp[3].yyyy; 50: MOV temp[12].y, temp[3].zzzw; 51: MOV temp[12].z, temp[9].wwww; 52: MOV temp[2].xyz, temp[12]; 53: MOV temp[0].xyz, input[0]; 54: MUL temp[1].xyz, temp[5], input[0].yyyw; 55: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 56: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 57: ADD temp[12].xyz, temp[13], temp[12]; 58: MOV temp[2].xyz, temp[12]; 59: MUL temp[0].xyz, temp[5], input[1].yyyw; 60: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 61: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 62: MOV temp[12].xyz, temp[13]; 63: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 64: RSQ temp[3].y, temp[3].yyyy; 65: MUL temp[10].xyz, temp[13], temp[3].yyyy; 66: MUL temp[0].xyz, temp[5], input[5].yyyw; 67: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 68: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 69: MOV temp[12].xyz, temp[13]; 70: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 71: RSQ temp[3].y, temp[3].yyyy; 72: MUL temp[0], const[229], temp[2].yyyy; 73: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 74: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 75: MAD temp[13], const[231], const[226].wwww, temp[0]; 76: MOV temp[12].xyz, temp[13]; 77: MUL temp[1], const[233], temp[2].yyyy; 78: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 79: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 80: MAD temp[0], const[235], const[226].wwww, temp[1]; 81: MOV temp[14], temp[0]; 82: MOV output[1], input[2]; 83: MOV output[2], const[0]; 84: MOV temp[0].xyz, const[1]; 85: MUL temp[0].xyz, const[237], temp[10].yyyw; 86: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 87: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 88: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 89: RSQ temp[3].y, temp[3].yyyy; 90: MUL temp[11].xyz, temp[0], temp[3].yyyy; 91: MOV temp[1].xyz, temp[11]; 92: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 93: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 94: MUL output[3].xyz, const[3], temp[3].yyyy; 95: MOV output[0], temp[14]; 96: MOV output[4], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].x, input[3]; 1: MOV temp[1].x, input[4]; 2: MOV temp[2].xy, const[226]; 3: MOV temp[3].yz, const[226].xyyy; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].xxxx; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].wwww, const[226].zzzz; 13: IF temp[11].wwww; 14: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 15: FRC temp[15], temp[5].xxxx; 16: ADD temp[5].y, temp[5].xxxx, -temp[15]; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[226].wwww; 22: FRC temp[16], temp[6].xxxx; 23: ADD temp[6].y, temp[6].xxxx, -temp[16]; 24: ARL addr[0].x, temp[6].yyyy; 25: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 26: ADD temp[8], temp[8], temp[5]; 27: MOV temp[4], temp[8]; 28: ADD temp[2].x, temp[0].xxxx, const[227].xxxx; 29: FRC temp[17], temp[2].xxxx; 30: ADD temp[2].y, temp[2].xxxx, -temp[17]; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[226].wwww; 36: ENDIF; 37: ENDLOOP; 38: MOV temp[0].xyz, temp[7]; 39: MOV temp[1].xyz, temp[8]; 40: MOV temp[11].xyz, temp[9]; 41: MOV temp[2].xyz, temp[7]; 42: MOV temp[12].xyz, temp[8]; 43: MOV temp[13].xyz, temp[9]; 44: MOV temp[4], temp[2]; 45: MOV temp[5], temp[12]; 46: MOV temp[6], temp[13]; 47: MOV temp[3].y, temp[7].wwww; 48: MOV temp[3].z, temp[8].wwww; 49: MOV temp[12].x, temp[3].yyyy; 50: MOV temp[12].y, temp[3].zzzw; 51: MOV temp[12].z, temp[9].wwww; 52: MOV temp[2].xyz, temp[12]; 53: MOV temp[0].xyz, input[0]; 54: MUL temp[1].xyz, temp[5], input[0].yyyw; 55: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 56: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 57: ADD temp[12].xyz, temp[13], temp[12]; 58: MOV temp[2].xyz, temp[12]; 59: MUL temp[0].xyz, temp[5], input[1].yyyw; 60: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 61: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 62: MOV temp[12].xyz, temp[13]; 63: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 64: RSQ temp[3].y, temp[3].yyyy; 65: MUL temp[10].xyz, temp[13], temp[3].yyyy; 66: MUL temp[0].xyz, temp[5], input[5].yyyw; 67: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 68: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 69: MOV temp[12].xyz, temp[13]; 70: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 71: RSQ temp[3].y, temp[3].yyyy; 72: MUL temp[0], const[229], temp[2].yyyy; 73: MAD temp[1], const[228], temp[2].xxxx, temp[0]; 74: MAD temp[0], const[230], temp[2].zzzz, temp[1]; 75: MOV temp[18], const[226].wwww; 76: MAD temp[13], const[231], temp[18], temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[2].yyyy; 79: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 81: MOV temp[19], const[226].wwww; 82: MAD temp[0], const[235], temp[19], temp[1]; 83: MOV temp[14], temp[0]; 84: MOV output[1], input[2]; 85: MOV output[2], const[0]; 86: MOV temp[0].xyz, const[1]; 87: MUL temp[0].xyz, const[237], temp[10].yyyw; 88: MAD temp[2].xyz, const[236], temp[10].xxxw, temp[0]; 89: MAD temp[0].xyz, const[238], temp[10].zzzw, temp[2]; 90: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 91: RSQ temp[3].y, temp[3].yyyy; 92: MUL temp[11].xyz, temp[0], temp[3].yyyy; 93: MOV temp[1].xyz, temp[11]; 94: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 95: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 96: MUL output[3].xyz, const[3], temp[3].yyyy; 97: MOV output[0], temp[14]; 98: MOV output[4], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].x, input[3].x___; 1: MOV temp[1].x, input[4].x___; 2: MOV temp[2].xy, const[226].xy__; 3: MOV temp[4], const[226].yxyy; 4: MOV temp[5], const[226].yyxy; 5: MOV temp[6], const[226].yyyx; 6: MOV temp[7], const[226].xyyy; 7: MOV temp[8], const[226].yxyy; 8: MOV temp[9], const[226].yyxy; 9: MOV temp[10].w, const[226].___x; 10: BGNLOOP; 11: SLT temp[11].w, temp[10].___w, const[226].___z; 12: IF temp[11].w___; 13: ADD temp[5].x, temp[0].x___, const[226].x___; 14: FRC temp[15].y, temp[5]._x__; 15: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 16: ARL addr[0].x, temp[5].y___; 17: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[7], temp[7], temp[4]; 19: ADD temp[6].x, temp[0].x___, const[226].w___; 20: FRC temp[16].y, temp[6]._x__; 21: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 22: ARL addr[0].x, temp[6].y___; 23: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[8], temp[8], temp[5]; 25: MOV temp[4], temp[8]; 26: ADD temp[2].x, temp[0].x___, const[227].x___; 27: FRC temp[17].y, temp[2]._x__; 28: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 29: ARL addr[0].x, temp[2].y___; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].___w, const[226].___w; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[2].xyz, temp[7].xyz_; 37: MOV temp[12].xyz, temp[8].xyz_; 38: MOV temp[13].xyz, temp[9].xyz_; 39: MOV temp[4].xyz, temp[2].xyz_; 40: MOV temp[5].xyz, temp[12].xyz_; 41: MOV temp[6].xyz, temp[13].xyz_; 42: MOV temp[3].y, temp[7]._w__; 43: MOV temp[3].z, temp[8].__w_; 44: MOV temp[12].x, temp[3].y___; 45: MOV temp[12].y, temp[3]._z__; 46: MOV temp[12].z, temp[9].__w_; 47: MOV temp[0].xz, input[0].x_z_; 48: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 49: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 50: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 51: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 52: MOV temp[2].xyz, temp[12].xyz_; 53: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 54: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 55: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 56: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 57: RSQ temp[3].y, temp[3].y___; 58: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 59: MUL temp[1], const[233], temp[2].yyyy; 60: MAD temp[11], const[232], temp[2].xxxx, temp[1]; 61: MAD temp[1], const[234], temp[2].zzzz, temp[11]; 62: MOV temp[19], const[226].wwww; 63: MAD temp[0], const[235], temp[19], temp[1]; 64: MOV temp[14], temp[0]; 65: MOV output[1], input[2]; 66: MOV output[2], const[0]; 67: MUL temp[0].xyz, const[237].xyz_, temp[10].yyy_; 68: MAD temp[2].xyz, const[236].xyz_, temp[10].xxx_, temp[0].xyz_; 69: MAD temp[0].xyz, const[238].xyz_, temp[10].zzz_, temp[2].xyz_; 70: DP4 temp[3].y, temp[0].xyz0, temp[0].xyz0; 71: RSQ temp[3].y, temp[3].y___; 72: MUL temp[11].xyz, temp[0].xyz_, temp[3].yyy_; 73: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 74: MAX temp[3].y, temp[3]._z__, const[226]._x__; 75: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 76: MOV output[0], temp[14]; 77: MOV output[4], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].x, input[3].x___; 1: MOV temp[1].x, input[4].x___; 2: MOV temp[2].xy, const[226].xy__; 3: MOV temp[3], const[226].yxyy; 4: MOV temp[4], const[226].yyxy; 5: MOV temp[5], const[226].yyyx; 6: MOV temp[6], const[226].xyyy; 7: MOV temp[7], const[226].yxyy; 8: MOV temp[8], const[226].yyxy; 9: MOV temp[9].w, const[226].___x; 10: BGNLOOP; 11: SLT temp[10].w, temp[9].___w, const[226].___z; 12: IF temp[10].w___; 13: ADD temp[4].x, temp[0].x___, const[226].x___; 14: FRC temp[11].y, temp[4]._x__; 15: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 16: ARL addr[0].x, temp[4].y___; 17: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 18: ADD temp[6], temp[6], temp[3]; 19: ADD temp[5].x, temp[0].x___, const[226].w___; 20: FRC temp[12].y, temp[5]._x__; 21: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 22: ARL addr[0].x, temp[5].y___; 23: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 24: ADD temp[7], temp[7], temp[4]; 25: MOV temp[3], temp[7]; 26: ADD temp[2].x, temp[0].x___, const[227].x___; 27: FRC temp[13].y, temp[2]._x__; 28: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 29: ARL addr[0].x, temp[2].y___; 30: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[8], temp[8], temp[5]; 32: MOV temp[4], temp[8]; 33: ADD temp[9].w, temp[9].___w, const[226].___w; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[2].xyz, temp[6].xyz_; 37: MOV temp[14].xyz, temp[7].xyz_; 38: MOV temp[15].xyz, temp[8].xyz_; 39: MOV temp[3].xyz, temp[2].xyz_; 40: MOV temp[4].xyz, temp[14].xyz_; 41: MOV temp[5].xyz, temp[15].xyz_; 42: MOV temp[6].y, temp[6]._w__; 43: MOV temp[6].z, temp[7].__w_; 44: MOV temp[14].x, temp[6].y___; 45: MOV temp[14].y, temp[6]._z__; 46: MOV temp[14].z, temp[8].__w_; 47: MOV temp[0].xz, input[0].x_z_; 48: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 49: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 50: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 51: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 52: MOV temp[2].xyz, temp[14].xyz_; 53: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 54: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 55: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 56: DP4 temp[6].y, temp[15].xyz0, temp[15].xyz0; 57: RSQ temp[6].y, temp[6].y___; 58: MUL temp[9].xyz, temp[15].xyz_, temp[6].yyy_; 59: MUL temp[1], const[233], temp[2].yyyy; 60: MAD temp[10], const[232], temp[2].xxxx, temp[1]; 61: MAD temp[1], const[234], temp[2].zzzz, temp[10]; 62: MOV temp[3], const[226].wwww; 63: MAD temp[0], const[235], temp[3], temp[1]; 64: MOV temp[1], temp[0]; 65: MOV output[1], input[2]; 66: MOV output[2], const[0]; 67: MUL temp[0].xyz, const[237].xyz_, temp[9].yyy_; 68: MAD temp[2].xyz, const[236].xyz_, temp[9].xxx_, temp[0].xyz_; 69: MAD temp[0].xyz, const[238].xyz_, temp[9].zzz_, temp[2].xyz_; 70: DP4 temp[6].y, temp[0].xyz0, temp[0].xyz0; 71: RSQ temp[6].y, temp[6].y___; 72: MUL temp[10].xyz, temp[0].xyz_, temp[6].yyy_; 73: DP4 temp[6].z, temp[10].xyz0, const[1].xyz0; 74: MAX temp[6].y, temp[6]._z__, const[226]._x__; 75: MUL output[3].xyz, const[3].xyz_, temp[6].yyy_; 76: MOV output[0], temp[1]; 77: MOV output[4], temp[1]; Final vertex program code: 0: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 1: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 2: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 3: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x00bffc42 reg: 226c swiz: U/ U/ U/ Z src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x00858058 dst: 44t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 12: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 13: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 14: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 15: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 16: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 18: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff7c42 reg: 226c swiz: W/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 19: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 20: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 21: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 22: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 25: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c62 reg: 227c swiz: X/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 26: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 27: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 28: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 32: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x00fffc42 reg: 226c swiz: U/ U/ U/ W src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 33: op: 0x0085805b dst: 44t op: ME_PRED_SET_POP src0: 0x00e49580 reg: 172t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 34: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 36: op: 0x0071e003 dst: 15t 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 37: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 38: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 39: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 40: op: 0x0020c003 dst: 6t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 41: op: 0x0040c003 dst: 6t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 42: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff20c0 reg: 6t swiz: Y/ U/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 43: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae0c0 reg: 6t swiz: U/ Z/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 44: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 45: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 46: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 48: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 49: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 50: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 52: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 53: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 54: op: 0x0020c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 55: op: 0x0020c048 dst: 6t op: ME_RECIP_SQRT_DX src0: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 56: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 57: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x00492040 reg: 2t swiz: Y/ Y/ Y/ Y src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 58: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x00000040 reg: 2t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 59: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x00924040 reg: 2t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 60: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00db7c42 reg: 226c swiz: W/ W/ W/ W src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 61: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 62: op: 0x00f02003 dst: 1t 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 63: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 64: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 65: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 66: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 67: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 68: op: 0x0020c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src1: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 69: op: 0x0020c048 dst: 6t op: ME_RECIP_SQRT_DX src0: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 70: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 71: op: 0x0040c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 72: op: 0x0020c007 dst: 6t op: VE_MAXIMUM src0: 0x01fae0c0 reg: 6t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 73: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 74: 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 75: op: 0x00f08203 dst: 4o 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: 0x00000002 LOOP: uw-> 0x000a0021 lw-> 0xffff0009 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings Warning: CONST[7]: Register never used Warning: CONST[21]: Register never used Warning: CONST[5]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL CONST[0..21] DCL TEMP[0..4] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MOV TEMP[0].xz, IN[1] 1: MUL TEMP[1], CONST[11], IN[0].yyyy 2: MAD TEMP[2], CONST[10], IN[0].xxxx, TEMP[1] 3: MAD TEMP[1], CONST[12], IN[0].zzzz, TEMP[2] 4: MAD TEMP[3].xyz, CONST[13], IN[0].wwww, TEMP[1] 5: MUL TEMP[2], CONST[15], IN[0].yyyy 6: MAD TEMP[3], CONST[14], IN[0].xxxx, TEMP[2] 7: MAD TEMP[2], CONST[16], IN[0].zzzz, TEMP[3] 8: MAD TEMP[1], CONST[17], IN[0].wwww, TEMP[2] 9: MOV OUT[0], TEMP[1] 10: MOV OUT[1], IN[2] 11: MOV OUT[2], CONST[0] 12: MOV TEMP[1].xyz, CONST[1] 13: MUL TEMP[1].xyz, CONST[19], IN[1].yyyw 14: MAD TEMP[4].xyz, CONST[18], TEMP[0].xxxw, TEMP[1] 15: MAD TEMP[1].xyz, CONST[20], TEMP[0].zzzw, TEMP[4] 16: DP3 TEMP[0].w, TEMP[1], TEMP[1] 17: RSQ TEMP[0].w, TEMP[0].wwww 18: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 19: MOV TEMP[2].xyz, TEMP[3] 20: DP3 TEMP[1].w, TEMP[3], CONST[1] 21: MAX TEMP[0].w, TEMP[1].wwww, IMM[0].xxxx 22: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 23: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP3 temp[0].w, temp[1], temp[1]; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP3 temp[1].w, temp[3], const[1]; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[0].xz, input[1]; 1: MUL temp[1], const[11], input[0].yyyy; 2: MAD temp[2], const[10], input[0].xxxx, temp[1]; 3: MAD temp[1], const[12], input[0].zzzz, temp[2]; 4: MAD temp[3].xyz, const[13], input[0].wwww, temp[1]; 5: MUL temp[2], const[15], input[0].yyyy; 6: MAD temp[3], const[14], input[0].xxxx, temp[2]; 7: MAD temp[2], const[16], input[0].zzzz, temp[3]; 8: MAD temp[1], const[17], input[0].wwww, temp[2]; 9: MOV temp[5], temp[1]; 10: MOV output[1], input[2]; 11: MOV output[2], const[0]; 12: MOV temp[1].xyz, const[1]; 13: MUL temp[1].xyz, const[19], input[1].yyyw; 14: MAD temp[4].xyz, const[18], temp[0].xxxw, temp[1]; 15: MAD temp[1].xyz, const[20], temp[0].zzzw, temp[4]; 16: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 17: RSQ temp[0].w, temp[0].wwww; 18: MUL temp[3].xyz, temp[1], temp[0].wwww; 19: MOV temp[2].xyz, temp[3]; 20: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[1].wwww, temp[0].0000; 22: MUL output[3].xyz, const[3], temp[0].wwww; 23: MOV output[0], temp[5]; 24: MOV output[4], temp[5]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[2], const[15], input[0].yyyy; 2: MAD temp[3], const[14], input[0].xxxx, temp[2]; 3: MAD temp[2], const[16], input[0].zzzz, temp[3]; 4: MAD temp[1], const[17], input[0].wwww, temp[2]; 5: MOV temp[5], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[3].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[5]; 18: MOV output[4], temp[5]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0].xz, input[1].x_z_; 1: MUL temp[1], const[15], input[0].yyyy; 2: MAD temp[2], const[14], input[0].xxxx, temp[1]; 3: MAD temp[1], const[16], input[0].zzzz, temp[2]; 4: MAD temp[1], const[17], input[0].wwww, temp[1]; 5: MOV temp[3], temp[1]; 6: MOV output[1], input[2]; 7: MOV output[2], const[0]; 8: MUL temp[1].xyz, const[19].xyz_, input[1].yyy_; 9: MAD temp[4].xyz, const[18].xyz_, temp[0].xxx_, temp[1].xyz_; 10: MAD temp[1].xyz, const[20].xyz_, temp[0].zzz_, temp[4].xyz_; 11: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 12: RSQ temp[0].w, temp[0].w___; 13: MUL temp[2].xyz, temp[1].xyz_, temp[0].www_; 14: DP4 temp[1].w, temp[2].xyz0, const[1].xyz0; 15: MAX temp[0].w, temp[1].___w, temp[0].___0; 16: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 17: MOV output[0], temp[3]; 18: MOV output[4], temp[3]; Final vertex program code: 0: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d101c2 reg: 14c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 4: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 5: op: 0x00f06003 dst: 3t 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 6: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 7: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 8: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 9: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10242 reg: 18c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 10: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 11: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 12: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 13: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 15: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 16: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 17: 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 18: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[14]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[15]: Register never used Warning: CONST[6]: Register never used Warning: CONST[13]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 14 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV OUT[4], CONST[226] 1: MOV TEMP[0].x, IN[3] 2: MOV TEMP[1].x, IN[4] 3: MOV TEMP[2].xy, CONST[226].xyyy 4: MOV TEMP[3].yz, CONST[226].xyyy 5: MOV TEMP[4], CONST[226].yxyy 6: MOV TEMP[5], CONST[226].yyxy 7: MOV TEMP[6], CONST[226].yyyx 8: MOV TEMP[7], CONST[226].xyyy 9: MOV TEMP[8], CONST[226].yxyy 10: MOV TEMP[9], CONST[226].yyxy 11: MOV TEMP[10].w, CONST[226].xxxx 12: BGNLOOP :36 13: SGE TEMP[11].w, TEMP[10].wwww, CONST[227].xxxx 14: IF TEMP[11].wwww :16 15: BRK 16: ENDIF 17: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 18: TRUNC TEMP[5].y, TEMP[5].xxxx 19: ARL ADDR[0].x, TEMP[5].yyyy 20: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 21: ADD TEMP[7], TEMP[7], TEMP[4] 22: MOV TEMP[3].yz, TEMP[7] 23: ADD TEMP[6].x, TEMP[0].xxxx, CONST[227].yyyy 24: TRUNC TEMP[6].y, TEMP[6].xxxx 25: ARL ADDR[0].x, TEMP[6].yyyy 26: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 27: ADD TEMP[8], TEMP[8], TEMP[5] 28: MOV TEMP[4], TEMP[8] 29: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].zzzz 30: TRUNC TEMP[2].y, TEMP[2].xxxx 31: ARL ADDR[0].x, TEMP[2].yyyy 32: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 33: ADD TEMP[9], TEMP[9], TEMP[6] 34: MOV TEMP[5], TEMP[9] 35: ADD TEMP[10].w, TEMP[10].wwww, CONST[227].yyyy 36: ENDLOOP :12 37: MOV TEMP[0].xyz, TEMP[7] 38: MOV TEMP[1].xyz, TEMP[8] 39: MOV TEMP[11].xyz, TEMP[9] 40: MOV TEMP[2].xyz, TEMP[7] 41: MOV TEMP[12].xyz, TEMP[8] 42: MOV TEMP[13].xyz, TEMP[9] 43: MOV TEMP[4], TEMP[2] 44: MOV TEMP[5], TEMP[12] 45: MOV TEMP[6], TEMP[13] 46: MOV TEMP[3].y, TEMP[7].wwww 47: MOV TEMP[3].z, TEMP[8].wwww 48: MOV TEMP[12].x, TEMP[3].yyyy 49: MOV TEMP[12].y, TEMP[3].zzzw 50: MOV TEMP[12].z, TEMP[9].wwww 51: MOV TEMP[2].xyz, TEMP[12] 52: MOV TEMP[0].xyz, IN[0] 53: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 54: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 55: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 56: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 57: MOV TEMP[7].xyz, TEMP[12] 58: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 59: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 60: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 61: MOV TEMP[12].xyz, TEMP[13] 62: DP3 TEMP[3].y, TEMP[13], TEMP[13] 63: RSQ TEMP[3].y, TEMP[3].yyyy 64: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 65: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 66: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 67: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 68: MOV TEMP[12].xyz, TEMP[13] 69: DP3 TEMP[3].y, TEMP[13], TEMP[13] 70: RSQ TEMP[3].y, TEMP[3].yyyy 71: MUL TEMP[0], CONST[229], TEMP[7].yyyy 72: MAD TEMP[1], CONST[228], TEMP[7].xxxx, TEMP[0] 73: MAD TEMP[0], CONST[230], TEMP[7].zzzz, TEMP[1] 74: MAD TEMP[13], CONST[231], CONST[227].yyyy, TEMP[0] 75: MOV TEMP[12].xyz, TEMP[13] 76: MUL TEMP[1], CONST[233], TEMP[7].yyyy 77: MAD TEMP[11], CONST[232], TEMP[7].xxxx, TEMP[1] 78: MAD TEMP[1], CONST[234], TEMP[7].zzzz, TEMP[11] 79: MAD TEMP[0], CONST[235], CONST[227].yyyy, TEMP[1] 80: MOV OUT[0], TEMP[0] 81: MOV OUT[1], IN[2] 82: MOV OUT[2], CONST[0] 83: MOV TEMP[0].xyz, CONST[1] 84: MUL TEMP[4].xyz, CONST[237], TEMP[10].yyyw 85: MAD TEMP[5].xyz, CONST[236], TEMP[10].xxxw, TEMP[4] 86: MAD TEMP[4].xyz, CONST[238], TEMP[10].zzzw, TEMP[5] 87: DP3 TEMP[3].y, TEMP[4], TEMP[4] 88: RSQ TEMP[3].y, TEMP[3].yyyy 89: MUL TEMP[11].xyz, TEMP[4], TEMP[3].yyyy 90: MOV TEMP[1].xyz, TEMP[11] 91: DP3 TEMP[3].z, TEMP[11], CONST[1] 92: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 93: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 94: DP3 TEMP[12].w, TEMP[13], TEMP[13] 95: RSQ TEMP[2].w, TEMP[12].wwww 96: MUL TEMP[3].z, TEMP[12].wwww, TEMP[2].wwww 97: MOV OUT[4].z, TEMP[3].zyzw 98: DP3 TEMP[0].w, TEMP[12], TEMP[12] 99: RSQ TEMP[12].w, TEMP[0].wwww 100: MUL TEMP[2].w, TEMP[0].wwww, TEMP[12].wwww 101: MAD TEMP[12].w, TEMP[2].wwww, CONST[9].xxxx, CONST[9].yyyy 102: MAX TEMP[0].w, TEMP[12].wwww, CONST[226].xxxx 103: MIN TEMP[2].w, TEMP[0].wwww, CONST[227].yyyy 104: MUL TEMP[0].w, TEMP[2].wwww, CONST[9].zzzz 105: MOV OUT[4].w, TEMP[0].wyzw 106: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SGE temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: BRK; 16: ENDIF; 17: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 18: FLR temp[5].y, temp[5].xxxx; 19: ARL addr[0].x, temp[5].yyyy; 20: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 21: ADD temp[7], temp[7], temp[4]; 22: MOV temp[3].yz, temp[7]; 23: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 24: FLR temp[6].y, temp[6].xxxx; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FLR temp[2].y, temp[2].xxxx; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 36: ENDLOOP; 37: MOV temp[0].xyz, temp[7]; 38: MOV temp[1].xyz, temp[8]; 39: MOV temp[11].xyz, temp[9]; 40: MOV temp[2].xyz, temp[7]; 41: MOV temp[12].xyz, temp[8]; 42: MOV temp[13].xyz, temp[9]; 43: MOV temp[4], temp[2]; 44: MOV temp[5], temp[12]; 45: MOV temp[6], temp[13]; 46: MOV temp[3].y, temp[7].wwww; 47: MOV temp[3].z, temp[8].wwww; 48: MOV temp[12].x, temp[3].yyyy; 49: MOV temp[12].y, temp[3].zzzw; 50: MOV temp[12].z, temp[9].wwww; 51: MOV temp[2].xyz, temp[12]; 52: MOV temp[0].xyz, input[0]; 53: MUL temp[1].xyz, temp[5], input[0].yyyw; 54: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 55: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 56: ADD temp[12].xyz, temp[13], temp[12]; 57: MOV temp[7].xyz, temp[12]; 58: MUL temp[0].xyz, temp[5], input[1].yyyw; 59: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 60: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 61: MOV temp[12].xyz, temp[13]; 62: DP3 temp[3].y, temp[13], temp[13]; 63: RSQ temp[3].y, temp[3].yyyy; 64: MUL temp[10].xyz, temp[13], temp[3].yyyy; 65: MUL temp[0].xyz, temp[5], input[5].yyyw; 66: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 67: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 68: MOV temp[12].xyz, temp[13]; 69: DP3 temp[3].y, temp[13], temp[13]; 70: RSQ temp[3].y, temp[3].yyyy; 71: MUL temp[0], const[229], temp[7].yyyy; 72: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 73: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 74: MAD temp[13], const[231], const[227].yyyy, temp[0]; 75: MOV temp[12].xyz, temp[13]; 76: MUL temp[1], const[233], temp[7].yyyy; 77: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 78: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 79: MAD temp[0], const[235], const[227].yyyy, temp[1]; 80: MOV temp[14], temp[0]; 81: MOV output[1], input[2]; 82: MOV output[2], const[0]; 83: MOV temp[0].xyz, const[1]; 84: MUL temp[4].xyz, const[237], temp[10].yyyw; 85: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 86: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 87: DP3 temp[3].y, temp[4], temp[4]; 88: RSQ temp[3].y, temp[3].yyyy; 89: MUL temp[11].xyz, temp[4], temp[3].yyyy; 90: MOV temp[1].xyz, temp[11]; 91: DP3 temp[3].z, temp[11], const[1]; 92: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 93: MUL output[3].xyz, const[3], temp[3].yyyy; 94: DP3 temp[12].w, temp[13], temp[13]; 95: RSQ temp[2].w, temp[12].wwww; 96: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 97: MOV output[4].z, temp[3].zyzw; 98: DP3 temp[0].w, temp[12], temp[12]; 99: RSQ temp[12].w, temp[0].wwww; 100: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 101: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 102: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 103: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 104: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 105: MOV output[4].w, temp[0].wyzw; 106: MOV output[0], temp[14]; 107: MOV output[5], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FLR temp[5].y, temp[5].xxxx; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 22: FLR temp[6].y, temp[6].xxxx; 23: ARL addr[0].x, temp[6].yyyy; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 28: FLR temp[2].y, temp[2].xxxx; 29: ARL addr[0].x, temp[2].yyyy; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[7].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[7].yyyy; 71: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 73: MAD temp[13], const[231], const[227].yyyy, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[7].yyyy; 76: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 78: MAD temp[0], const[235], const[227].yyyy, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[4].xyz, const[237], temp[10].yyyw; 84: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 85: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 86: DP3 temp[3].y, temp[4], temp[4]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[4], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: DP3 temp[12].w, temp[13], temp[13]; 94: RSQ temp[2].w, temp[12].wwww; 95: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 96: MOV output[4].z, temp[3].zyzw; 97: DP3 temp[0].w, temp[12], temp[12]; 98: RSQ temp[12].w, temp[0].wwww; 99: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 100: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 101: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 102: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 103: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 104: MOV output[4].w, temp[0].wyzw; 105: MOV output[0], temp[14]; 106: MOV output[5], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MAD temp[13], const[231], const[227].yyyy, temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[7].yyyy; 79: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 81: MAD temp[0], const[235], const[227].yyyy, temp[1]; 82: MOV temp[14], temp[0]; 83: MOV output[1], input[2]; 84: MOV output[2], const[0]; 85: MOV temp[0].xyz, const[1]; 86: MUL temp[4].xyz, const[237], temp[10].yyyw; 87: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 88: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 89: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 90: RSQ temp[3].y, temp[3].yyyy; 91: MUL temp[11].xyz, temp[4], temp[3].yyyy; 92: MOV temp[1].xyz, temp[11]; 93: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 94: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 95: MUL output[3].xyz, const[3], temp[3].yyyy; 96: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 97: RSQ temp[2].w, temp[12].wwww; 98: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 99: MOV output[4].z, temp[3].zyzw; 100: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 101: RSQ temp[12].w, temp[0].wwww; 102: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 103: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 104: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 105: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 106: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 107: MOV output[4].w, temp[0].wyzw; 108: MOV output[0], temp[14]; 109: MOV output[5], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MOV temp[18], const[227].yyyy; 77: MAD temp[13], const[231], temp[18], temp[0]; 78: MOV temp[12].xyz, temp[13]; 79: MUL temp[1], const[233], temp[7].yyyy; 80: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 81: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 82: MOV temp[19], const[227].yyyy; 83: MAD temp[0], const[235], temp[19], temp[1]; 84: MOV temp[14], temp[0]; 85: MOV output[1], input[2]; 86: MOV output[2], const[0]; 87: MOV temp[0].xyz, const[1]; 88: MUL temp[4].xyz, const[237], temp[10].yyyw; 89: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 90: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 91: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 92: RSQ temp[3].y, temp[3].yyyy; 93: MUL temp[11].xyz, temp[4], temp[3].yyyy; 94: MOV temp[1].xyz, temp[11]; 95: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 96: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 97: MUL output[3].xyz, const[3], temp[3].yyyy; 98: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 99: RSQ temp[2].w, temp[12].wwww; 100: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 101: MOV output[4].z, temp[3].zyzw; 102: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 103: RSQ temp[12].w, temp[0].wwww; 104: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 105: MAD temp[12].w, temp[2].wwww, const[9].xxxx, const[9].yyyy; 106: MAX temp[0].w, temp[12].wwww, const[226].xxxx; 107: MIN temp[2].w, temp[0].wwww, const[227].yyyy; 108: MUL temp[0].w, temp[2].wwww, const[9].zzzz; 109: MOV output[4].w, temp[0].wyzw; 110: MOV output[0], temp[14]; 111: MOV output[5], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].___w, const[227].___x; 13: IF temp[11].w___; 14: ADD temp[5].x, temp[0].x___, const[226].x___; 15: FRC temp[15].y, temp[5]._x__; 16: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 17: ARL addr[0].x, temp[5].y___; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: ADD temp[6].x, temp[0].x___, const[227].y___; 21: FRC temp[16].y, temp[6]._x__; 22: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 23: ARL addr[0].x, temp[6].y___; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[17].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[7].xyz_; 38: MOV temp[12].xyz, temp[8].xyz_; 39: MOV temp[13].xyz, temp[9].xyz_; 40: MOV temp[4].xyz, temp[2].xyz_; 41: MOV temp[5].xyz, temp[12].xyz_; 42: MOV temp[6].xyz, temp[13].xyz_; 43: MOV temp[3].y, temp[7]._w__; 44: MOV temp[3].z, temp[8].__w_; 45: MOV temp[12].x, temp[3].y___; 46: MOV temp[12].y, temp[3]._z__; 47: MOV temp[12].z, temp[9].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 50: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 52: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 53: MOV temp[7].xyz, temp[12].xyz_; 54: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 58: RSQ temp[3].y, temp[3].y___; 59: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[7].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[7].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[7].zzz_, temp[1].xyz_; 63: MOV temp[18].xyz, const[227].yyy_; 64: MAD temp[13].xyz, const[231].xyz_, temp[18].xyz_, temp[0].xyz_; 65: MOV temp[12].xyz, temp[13].xyz_; 66: MUL temp[1], const[233], temp[7].yyyy; 67: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 69: MOV temp[19], const[227].yyyy; 70: MAD temp[0], const[235], temp[19], temp[1]; 71: MOV temp[14], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[4].xyz, const[237].xyz_, temp[10].yyy_; 75: MAD temp[5].xyz, const[236].xyz_, temp[10].xxx_, temp[4].xyz_; 76: MAD temp[4].xyz, const[238].xyz_, temp[10].zzz_, temp[5].xyz_; 77: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 78: RSQ temp[3].y, temp[3].y___; 79: MUL temp[11].xyz, temp[4].xyz_, temp[3].yyy_; 80: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 81: MAX temp[3].y, temp[3]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 83: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 84: RSQ temp[2].w, temp[12].w___; 85: MUL temp[3].z, temp[12].__w_, temp[2].__w_; 86: MOV output[4].z, temp[3].__z_; 87: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 88: RSQ temp[12].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[12].___w; 90: MAD temp[12].w, temp[2].___w, const[9].___x, const[9].___y; 91: MAX temp[0].w, temp[12].___w, const[226].___x; 92: MIN temp[2].w, temp[0].___w, const[227].___y; 93: MUL temp[0].w, temp[2].___w, const[9].___z; 94: MOV output[4].w, temp[0].___w; 95: MOV output[0], temp[14]; 96: MOV output[5], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[3], const[226].yxyy; 5: MOV temp[4], const[226].yyxy; 6: MOV temp[5], const[226].yyyx; 7: MOV temp[6], const[226].xyyy; 8: MOV temp[7], const[226].yxyy; 9: MOV temp[8], const[226].yyxy; 10: MOV temp[9].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[10].w, temp[9].___w, const[227].___x; 13: IF temp[10].w___; 14: ADD temp[4].x, temp[0].x___, const[226].x___; 15: FRC temp[11].y, temp[4]._x__; 16: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 17: ARL addr[0].x, temp[4].y___; 18: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[6], temp[6], temp[3]; 20: ADD temp[5].x, temp[0].x___, const[227].y___; 21: FRC temp[12].y, temp[5]._x__; 22: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 23: ARL addr[0].x, temp[5].y___; 24: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[7], temp[7], temp[4]; 26: MOV temp[3], temp[7]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[13].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[8], temp[8], temp[5]; 33: MOV temp[4], temp[8]; 34: ADD temp[9].w, temp[9].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[6].xyz_; 38: MOV temp[14].xyz, temp[7].xyz_; 39: MOV temp[15].xyz, temp[8].xyz_; 40: MOV temp[3].xyz, temp[2].xyz_; 41: MOV temp[4].xyz, temp[14].xyz_; 42: MOV temp[5].xyz, temp[15].xyz_; 43: MOV temp[16].y, temp[6]._w__; 44: MOV temp[16].z, temp[7].__w_; 45: MOV temp[14].x, temp[16].y___; 46: MOV temp[14].y, temp[16]._z__; 47: MOV temp[14].z, temp[8].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 50: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 52: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 53: MOV temp[6].xyz, temp[14].xyz_; 54: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[16].y, temp[15].xyz0, temp[15].xyz0; 58: RSQ temp[16].y, temp[16].y___; 59: MUL temp[9].xyz, temp[15].xyz_, temp[16].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[6].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[6].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[6].zzz_, temp[1].xyz_; 63: MOV temp[5].xyz, const[227].yyy_; 64: MAD temp[15].xyz, const[231].xyz_, temp[5].xyz_, temp[0].xyz_; 65: MOV temp[14].xyz, temp[15].xyz_; 66: MUL temp[1], const[233], temp[6].yyyy; 67: MAD temp[10], const[232], temp[6].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[6].zzzz, temp[10]; 69: MOV temp[5], const[227].yyyy; 70: MAD temp[0], const[235], temp[5], temp[1]; 71: MOV temp[1], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[3].xyz, const[237].xyz_, temp[9].yyy_; 75: MAD temp[4].xyz, const[236].xyz_, temp[9].xxx_, temp[3].xyz_; 76: MAD temp[3].xyz, const[238].xyz_, temp[9].zzz_, temp[4].xyz_; 77: DP4 temp[16].y, temp[3].xyz0, temp[3].xyz0; 78: RSQ temp[16].y, temp[16].y___; 79: MUL temp[10].xyz, temp[3].xyz_, temp[16].yyy_; 80: DP4 temp[16].z, temp[10].xyz0, const[1].xyz0; 81: MAX temp[16].y, temp[16]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[16].yyy_; 83: DP4 temp[14].w, temp[15].xyz0, temp[15].xyz0; 84: RSQ temp[2].w, temp[14].w___; 85: MUL temp[16].z, temp[14].__w_, temp[2].__w_; 86: MOV output[4].z, temp[16].__z_; 87: DP4 temp[0].w, temp[14].xyz0, temp[14].xyz0; 88: RSQ temp[14].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[14].___w; 90: MAD temp[14].w, temp[2].___w, const[9].___x, const[9].___y; 91: MAX temp[0].w, temp[14].___w, const[226].___x; 92: MIN temp[2].w, temp[0].___w, const[227].___y; 93: MUL temp[0].w, temp[2].___w, const[9].___z; 94: MOV output[4].w, temp[0].___w; 95: MOV output[0], temp[1]; 96: MOV output[5], temp[1]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 3: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x003ffc62 reg: 227c swiz: U/ U/ U/ X src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 12: op: 0x008f0058 dst: 120t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 13: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 14: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 15: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 16: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff3c62 reg: 227c swiz: Y/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 20: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 21: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 22: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 25: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 26: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff5c62 reg: 227c swiz: Z/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 27: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 28: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 29: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 32: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 33: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 34: op: 0x008f005b dst: 120t op: ME_PRED_SET_POP src0: 0x00e48f00 reg: 120t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 36: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 37: op: 0x0071e003 dst: 15t 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 38: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 39: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 40: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 41: op: 0x00220003 dst: 16t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 42: op: 0x00420003 dst: 16t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 43: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff2200 reg: 16t swiz: Y/ U/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 44: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 45: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 46: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 48: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 49: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 50: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 52: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 53: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 54: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 55: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 56: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 57: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 58: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11ca2 reg: 229c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 59: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d11c82 reg: 228c swiz: X/ Y/ Z/ U src1: 0x01c000c0 reg: 6t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 60: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11cc2 reg: 230c swiz: X/ Y/ Z/ U src1: 0x01d240c0 reg: 6t swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 61: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01c93c62 reg: 227c swiz: Y/ Y/ Y/ U src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 62: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d11ce2 reg: 231c swiz: X/ Y/ Z/ U src1: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 63: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 64: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 65: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 66: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x009240c0 reg: 6t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 67: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00493c62 reg: 227c swiz: Y/ Y/ Y/ Y src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 68: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 69: op: 0x00f02003 dst: 1t 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 70: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 71: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 72: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 73: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 74: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 75: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 76: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 77: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 78: op: 0x00420001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 79: op: 0x00220007 dst: 16t op: VE_MAXIMUM src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 80: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 81: op: 0x0081c001 dst: 14t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 82: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db61c0 reg: 14t swiz: W/ W/ W/ W src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 83: op: 0x00420002 dst: 16t op: VE_MULTIPLY src0: 0x01dfe1c0 reg: 14t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 84: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e200 reg: 16t swiz: U/ U/ Z/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 85: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src1: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 86: op: 0x0081c048 dst: 14t op: ME_RECIP_SQRT_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 87: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 88: op: 0x0081c004 dst: 14t op: VE_MULTIPLY_ADD src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x003fe122 reg: 9c swiz: U/ U/ U/ X src2: 0x007fe122 reg: 9c swiz: U/ U/ U/ Y 89: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src1: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 90: op: 0x00804008 dst: 2t op: VE_MINIMUM src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 91: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00bfe122 reg: 9c swiz: U/ U/ U/ Z src2: 0x01248122 reg: 9c swiz: 0/ 0/ 0/ 0 92: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 93: 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 94: op: 0x00f0a203 dst: 5o 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: 0x00000002 LOOP: uw-> 0x000b0022 lw-> 0xffff000a r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Mesa: User error: GL_INVALID_VALUE in glTexImage3D(level=0, width=512, height=128, depth=16) 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 loops # 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 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 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 # 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used 0 errors, 7 warnings Warning: CONST[0]: Register never used Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used Warning: CONST[25]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..11] DCL CONST[14..25] DCL TEMP[0..7] IMM FLT32 { 0.0000, 255.0000, 2.0000, 1.0000} IMM FLT32 { 255.0000, 2.0000, 1.0000, 3.1416} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0], IN[0] 2: MOV TEMP[1].xyz, IN[1] 3: RCP TEMP[2].w, IMM[1].xxxx 4: MUL TEMP[3].xyz, IN[1], TEMP[2].wwww 5: MUL TEMP[1].xyz, TEMP[3], IMM[1].yyyy 6: SUB TEMP[2].xyz, TEMP[1], IMM[1].zzzz 7: RCP TEMP[2].w, IMM[1].xxxx 8: MUL TEMP[3], IN[2], TEMP[2].wwww 9: MOV TEMP[4].zw, TEMP[3] 10: MOV TEMP[2].w, IMM[1].wwww 11: MOV TEMP[3].xy, TEMP[3] 12: MUL TEMP[1].w, TEMP[4].wwww, IMM[1].wwww 13: ADD TEMP[3].w, CONST[10].xxxx, TEMP[1].wwww 14: MUL TEMP[1].x, TEMP[3].wwww, CONST[11].zzzz 15: SIN TEMP[3].w, TEMP[1].xxxx 16: MUL TEMP[3].z, TEMP[3].wwww, CONST[11].wwww 17: MUL TEMP[1].y, TEMP[4].zzzz, TEMP[3].zzzz 18: ADD TEMP[0].x, IN[0].xxxx, TEMP[1].yyyy 19: MOV TEMP[3].w, TEMP[0].xxxx 20: MUL TEMP[4], CONST[15], TEMP[0].yyyy 21: MAD TEMP[5], CONST[14], TEMP[0].xxxx, TEMP[4] 22: MAD TEMP[4], CONST[16], TEMP[0].zzzz, TEMP[5] 23: MAD TEMP[6].xyz, CONST[17], TEMP[0].wwww, TEMP[4] 24: MOV TEMP[7].xyz, TEMP[6] 25: DP3 TEMP[7].w, TEMP[6], TEMP[6] 26: RSQ TEMP[1].w, TEMP[7].wwww 27: MUL TEMP[1].z, TEMP[7].wwww, TEMP[1].wwww 28: MOV TEMP[1].y, TEMP[1].zzzz 29: MUL TEMP[5], CONST[19], TEMP[0].yyyy 30: MAD TEMP[6], CONST[18], TEMP[0].xxxx, TEMP[5] 31: MAD TEMP[5], CONST[20], TEMP[0].zzzz, TEMP[6] 32: MAD TEMP[4], CONST[21], TEMP[0].wwww, TEMP[5] 33: MOV OUT[0], TEMP[4] 34: MOV TEMP[5].xy, TEMP[3] 35: MOV TEMP[4].xy, TEMP[3] 36: MOV TEMP[4].z, IMM[0].xxxx 37: MOV TEMP[4].w, IMM[0].xxxx 38: MOV OUT[1], TEMP[4] 39: MAD TEMP[1].w, TEMP[1].zzzz, CONST[11].xxxx, CONST[11].yyyy 40: MAX TEMP[4].x, TEMP[1].wwww, IMM[0].xxxx 41: MIN TEMP[7].w, TEMP[4].xxxx, IMM[1].zzzz 42: SUB TEMP[1].z, IMM[1].zzzz, TEMP[7].wwww 43: MOV OUT[2].x, IMM[1].zzzz 44: MOV OUT[2].y, IMM[1].zzzz 45: MOV OUT[2].z, IMM[1].zzzz 46: MOV OUT[2].w, TEMP[1].zyzz 47: MOV TEMP[4].xyz, CONST[1] 48: MUL TEMP[0].xyz, CONST[23], TEMP[2].yyyw 49: MAD TEMP[3].xyz, CONST[22], TEMP[2].xxxw, TEMP[0] 50: MAD TEMP[0].xyz, CONST[24], TEMP[2].zzzw, TEMP[3] 51: DP3 TEMP[1].z, TEMP[0], TEMP[0] 52: RSQ TEMP[1].z, TEMP[1].zzzz 53: MUL TEMP[6].xyz, TEMP[0], TEMP[1].zzzz 54: MOV TEMP[5].xyz, TEMP[6] 55: DP3 TEMP[1].w, TEMP[6], CONST[1] 56: MAX TEMP[1].z, TEMP[1].wwww, IMM[0].xxxx 57: MUL OUT[3].xyz, CONST[3], TEMP[1].zzzz 58: MOV OUT[4].z, TEMP[1].yyyw 59: DP3 TEMP[5].w, TEMP[7], TEMP[7] 60: RSQ TEMP[4].w, TEMP[5].wwww 61: MUL TEMP[1].w, TEMP[5].wwww, TEMP[4].wwww 62: MOV TEMP[4].w, -TEMP[1].wwww 63: MUL TEMP[5].w, -TEMP[1].wwww, CONST[8].xxxx 64: EX2 TEMP[4].w, TEMP[5].wwww 65: SUB TEMP[5].w, IMM[1].zzzz, TEMP[4].wwww 66: MOV OUT[4].w, TEMP[5].wyzw 67: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: SUB temp[2].xyz, temp[1], const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: SIN temp[3].w, temp[1].xxxx; 16: MUL temp[3].z, temp[3].wwww, const[11].wwww; 17: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 18: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 19: MOV temp[3].w, temp[0].xxxx; 20: MUL temp[4], const[15], temp[0].yyyy; 21: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 22: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 23: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 24: MOV temp[7].xyz, temp[6]; 25: DP3 temp[7].w, temp[6], temp[6]; 26: RSQ temp[1].w, temp[7].wwww; 27: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 28: MOV temp[1].y, temp[1].zzzz; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[5].xy, temp[3]; 35: MOV temp[4].xy, temp[3]; 36: MOV temp[4].z, const[26].xxxx; 37: MOV temp[4].w, const[26].xxxx; 38: MOV output[1], temp[4]; 39: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 40: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 41: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 42: SUB temp[1].z, const[27].zzzz, temp[7].wwww; 43: MOV output[2].x, const[27].zzzz; 44: MOV output[2].y, const[27].zzzz; 45: MOV output[2].z, const[27].zzzz; 46: MOV output[2].w, temp[1].zyzz; 47: MOV temp[4].xyz, const[1]; 48: MUL temp[0].xyz, const[23], temp[2].yyyw; 49: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 50: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 51: DP3 temp[1].z, temp[0], temp[0]; 52: RSQ temp[1].z, temp[1].zzzz; 53: MUL temp[6].xyz, temp[0], temp[1].zzzz; 54: MOV temp[5].xyz, temp[6]; 55: DP3 temp[1].w, temp[6], const[1]; 56: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 57: MUL output[3].xyz, const[3], temp[1].zzzz; 58: MOV output[4].z, temp[1].yyyw; 59: DP3 temp[5].w, temp[7], temp[7]; 60: RSQ temp[4].w, temp[5].wwww; 61: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 62: MOV temp[4].w, -temp[1].wwww; 63: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 64: EX2 temp[4].w, temp[5].wwww; 65: SUB temp[5].w, const[27].zzzz, temp[4].wwww; 66: MOV output[4].w, temp[5].wyzw; 67: MOV output[0], temp[8]; 68: MOV output[5], temp[8]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: SUB temp[2].xyz, temp[1], const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: SIN temp[3].w, temp[1].xxxx; 16: MUL temp[3].z, temp[3].wwww, const[11].wwww; 17: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 18: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 19: MOV temp[3].w, temp[0].xxxx; 20: MUL temp[4], const[15], temp[0].yyyy; 21: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 22: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 23: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 24: MOV temp[7].xyz, temp[6]; 25: DP3 temp[7].w, temp[6], temp[6]; 26: RSQ temp[1].w, temp[7].wwww; 27: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 28: MOV temp[1].y, temp[1].zzzz; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[5].xy, temp[3]; 35: MOV temp[4].xy, temp[3]; 36: MOV temp[4].z, const[26].xxxx; 37: MOV temp[4].w, const[26].xxxx; 38: MOV output[1], temp[4]; 39: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 40: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 41: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 42: SUB temp[1].z, const[27].zzzz, temp[7].wwww; 43: MOV output[2].x, const[27].zzzz; 44: MOV output[2].y, const[27].zzzz; 45: MOV output[2].z, const[27].zzzz; 46: MOV output[2].w, temp[1].zyzz; 47: MOV temp[4].xyz, const[1]; 48: MUL temp[0].xyz, const[23], temp[2].yyyw; 49: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 50: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 51: DP3 temp[1].z, temp[0], temp[0]; 52: RSQ temp[1].z, temp[1].zzzz; 53: MUL temp[6].xyz, temp[0], temp[1].zzzz; 54: MOV temp[5].xyz, temp[6]; 55: DP3 temp[1].w, temp[6], const[1]; 56: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 57: MUL output[3].xyz, const[3], temp[1].zzzz; 58: MOV output[4].z, temp[1].yyyw; 59: DP3 temp[5].w, temp[7], temp[7]; 60: RSQ temp[4].w, temp[5].wwww; 61: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 62: MOV temp[4].w, -temp[1].wwww; 63: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 64: EX2 temp[4].w, temp[5].wwww; 65: SUB temp[5].w, const[27].zzzz, temp[4].wwww; 66: MOV output[4].w, temp[5].wyzw; 67: MOV output[0], temp[8]; 68: MOV output[5], temp[8]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: ADD temp[2].xyz, temp[1], -const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: MAD temp[9].w, temp[1].xxxx, const[28].xxxx, const[28].yyyy; 16: FRC temp[9].w, temp[9]; 17: MAD temp[9].w, temp[9], const[28].zzzz, const[28].wwww; 18: SIN temp[3].w, temp[9].wwww; 19: MUL temp[3].z, temp[3].wwww, const[11].wwww; 20: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 21: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 22: MOV temp[3].w, temp[0].xxxx; 23: MUL temp[4], const[15], temp[0].yyyy; 24: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 25: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 26: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 27: MOV temp[7].xyz, temp[6]; 28: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 29: RSQ temp[1].w, temp[7].wwww; 30: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 31: MOV temp[1].y, temp[1].zzzz; 32: MUL temp[5], const[19], temp[0].yyyy; 33: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 34: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 35: MAD temp[4], const[21], temp[0].wwww, temp[5]; 36: MOV temp[8], temp[4]; 37: MOV temp[5].xy, temp[3]; 38: MOV temp[4].xy, temp[3]; 39: MOV temp[4].z, const[26].xxxx; 40: MOV temp[4].w, const[26].xxxx; 41: MOV output[1], temp[4]; 42: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 43: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 44: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 45: ADD temp[1].z, const[27].zzzz, -temp[7].wwww; 46: MOV output[2].x, const[27].zzzz; 47: MOV output[2].y, const[27].zzzz; 48: MOV output[2].z, const[27].zzzz; 49: MOV output[2].w, temp[1].zyzz; 50: MOV temp[4].xyz, const[1]; 51: MUL temp[0].xyz, const[23], temp[2].yyyw; 52: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 53: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 54: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 55: RSQ temp[1].z, temp[1].zzzz; 56: MUL temp[6].xyz, temp[0], temp[1].zzzz; 57: MOV temp[5].xyz, temp[6]; 58: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 59: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 60: MUL output[3].xyz, const[3], temp[1].zzzz; 61: MOV output[4].z, temp[1].yyyw; 62: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 63: RSQ temp[4].w, temp[5].wwww; 64: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 65: MOV temp[4].w, -temp[1].wwww; 66: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 67: EX2 temp[4].w, temp[5].wwww; 68: ADD temp[5].w, const[27].zzzz, -temp[4].wwww; 69: MOV output[4].w, temp[5].wyzw; 70: MOV output[0], temp[8]; 71: MOV output[5], temp[8]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: ADD temp[2].xyz, temp[1], -const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: MAD temp[9].w, temp[1].xxxx, const[28].xxxx, const[28].yyyy; 16: FRC temp[9].w, temp[9]; 17: MAD temp[9].w, temp[9], const[28].zzzz, const[28].wwww; 18: SIN temp[3].w, temp[9].wwww; 19: MUL temp[3].z, temp[3].wwww, const[11].wwww; 20: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 21: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 22: MOV temp[3].w, temp[0].xxxx; 23: MUL temp[4], const[15], temp[0].yyyy; 24: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 25: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 26: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 27: MOV temp[7].xyz, temp[6]; 28: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 29: RSQ temp[1].w, temp[7].wwww; 30: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 31: MOV temp[1].y, temp[1].zzzz; 32: MUL temp[5], const[19], temp[0].yyyy; 33: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 34: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 35: MAD temp[4], const[21], temp[0].wwww, temp[5]; 36: MOV temp[8], temp[4]; 37: MOV temp[5].xy, temp[3]; 38: MOV temp[4].xy, temp[3]; 39: MOV temp[4].z, const[26].xxxx; 40: MOV temp[4].w, const[26].xxxx; 41: MOV output[1], temp[4]; 42: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 43: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 44: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 45: ADD temp[1].z, const[27].zzzz, -temp[7].wwww; 46: MOV output[2].x, const[27].zzzz; 47: MOV output[2].y, const[27].zzzz; 48: MOV output[2].z, const[27].zzzz; 49: MOV output[2].w, temp[1].zyzz; 50: MOV temp[4].xyz, const[1]; 51: MUL temp[0].xyz, const[23], temp[2].yyyw; 52: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 53: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 54: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 55: RSQ temp[1].z, temp[1].zzzz; 56: MUL temp[6].xyz, temp[0], temp[1].zzzz; 57: MOV temp[5].xyz, temp[6]; 58: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 59: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 60: MUL output[3].xyz, const[3], temp[1].zzzz; 61: MOV output[4].z, temp[1].yyyw; 62: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 63: RSQ temp[4].w, temp[5].wwww; 64: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 65: MOV temp[4].w, -temp[1].wwww; 66: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 67: EX2 temp[4].w, temp[5].wwww; 68: ADD temp[5].w, const[27].zzzz, -temp[4].wwww; 69: MOV output[4].w, temp[5].wyzw; 70: MOV output[0], temp[8]; 71: MOV output[5], temp[8]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[26].xx__; 1: MOV temp[0].yzw, input[0]._yzw; 2: RCP temp[2].w, const[27].x___; 3: MUL temp[3].xyz, input[1].xyz_, temp[2].www_; 4: MUL temp[1].xyz, temp[3].xyz_, const[27].yyy_; 5: ADD temp[2].xyz, temp[1].xyz_, -const[27].zzz_; 6: RCP temp[2].w, const[27].x___; 7: MUL temp[3], input[2], temp[2].wwww; 8: MOV temp[4].zw, temp[3].__zw; 9: MOV temp[3].xy, temp[3].xy__; 10: MUL temp[1].w, temp[4].___w, const[27].___w; 11: ADD temp[3].w, const[10].___x, temp[1].___w; 12: MUL temp[1].x, temp[3].w___, const[11].z___; 13: MAD temp[9].w, temp[1].___x, const[28].___x, const[28].___y; 14: FRC temp[9].w, temp[9].___w; 15: MAD temp[9].w, temp[9].___w, const[28].___z, const[28].___w; 16: SIN temp[3].w, temp[9].w___; 17: MUL temp[3].z, temp[3].__w_, const[11].__w_; 18: MUL temp[1].y, temp[4]._z__, temp[3]._z__; 19: ADD temp[0].x, input[0].x___, temp[1].y___; 20: MUL temp[4].xyz, const[15].xyz_, temp[0].yyy_; 21: MAD temp[5].xyz, const[14].xyz_, temp[0].xxx_, temp[4].xyz_; 22: MAD temp[4].xyz, const[16].xyz_, temp[0].zzz_, temp[5].xyz_; 23: MAD temp[6].xyz, const[17].xyz_, temp[0].www_, temp[4].xyz_; 24: MOV temp[7].xyz, temp[6].xyz_; 25: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 26: RSQ temp[1].w, temp[7].w___; 27: MUL temp[1].z, temp[7].__w_, temp[1].__w_; 28: MOV temp[1].y, temp[1]._z__; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[4].xy, temp[3].xy__; 35: MOV temp[4].z, const[26].__x_; 36: MOV temp[4].w, const[26].___x; 37: MOV output[1], temp[4]; 38: MAD temp[1].w, temp[1].___z, const[11].___x, const[11].___y; 39: MAX temp[4].x, temp[1].w___, const[26].x___; 40: MIN temp[7].w, temp[4].___x, const[27].___z; 41: ADD temp[1].z, const[27].__z_, -temp[7].__w_; 42: MOV output[2].x, const[27].z___; 43: MOV output[2].y, const[27]._z__; 44: MOV output[2].z, const[27].__z_; 45: MOV output[2].w, temp[1].___z; 46: MUL temp[0].xyz, const[23].xyz_, temp[2].yyy_; 47: MAD temp[3].xyz, const[22].xyz_, temp[2].xxx_, temp[0].xyz_; 48: MAD temp[0].xyz, const[24].xyz_, temp[2].zzz_, temp[3].xyz_; 49: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 50: RSQ temp[1].z, temp[1].z___; 51: MUL temp[6].xyz, temp[0].xyz_, temp[1].zzz_; 52: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 53: MAX temp[1].z, temp[1].__w_, const[26].__x_; 54: MUL output[3].xyz, const[3].xyz_, temp[1].zzz_; 55: MOV output[4].z, temp[1].__y_; 56: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 57: RSQ temp[4].w, temp[5].w___; 58: MUL temp[1].w, temp[5].___w, temp[4].___w; 59: MUL temp[5].w, -temp[1].___w, const[8].___x; 60: EX2 temp[4].w, temp[5].w___; 61: ADD temp[5].w, const[27].___z, -temp[4].___w; 62: MOV output[4].w, temp[5].___w; 63: MOV output[0], temp[8]; 64: MOV output[5], temp[8]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[26].xx__; 1: MOV temp[0].yzw, input[0]._yzw; 2: RCP temp[1].w, const[27].x___; 3: MUL temp[2].xyz, input[1].xyz_, temp[1].www_; 4: MUL temp[3].xyz, temp[2].xyz_, const[27].yyy_; 5: ADD temp[1].xyz, temp[3].xyz_, -const[27].zzz_; 6: RCP temp[1].w, const[27].x___; 7: MUL temp[2], input[2], temp[1].wwww; 8: MOV temp[4].zw, temp[2].__zw; 9: MOV temp[2].xy, temp[2].xy__; 10: MUL temp[3].w, temp[4].___w, const[27].___w; 11: ADD temp[2].w, const[10].___x, temp[3].___w; 12: MUL temp[3].x, temp[2].w___, const[11].z___; 13: MAD temp[5].w, temp[3].___x, const[28].___x, const[28].___y; 14: FRC temp[5].w, temp[5].___w; 15: MAD temp[5].w, temp[5].___w, const[28].___z, const[28].___w; 16: SIN temp[2].w, temp[5].w___; 17: MUL temp[2].z, temp[2].__w_, const[11].__w_; 18: MUL temp[3].y, temp[4]._z__, temp[2]._z__; 19: ADD temp[0].x, input[0].x___, temp[3].y___; 20: MUL temp[4].xyz, const[15].xyz_, temp[0].yyy_; 21: MAD temp[5].xyz, const[14].xyz_, temp[0].xxx_, temp[4].xyz_; 22: MAD temp[4].xyz, const[16].xyz_, temp[0].zzz_, temp[5].xyz_; 23: MAD temp[6].xyz, const[17].xyz_, temp[0].www_, temp[4].xyz_; 24: MOV temp[7].xyz, temp[6].xyz_; 25: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 26: RSQ temp[3].w, temp[7].w___; 27: MUL temp[3].z, temp[7].__w_, temp[3].__w_; 28: MOV temp[3].y, temp[3]._z__; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[4].xy, temp[2].xy__; 35: MOV temp[4].z, const[26].__x_; 36: MOV temp[4].w, const[26].___x; 37: MOV output[1], temp[4]; 38: MAD temp[3].w, temp[3].___z, const[11].___x, const[11].___y; 39: MAX temp[4].x, temp[3].w___, const[26].x___; 40: MIN temp[7].w, temp[4].___x, const[27].___z; 41: ADD temp[3].z, const[27].__z_, -temp[7].__w_; 42: MOV output[2].x, const[27].z___; 43: MOV output[2].y, const[27]._z__; 44: MOV output[2].z, const[27].__z_; 45: MOV output[2].w, temp[3].___z; 46: MUL temp[0].xyz, const[23].xyz_, temp[1].yyy_; 47: MAD temp[2].xyz, const[22].xyz_, temp[1].xxx_, temp[0].xyz_; 48: MAD temp[0].xyz, const[24].xyz_, temp[1].zzz_, temp[2].xyz_; 49: DP4 temp[3].z, temp[0].xyz0, temp[0].xyz0; 50: RSQ temp[3].z, temp[3].z___; 51: MUL temp[6].xyz, temp[0].xyz_, temp[3].zzz_; 52: DP4 temp[3].w, temp[6].xyz0, const[1].xyz0; 53: MAX temp[3].z, temp[3].__w_, const[26].__x_; 54: MUL output[3].xyz, const[3].xyz_, temp[3].zzz_; 55: MOV output[4].z, temp[3].__y_; 56: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 57: RSQ temp[4].w, temp[5].w___; 58: MUL temp[3].w, temp[5].___w, temp[4].___w; 59: MUL temp[5].w, -temp[3].___w, const[8].___x; 60: EX2 temp[4].w, temp[5].w___; 61: ADD temp[5].w, const[27].___z, -temp[4].___w; 62: MOV output[4].w, temp[5].___w; 63: MOV output[0], temp[8]; 64: MOV output[5], temp[8]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f80342 reg: 26c swiz: X/ X/ U/ U src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 1: op: 0x00e00003 dst: 0t op: VE_ADD src0: 0x00d1e001 reg: 0i swiz: U/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00802046 dst: 1t op: ME_RECIP_DX src0: 0x00000362 reg: 27c swiz: X/ X/ X/ X src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 3: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 4: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01c92362 reg: 27c swiz: Y/ Y/ Y/ U src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 5: op: 0x00702003 dst: 1t op: VE_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x1fd24362 reg: 27c swiz: -Z/-Z/-Z/-U src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 6: op: 0x00802046 dst: 1t op: ME_RECIP_DX src0: 0x00000362 reg: 27c swiz: X/ X/ X/ X src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 7: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 8: op: 0x00c08003 dst: 4t op: VE_ADD src0: 0x00d7e040 reg: 2t swiz: U/ U/ Z/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 9: op: 0x00304003 dst: 2t 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 10: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe362 reg: 27c swiz: U/ U/ U/ W src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 11: op: 0x00804003 dst: 2t op: VE_ADD src0: 0x003fe142 reg: 10c swiz: U/ U/ U/ X src1: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 12: op: 0x00106002 dst: 3t op: VE_MULTIPLY src0: 0x01ff6040 reg: 2t swiz: W/ U/ U/ U src1: 0x01ff4162 reg: 11c swiz: Z/ U/ U/ U src2: 0x01248162 reg: 11c swiz: 0/ 0/ 0/ 0 13: op: 0x0080a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x003fe060 reg: 3t swiz: U/ U/ U/ X src1: 0x003fe382 reg: 28c swiz: U/ U/ U/ X src2: 0x007fe382 reg: 28c swiz: U/ U/ U/ Y 14: op: 0x0080a006 dst: 5t op: VE_FRACTION src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 15: op: 0x0080a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x00bfe382 reg: 28c swiz: U/ U/ U/ Z src2: 0x00ffe382 reg: 28c swiz: U/ U/ U/ W 16: op: 0x00804050 dst: 2t op: ME_SIN src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 17: op: 0x00404002 dst: 2t op: VE_MULTIPLY src0: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src1: 0x01dfe162 reg: 11c swiz: U/ U/ W/ U src2: 0x01248162 reg: 11c swiz: 0/ 0/ 0/ 0 18: op: 0x00206002 dst: 3t op: VE_MULTIPLY src0: 0x01fae080 reg: 4t swiz: U/ Z/ U/ U src1: 0x01fae040 reg: 2t swiz: U/ Z/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 19: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0001 reg: 0i swiz: X/ U/ U/ U src1: 0x01ff2060 reg: 3t swiz: Y/ U/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 20: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d101e2 reg: 15c swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x0070a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 22: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10202 reg: 16c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U 23: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d10222 reg: 17c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 24: op: 0x0070e003 dst: 7t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 25: op: 0x0080e001 dst: 7t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00806048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x00db60e0 reg: 7t swiz: W/ W/ W/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 27: op: 0x00406002 dst: 3t op: VE_MULTIPLY src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 28: op: 0x00206003 dst: 3t op: VE_ADD src0: 0x01fae060 reg: 3t swiz: U/ Z/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 29: op: 0x00f0a002 dst: 5t op: VE_MULTIPLY src0: 0x00d10262 reg: 19c swiz: X/ Y/ Z/ W src1: 0x00492000 reg: 0t swiz: Y/ Y/ Y/ Y src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 30: op: 0x00f0c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W 31: op: 0x00f0a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x00d10282 reg: 20c swiz: X/ Y/ Z/ W src1: 0x00924000 reg: 0t swiz: Z/ Z/ Z/ Z src2: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W 32: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d102a2 reg: 21c swiz: X/ Y/ Z/ W src1: 0x00db6000 reg: 0t swiz: W/ W/ W/ W src2: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W 33: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 34: op: 0x00308003 dst: 4t 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 35: op: 0x00408003 dst: 4t op: VE_ADD src0: 0x01c7e342 reg: 26c swiz: U/ U/ X/ U src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 36: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 37: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 38: op: 0x00806004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src1: 0x003fe162 reg: 11c swiz: U/ U/ U/ X src2: 0x007fe162 reg: 11c swiz: U/ U/ U/ Y 39: op: 0x00108007 dst: 4t op: VE_MAXIMUM src0: 0x01ff6060 reg: 3t swiz: W/ U/ U/ U src1: 0x01ff0342 reg: 26c swiz: X/ U/ U/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 40: op: 0x0080e008 dst: 7t op: VE_MINIMUM src0: 0x003fe080 reg: 4t swiz: U/ U/ U/ X src1: 0x00bfe362 reg: 27c swiz: U/ U/ U/ Z src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 41: op: 0x00406003 dst: 3t op: VE_ADD src0: 0x01d7e362 reg: 27c swiz: U/ U/ Z/ U src1: 0x1fdfe0e0 reg: 7t swiz: -U/-U/-W/-U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 42: op: 0x00104203 dst: 2o op: VE_ADD src0: 0x01ff4362 reg: 27c swiz: Z/ U/ U/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 43: op: 0x00204203 dst: 2o op: VE_ADD src0: 0x01fae362 reg: 27c swiz: U/ Z/ U/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 44: op: 0x00404203 dst: 2o op: VE_ADD src0: 0x01d7e362 reg: 27c swiz: U/ U/ Z/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 45: op: 0x00804203 dst: 2o op: VE_ADD src0: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 46: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d102e2 reg: 23c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 47: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d102c2 reg: 22c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 48: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d10302 reg: 24c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 49: op: 0x00406001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src1: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 50: op: 0x00406048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x00924060 reg: 3t swiz: Z/ Z/ Z/ Z src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U src1: 0x01d24060 reg: 3t swiz: Z/ Z/ Z/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 52: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 53: op: 0x00406007 dst: 3t op: VE_MAXIMUM src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x01c7e342 reg: 26c swiz: U/ U/ X/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 54: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01d24060 reg: 3t swiz: Z/ Z/ Z/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 55: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01cfe060 reg: 3t swiz: U/ U/ Y/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 56: op: 0x0080a001 dst: 5t op: VE_DOT_PRODUCT src0: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src1: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 57: op: 0x00808048 dst: 4t op: ME_RECIP_SQRT_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 58: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 59: op: 0x0080a002 dst: 5t op: VE_MULTIPLY src0: 0x1effe060 reg: 3t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 60: op: 0x0080804b dst: 4t op: ME_EXP_BASE2_FULL_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 61: op: 0x0080a003 dst: 5t op: VE_ADD src0: 0x00bfe362 reg: 27c swiz: U/ U/ U/ Z src1: 0x1effe080 reg: 4t swiz: -U/-U/-U/-W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 62: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 63: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 64: op: 0x00f0a203 dst: 5o op: VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MOV TEMP[2].w, -TEMP[1].wwww 32: MUL TEMP[4].w, -TEMP[1].wwww, CONST[8].xxxx 33: EX2 TEMP[2].w, TEMP[4].wwww 34: SUB TEMP[4].w, IMM[0].yyyy, TEMP[2].wwww 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[7]; 34: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[5]; 34: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 30: op: 0x0080404b dst: 2t op: ME_EXP_BASE2_FULL_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 31: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 32: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 33: 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 34: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used 0 errors, 7 warnings Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..5] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MOV TEMP[4].xyz, TEMP[3] 7: MUL TEMP[2], CONST[16], IN[0].yyyy 8: MAD TEMP[3], CONST[15], IN[0].xxxx, TEMP[2] 9: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[3] 10: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 11: MOV OUT[0], TEMP[1] 12: MOV OUT[1], IN[2] 13: MOV OUT[2], CONST[0] 14: MOV TEMP[1].xyz, CONST[1] 15: MUL TEMP[1].xyz, CONST[20], IN[1].yyyw 16: MAD TEMP[5].xyz, CONST[19], TEMP[0].xxxw, TEMP[1] 17: MAD TEMP[1].xyz, CONST[21], TEMP[0].zzzw, TEMP[5] 18: MOV TEMP[5].x, TEMP[1] 19: DP3 TEMP[0].w, TEMP[1], TEMP[1] 20: RSQ TEMP[0].w, TEMP[0].wwww 21: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 22: MOV TEMP[2].xyz, TEMP[3] 23: DP3 TEMP[4].w, TEMP[3], CONST[1] 24: MAX TEMP[0].w, TEMP[4].wwww, IMM[0].xxxx 25: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 26: DP3 TEMP[3].w, TEMP[4], TEMP[4] 27: RSQ TEMP[2].w, TEMP[3].wwww 28: MUL TEMP[4].w, TEMP[3].wwww, TEMP[2].wwww 29: MOV OUT[4].z, TEMP[4].wyww 30: DP3 TEMP[5].x, TEMP[4], TEMP[4] 31: RSQ TEMP[3].w, TEMP[5].xxxx 32: MUL TEMP[2].w, TEMP[5].xxxx, TEMP[3].wwww 33: MOV TEMP[3].w, -TEMP[2].wwww 34: MUL TEMP[5].x, -TEMP[2].wwww, CONST[8].xxxx 35: EX2 TEMP[3].w, TEMP[5].xxxx 36: SUB TEMP[5].x, IMM[0].yyyy, TEMP[3].wwww 37: MOV OUT[4].w, TEMP[5].xyzx 38: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: SUB temp[5].x, temp[0].1111, temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: SUB temp[5].x, temp[0].1111, temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: ADD temp[5].x, temp[0].1111, -temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: ADD temp[5].x, temp[0].1111, -temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[5].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[5].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[5].x___; 29: MUL temp[2].w, temp[5].___x, temp[3].___w; 30: MUL temp[5].x, -temp[2].w___, const[8].x___; 31: EX2 temp[3].w, temp[5].x___; 32: ADD temp[5].x, temp[0].1___, -temp[3].w___; 33: MOV output[4].w, temp[5].___x; 34: MOV output[0], temp[6]; 35: MOV output[5], temp[6]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[5], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[6].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[6].x___; 29: MUL temp[2].w, temp[6].___x, temp[3].___w; 30: MUL temp[6].x, -temp[2].w___, const[8].x___; 31: EX2 temp[3].w, temp[6].x___; 32: ADD temp[6].x, temp[0].1___, -temp[3].w___; 33: MOV output[4].w, temp[6].___x; 34: MOV output[0], temp[5]; 35: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 7: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 8: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 9: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W 10: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 11: op: 0x00f0a003 dst: 5t 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 12: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 13: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 14: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 16: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 17: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 19: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 20: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 21: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 23: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 24: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 25: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 26: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe080 reg: 4t swiz: U/ U/ W/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 27: op: 0x0010c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 28: op: 0x00806048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 29: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 30: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x1fff6040 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 31: op: 0x0080604b dst: 3t op: ME_EXP_BASE2_FULL_DX src0: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 32: op: 0x0010c003 dst: 6t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff6060 reg: 3t swiz: -W/-U/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 33: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 34: 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 35: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..71] DCL TEMP[0..8] DCL ADDR[0] 0: MOV OUT[4], CONST[58] 1: TRUNC TEMP[0].x, IN[3].xxxx 2: ARL ADDR[0].x, TEMP[0].xxxx 3: MAD TEMP[1], CONST[ADDR[0].x+10], IN[3].yyyy, IN[0] 4: MOV TEMP[2].xz, IN[1] 5: MUL TEMP[3], CONST[60], TEMP[1].yyyy 6: MAD TEMP[4], CONST[59], TEMP[1].xxxx, TEMP[3] 7: MAD TEMP[3], CONST[61], TEMP[1].zzzz, TEMP[4] 8: MAD TEMP[5].xyz, CONST[62], TEMP[1].wwww, TEMP[3] 9: MOV TEMP[6].xyz, TEMP[5] 10: MUL TEMP[4], CONST[64], TEMP[1].yyyy 11: MAD TEMP[7], CONST[63], TEMP[1].xxxx, TEMP[4] 12: MAD TEMP[4], CONST[65], TEMP[1].zzzz, TEMP[7] 13: MAD TEMP[3], CONST[66], TEMP[1].wwww, TEMP[4] 14: MOV OUT[0], TEMP[3] 15: MOV OUT[1], IN[2] 16: MOV OUT[2], CONST[0] 17: MOV TEMP[3].xyz, CONST[1] 18: MUL TEMP[1].xyz, CONST[68], IN[1].yyyw 19: MAD TEMP[8].xyz, CONST[67], TEMP[2].xxxw, TEMP[1] 20: MAD TEMP[1].xyz, CONST[69], TEMP[2].zzzw, TEMP[8] 21: DP3 TEMP[0].y, TEMP[1], TEMP[1] 22: RSQ TEMP[0].y, TEMP[0].yyyy 23: MUL TEMP[7].xyz, TEMP[1], TEMP[0].yyyy 24: MOV TEMP[4].xyz, TEMP[7] 25: DP3 TEMP[0].z, TEMP[7], CONST[1] 26: MAX TEMP[0].y, TEMP[0].zzzz, CONST[58].xxxx 27: MUL OUT[3].xyz, CONST[3], TEMP[0].yyyy 28: DP3 TEMP[6].w, TEMP[5], TEMP[5] 29: RSQ TEMP[2].w, TEMP[6].wwww 30: MUL TEMP[0].z, TEMP[6].wwww, TEMP[2].wwww 31: MOV OUT[4].z, TEMP[0].zyzw 32: DP3 TEMP[3].w, TEMP[6], TEMP[6] 33: RSQ TEMP[6].w, TEMP[3].wwww 34: MUL TEMP[2].w, TEMP[3].wwww, TEMP[6].wwww 35: MOV TEMP[6].w, -TEMP[2].wwww 36: MUL TEMP[3].w, -TEMP[2].wwww, CONST[8].xxxx 37: EX2 TEMP[6].w, TEMP[3].wwww 38: SUB TEMP[3].w, CONST[71].xxxx, TEMP[6].wwww 39: MOV OUT[4].w, TEMP[3].wyzw 40: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FLR temp[0].x, input[3].xxxx; 2: ARL addr[0].x, temp[0].xxxx; 3: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 4: MOV temp[2].xz, input[1]; 5: MUL temp[3], const[60], temp[1].yyyy; 6: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 7: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 8: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 9: MOV temp[6].xyz, temp[5]; 10: MUL temp[4], const[64], temp[1].yyyy; 11: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 12: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 13: MAD temp[3], const[66], temp[1].wwww, temp[4]; 14: MOV temp[9], temp[3]; 15: MOV output[1], input[2]; 16: MOV output[2], const[0]; 17: MOV temp[3].xyz, const[1]; 18: MUL temp[1].xyz, const[68], input[1].yyyw; 19: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 20: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 21: DP3 temp[0].y, temp[1], temp[1]; 22: RSQ temp[0].y, temp[0].yyyy; 23: MUL temp[7].xyz, temp[1], temp[0].yyyy; 24: MOV temp[4].xyz, temp[7]; 25: DP3 temp[0].z, temp[7], const[1]; 26: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 27: MUL output[3].xyz, const[3], temp[0].yyyy; 28: DP3 temp[6].w, temp[5], temp[5]; 29: RSQ temp[2].w, temp[6].wwww; 30: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 31: MOV output[4].z, temp[0].zyzw; 32: DP3 temp[3].w, temp[6], temp[6]; 33: RSQ temp[6].w, temp[3].wwww; 34: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 35: MOV temp[6].w, -temp[2].wwww; 36: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 37: EX2 temp[6].w, temp[3].wwww; 38: SUB temp[3].w, const[71].xxxx, temp[6].wwww; 39: MOV output[4].w, temp[3].wyzw; 40: MOV output[0], temp[9]; 41: MOV output[5], temp[9]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FLR temp[0].x, input[3].xxxx; 2: ARL addr[0].x, temp[0].xxxx; 3: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 4: MOV temp[2].xz, input[1]; 5: MUL temp[3], const[60], temp[1].yyyy; 6: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 7: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 8: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 9: MOV temp[6].xyz, temp[5]; 10: MUL temp[4], const[64], temp[1].yyyy; 11: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 12: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 13: MAD temp[3], const[66], temp[1].wwww, temp[4]; 14: MOV temp[9], temp[3]; 15: MOV output[1], input[2]; 16: MOV output[2], const[0]; 17: MOV temp[3].xyz, const[1]; 18: MUL temp[1].xyz, const[68], input[1].yyyw; 19: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 20: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 21: DP3 temp[0].y, temp[1], temp[1]; 22: RSQ temp[0].y, temp[0].yyyy; 23: MUL temp[7].xyz, temp[1], temp[0].yyyy; 24: MOV temp[4].xyz, temp[7]; 25: DP3 temp[0].z, temp[7], const[1]; 26: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 27: MUL output[3].xyz, const[3], temp[0].yyyy; 28: DP3 temp[6].w, temp[5], temp[5]; 29: RSQ temp[2].w, temp[6].wwww; 30: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 31: MOV output[4].z, temp[0].zyzw; 32: DP3 temp[3].w, temp[6], temp[6]; 33: RSQ temp[6].w, temp[3].wwww; 34: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 35: MOV temp[6].w, -temp[2].wwww; 36: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 37: EX2 temp[6].w, temp[3].wwww; 38: SUB temp[3].w, const[71].xxxx, temp[6].wwww; 39: MOV output[4].w, temp[3].wyzw; 40: MOV output[0], temp[9]; 41: MOV output[5], temp[9]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FRC temp[10], input[3].xxxx; 2: ADD temp[0].x, input[3].xxxx, -temp[10]; 3: ARL addr[0].x, temp[0].xxxx; 4: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 5: MOV temp[2].xz, input[1]; 6: MUL temp[3], const[60], temp[1].yyyy; 7: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 8: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 9: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 10: MOV temp[6].xyz, temp[5]; 11: MUL temp[4], const[64], temp[1].yyyy; 12: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 13: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 14: MAD temp[3], const[66], temp[1].wwww, temp[4]; 15: MOV temp[9], temp[3]; 16: MOV output[1], input[2]; 17: MOV output[2], const[0]; 18: MOV temp[3].xyz, const[1]; 19: MUL temp[1].xyz, const[68], input[1].yyyw; 20: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 21: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].yyyy; 24: MUL temp[7].xyz, temp[1], temp[0].yyyy; 25: MOV temp[4].xyz, temp[7]; 26: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 27: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 28: MUL output[3].xyz, const[3], temp[0].yyyy; 29: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 30: RSQ temp[2].w, temp[6].wwww; 31: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 32: MOV output[4].z, temp[0].zyzw; 33: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 34: RSQ temp[6].w, temp[3].wwww; 35: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 36: MOV temp[6].w, -temp[2].wwww; 37: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 38: EX2 temp[6].w, temp[3].wwww; 39: ADD temp[3].w, const[71].xxxx, -temp[6].wwww; 40: MOV output[4].w, temp[3].wyzw; 41: MOV output[0], temp[9]; 42: MOV output[5], temp[9]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FRC temp[10], input[3].xxxx; 2: ADD temp[0].x, input[3].xxxx, -temp[10]; 3: ARL addr[0].x, temp[0].xxxx; 4: MOV temp[11], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[11]; 6: MOV temp[2].xz, input[1]; 7: MUL temp[3], const[60], temp[1].yyyy; 8: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 9: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 10: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 11: MOV temp[6].xyz, temp[5]; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[9], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MOV temp[3].xyz, const[1]; 20: MUL temp[1].xyz, const[68], input[1].yyyw; 21: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 22: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 23: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 24: RSQ temp[0].y, temp[0].yyyy; 25: MUL temp[7].xyz, temp[1], temp[0].yyyy; 26: MOV temp[4].xyz, temp[7]; 27: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 28: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 29: MUL output[3].xyz, const[3], temp[0].yyyy; 30: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 31: RSQ temp[2].w, temp[6].wwww; 32: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 33: MOV output[4].z, temp[0].zyzw; 34: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 35: RSQ temp[6].w, temp[3].wwww; 36: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 37: MOV temp[6].w, -temp[2].wwww; 38: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 39: EX2 temp[6].w, temp[3].wwww; 40: ADD temp[3].w, const[71].xxxx, -temp[6].wwww; 41: MOV output[4].w, temp[3].wyzw; 42: MOV output[0], temp[9]; 43: MOV output[5], temp[9]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[58].xy__; 1: FRC temp[10].x, input[3].x___; 2: ADD temp[0].x, input[3].x___, -temp[10].x___; 3: ARL addr[0].x, temp[0].x___; 4: MOV temp[11], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[11]; 6: MOV temp[2].xz, input[1].x_z_; 7: MUL temp[3].xyz, const[60].xyz_, temp[1].yyy_; 8: MAD temp[4].xyz, const[59].xyz_, temp[1].xxx_, temp[3].xyz_; 9: MAD temp[3].xyz, const[61].xyz_, temp[1].zzz_, temp[4].xyz_; 10: MAD temp[5].xyz, const[62].xyz_, temp[1].www_, temp[3].xyz_; 11: MOV temp[6].xyz, temp[5].xyz_; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[9], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MUL temp[1].xyz, const[68].xyz_, input[1].yyy_; 20: MAD temp[8].xyz, const[67].xyz_, temp[2].xxx_, temp[1].xyz_; 21: MAD temp[1].xyz, const[69].xyz_, temp[2].zzz_, temp[8].xyz_; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].y___; 24: MUL temp[7].xyz, temp[1].xyz_, temp[0].yyy_; 25: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 26: MAX temp[0].y, temp[0]._z__, const[58]._x__; 27: MUL output[3].xyz, const[3].xyz_, temp[0].yyy_; 28: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 29: RSQ temp[2].w, temp[6].w___; 30: MUL temp[0].z, temp[6].__w_, temp[2].__w_; 31: MOV output[4].z, temp[0].__z_; 32: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 33: RSQ temp[6].w, temp[3].w___; 34: MUL temp[2].w, temp[3].___w, temp[6].___w; 35: MUL temp[3].w, -temp[2].___w, const[8].___x; 36: EX2 temp[6].w, temp[3].w___; 37: ADD temp[3].w, const[71].___x, -temp[6].___w; 38: MOV output[4].w, temp[3].___w; 39: MOV output[0], temp[9]; 40: MOV output[5], temp[9]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[58].xy__; 1: FRC temp[0].x, input[3].x___; 2: ADD temp[0].x, input[3].x___, -temp[0].x___; 3: ARL addr[0].x, temp[0].x___; 4: MOV temp[1], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[1]; 6: MOV temp[2].xz, input[1].x_z_; 7: MUL temp[3].xyz, const[60].xyz_, temp[1].yyy_; 8: MAD temp[4].xyz, const[59].xyz_, temp[1].xxx_, temp[3].xyz_; 9: MAD temp[3].xyz, const[61].xyz_, temp[1].zzz_, temp[4].xyz_; 10: MAD temp[5].xyz, const[62].xyz_, temp[1].www_, temp[3].xyz_; 11: MOV temp[6].xyz, temp[5].xyz_; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[4], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MUL temp[1].xyz, const[68].xyz_, input[1].yyy_; 20: MAD temp[8].xyz, const[67].xyz_, temp[2].xxx_, temp[1].xyz_; 21: MAD temp[1].xyz, const[69].xyz_, temp[2].zzz_, temp[8].xyz_; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].y___; 24: MUL temp[7].xyz, temp[1].xyz_, temp[0].yyy_; 25: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 26: MAX temp[0].y, temp[0]._z__, const[58]._x__; 27: MUL output[3].xyz, const[3].xyz_, temp[0].yyy_; 28: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 29: RSQ temp[2].w, temp[6].w___; 30: MUL temp[0].z, temp[6].__w_, temp[2].__w_; 31: MOV output[4].z, temp[0].__z_; 32: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 33: RSQ temp[6].w, temp[3].w___; 34: MUL temp[2].w, temp[3].___w, temp[6].___w; 35: MUL temp[3].w, -temp[2].___w, const[8].___x; 36: EX2 temp[6].w, temp[3].w___; 37: ADD temp[3].w, const[71].___x, -temp[6].___w; 38: MOV output[4].w, temp[3].___w; 39: MOV output[0], temp[4]; 40: MOV output[5], temp[4]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f90742 reg: 58c swiz: X/ Y/ U/ U src1: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 src2: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 1: op: 0x00100006 dst: 0t op: VE_FRACTION src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x1fff0000 reg: 0t swiz: -X/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 3: op: 0x0010010d dst: 0a0 op: VE_FLT2FIX_DX src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 4: op: 0x00f02003 dst: 1t 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 5: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00492061 reg: 3i swiz: Y/ Y/ Y/ Y src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 6: op: 0x00504003 dst: 2t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 7: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10782 reg: 60c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 8: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10762 reg: 59c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 9: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d107a2 reg: 61c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 10: op: 0x0070a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x01d107c2 reg: 62c swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 11: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 12: op: 0x00f08002 dst: 4t op: VE_MULTIPLY src0: 0x00d10802 reg: 64c swiz: X/ Y/ Z/ W src1: 0x00492020 reg: 1t swiz: Y/ Y/ Y/ Y src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 13: op: 0x00f0e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x00d107e2 reg: 63c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 14: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d10822 reg: 65c swiz: X/ Y/ Z/ W src1: 0x00924020 reg: 1t swiz: Z/ Z/ Z/ Z src2: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W 15: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d10842 reg: 66c swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 16: op: 0x00f08003 dst: 4t 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 17: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 18: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 19: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10882 reg: 68c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 20: op: 0x00710004 dst: 8t op: VE_MULTIPLY_ADD src0: 0x01d10862 reg: 67c swiz: X/ Y/ Z/ U src1: 0x01c00040 reg: 2t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 21: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d108a2 reg: 69c swiz: X/ Y/ Z/ U src1: 0x01d24040 reg: 2t swiz: Z/ Z/ Z/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 22: op: 0x00200001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 23: op: 0x00200048 dst: 0t op: ME_RECIP_SQRT_DX src0: 0x00492000 reg: 0t swiz: Y/ Y/ Y/ Y src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 24: op: 0x0070e002 dst: 7t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 25: op: 0x00400001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 26: op: 0x00200007 dst: 0t op: VE_MAXIMUM src0: 0x01fae000 reg: 0t swiz: U/ Z/ U/ U src1: 0x01f8e742 reg: 58c swiz: U/ X/ U/ U src2: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 27: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 28: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x011100a0 reg: 5t swiz: X/ Y/ Z/ 0 src1: 0x011100a0 reg: 5t swiz: X/ Y/ Z/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 29: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 30: op: 0x00400002 dst: 0t op: VE_MULTIPLY src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 31: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e000 reg: 0t swiz: U/ U/ Z/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 33: op: 0x0080c048 dst: 6t op: ME_RECIP_SQRT_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 34: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 36: op: 0x0080c04b dst: 6t op: ME_EXP_BASE2_FULL_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 37: op: 0x00806003 dst: 3t op: VE_ADD src0: 0x003fe8e2 reg: 71c swiz: U/ U/ U/ X src1: 0x1effe0c0 reg: 6t swiz: -U/-U/-U/-W src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 38: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 39: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 40: op: 0x00f0a203 dst: 5o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[24]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], COLOR DCL OUT[2], GENERIC[0] DCL OUT[3], GENERIC[1] DCL OUT[4], GENERIC[10] DCL OUT[5], GENERIC[11] DCL CONST[0..9] DCL CONST[12..15] DCL CONST[17..24] DCL TEMP[0..12] IMM FLT32 { 0.0000, 0.7500, 6.3750, 0.5000} IMM FLT32 { 1.0000, 255.0000, 2.0000, 8.5000} 0: MOV OUT[5], IMM[0].xxxx 1: MOV TEMP[0].z, IN[1].wwww 2: MOV TEMP[0].w, IN[2].wwww 3: MOV TEMP[1].x, TEMP[0].zzzz 4: MOV TEMP[1].y, IN[2].wwww 5: MOV TEMP[0].xy, TEMP[1] 6: MUL TEMP[2].xy, TEMP[1], CONST[0].xxxx 7: MOV TEMP[3].xy, TEMP[2] 8: MOV TEMP[3].z, IN[3].xyxw 9: MOV TEMP[3].w, IMM[1].xxxx 10: MOV TEMP[1], TEMP[3] 11: MUL TEMP[3].xy, TEMP[0], CONST[0].yyyy 12: MUL TEMP[4].xy, TEMP[0], CONST[0].zzzz 13: MOV TEMP[5].xyz, IN[1] 14: RCP TEMP[0].z, IMM[1].yyyy 15: MUL TEMP[6].xyz, IN[1], TEMP[0].zzzz 16: MUL TEMP[5].xyz, TEMP[6], IMM[1].zzzz 17: SUB TEMP[7].xyz, TEMP[5], IMM[1].xxxx 18: MOV TEMP[8].xyz, IN[2] 19: RCP TEMP[0].z, IMM[1].yyyy 20: MUL TEMP[9].xyz, IN[2], TEMP[0].zzzz 21: MUL TEMP[8].xyz, TEMP[9], IMM[1].zzzz 22: MUL TEMP[10], CONST[13], TEMP[1].yyyy 23: MAD TEMP[11], CONST[12], TEMP[1].xxxx, TEMP[10] 24: MAD TEMP[10], CONST[14], TEMP[1].zzzz, TEMP[11] 25: MAD TEMP[12].xyz, CONST[15], TEMP[1].wwww, TEMP[10] 26: MOV TEMP[10].xyz, TEMP[12] 27: DP3 TEMP[3].w, TEMP[12], TEMP[12] 28: RSQ TEMP[3].z, TEMP[3].wwww 29: MUL TEMP[0].w, TEMP[3].wwww, TEMP[3].zzzz 30: MOV TEMP[0].z, TEMP[0].wwww 31: MOV TEMP[0].w, IMM[1].wwww 32: MOV TEMP[3].z, IMM[0].yyyy 33: LG2 TEMP[2].z, TEMP[0].zzzz 34: MUL TEMP[2].w, TEMP[2].zzzz, IMM[0].yyyy 35: SUB TEMP[2].z, TEMP[2].wwww, IMM[0].zzzz 36: MAX TEMP[3].w, TEMP[2].zzzz, IMM[0].xxxx 37: FLR TEMP[2].z, TEMP[3].wwww 38: MUL TEMP[7].w, TEMP[2].zzzz, IMM[0].wwww 39: FRC TEMP[6].w, TEMP[7].wwww 40: SGT TEMP[7].w, TEMP[6].wwww, IMM[0].xxxx 41: IF TEMP[7].wwww :48 42: FRC TEMP[0].w, TEMP[3].wwww 43: POW TEMP[5].w, IMM[1].zzzz, TEMP[2].zzzz 44: RCP TEMP[12].w, TEMP[5].wwww 45: MUL TEMP[6].w, IMM[1].xxxx, TEMP[12].wwww 46: MOV TEMP[4].w, TEMP[6].wwww 47: MUL TEMP[0].z, TEMP[6].wwww, IMM[0].wwww 48: ELSE :57 49: FRC TEMP[6].w, TEMP[3].wwww 50: SUB TEMP[0].w, IMM[1].xxxx, TEMP[6].wwww 51: ADD TEMP[12].w, TEMP[2].zzzz, IMM[1].xxxx 52: POW TEMP[2].w, IMM[1].zzzz, TEMP[12].wwww 53: RCP TEMP[12].w, TEMP[2].wwww 54: MUL TEMP[6].w, IMM[1].xxxx, TEMP[12].wwww 55: MOV TEMP[4].w, TEMP[6].wwww 56: MUL TEMP[0].z, TEMP[6].wwww, IMM[1].zzzz 57: ENDIF 58: MUL OUT[2].xy, TEMP[3], TEMP[4].wwww 59: MUL TEMP[11].xy, TEMP[3], TEMP[0].zzzz 60: MOV OUT[2].zw, TEMP[11].xyxy 61: MOV OUT[3].xy, TEMP[4] 62: MOV OUT[3].z, TEMP[0].wyww 63: MOV OUT[3].w, IMM[0].xxxx 64: MUL TEMP[0], CONST[18], TEMP[1].yyyy 65: MAD TEMP[2], CONST[17], TEMP[1].xxxx, TEMP[0] 66: MAD TEMP[0], CONST[19], TEMP[1].zzzz, TEMP[2] 67: MAD TEMP[3], CONST[20], TEMP[1].wwww, TEMP[0] 68: MOV OUT[0], TEMP[3] 69: MOV OUT[1], IN[0] 70: MOV TEMP[3].xyz, CONST[1] 71: MUL TEMP[1].xyz, CONST[22], TEMP[7].yyyw 72: MAD TEMP[3].xyz, CONST[21], TEMP[7].xxxw, TEMP[1] 73: MAD TEMP[1].xyz, CONST[23], TEMP[7].zzzw, TEMP[3] 74: DP3 TEMP[6].w, TEMP[1], TEMP[1] 75: RSQ TEMP[6].w, TEMP[6].wwww 76: MUL TEMP[2].xyz, TEMP[1], TEMP[6].wwww 77: MOV TEMP[0].xyz, TEMP[2] 78: DP3 TEMP[5].w, TEMP[2], CONST[1] 79: MAX TEMP[6].w, TEMP[5].wwww, IMM[0].xxxx 80: MUL OUT[4].xyz, CONST[3], TEMP[6].wwww 81: DP3 TEMP[9].w, TEMP[10], TEMP[10] 82: RSQ TEMP[12].w, TEMP[9].wwww 83: MUL TEMP[5].w, TEMP[9].wwww, TEMP[12].wwww 84: MOV OUT[5].z, TEMP[5].wyww 85: DP3 TEMP[8].w, TEMP[10], TEMP[10] 86: RSQ TEMP[9].w, TEMP[8].wwww 87: MUL TEMP[12].w, TEMP[8].wwww, TEMP[9].wwww 88: MOV TEMP[9].w, -TEMP[12].wwww 89: MUL TEMP[8].w, -TEMP[12].wwww, CONST[8].xxxx 90: EX2 TEMP[9].w, TEMP[8].wwww 91: SUB TEMP[8].w, IMM[1].xxxx, TEMP[9].wwww 92: MOV OUT[5].w, TEMP[8].wyzw 93: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: SUB temp[7].xyz, temp[5], const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP3 temp[3].w, temp[12], temp[12]; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: SUB temp[2].z, temp[2].wwww, const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FLR temp[2].z, temp[3].wwww; 38: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 39: FRC temp[6].w, temp[7].wwww; 40: SGT temp[7].w, temp[6].wwww, const[25].xxxx; 41: IF temp[7].wwww; 42: FRC temp[0].w, temp[3].wwww; 43: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 44: RCP temp[12].w, temp[5].wwww; 45: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 46: MOV temp[4].w, temp[6].wwww; 47: MUL temp[0].z, temp[6].wwww, const[25].wwww; 48: ELSE; 49: FRC temp[6].w, temp[3].wwww; 50: SUB temp[0].w, const[26].xxxx, temp[6].wwww; 51: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 52: POW temp[2].w, const[26].zzzz, temp[12].wwww; 53: RCP temp[12].w, temp[2].wwww; 54: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 55: MOV temp[4].w, temp[6].wwww; 56: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 57: ENDIF; 58: MUL output[2].xy, temp[3], temp[4].wwww; 59: MUL temp[11].xy, temp[3], temp[0].zzzz; 60: MOV output[2].zw, temp[11].xyxy; 61: MOV output[3].xy, temp[4]; 62: MOV output[3].z, temp[0].wyww; 63: MOV output[3].w, const[25].xxxx; 64: MUL temp[0], const[18], temp[1].yyyy; 65: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 66: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 67: MAD temp[3], const[20], temp[1].wwww, temp[0]; 68: MOV temp[13], temp[3]; 69: MOV output[1], input[0]; 70: MOV temp[3].xyz, const[1]; 71: MUL temp[1].xyz, const[22], temp[7].yyyw; 72: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 73: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 74: DP3 temp[6].w, temp[1], temp[1]; 75: RSQ temp[6].w, temp[6].wwww; 76: MUL temp[2].xyz, temp[1], temp[6].wwww; 77: MOV temp[0].xyz, temp[2]; 78: DP3 temp[5].w, temp[2], const[1]; 79: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 80: MUL output[4].xyz, const[3], temp[6].wwww; 81: DP3 temp[9].w, temp[10], temp[10]; 82: RSQ temp[12].w, temp[9].wwww; 83: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 84: MOV output[5].z, temp[5].wyww; 85: DP3 temp[8].w, temp[10], temp[10]; 86: RSQ temp[9].w, temp[8].wwww; 87: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 88: MOV temp[9].w, -temp[12].wwww; 89: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 90: EX2 temp[9].w, temp[8].wwww; 91: SUB temp[8].w, const[26].xxxx, temp[9].wwww; 92: MOV output[5].w, temp[8].wyzw; 93: MOV output[0], temp[13]; 94: MOV output[6], temp[13]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: SUB temp[7].xyz, temp[5], const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP3 temp[3].w, temp[12], temp[12]; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: SUB temp[2].z, temp[2].wwww, const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FLR temp[2].z, temp[3].wwww; 38: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 39: FRC temp[6].w, temp[7].wwww; 40: SGT temp[7].w, temp[6].wwww, const[25].xxxx; 41: IF temp[7].wwww; 42: FRC temp[0].w, temp[3].wwww; 43: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 44: RCP temp[12].w, temp[5].wwww; 45: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 46: MOV temp[4].w, temp[6].wwww; 47: MUL temp[0].z, temp[6].wwww, const[25].wwww; 48: ELSE; 49: FRC temp[6].w, temp[3].wwww; 50: SUB temp[0].w, const[26].xxxx, temp[6].wwww; 51: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 52: POW temp[2].w, const[26].zzzz, temp[12].wwww; 53: RCP temp[12].w, temp[2].wwww; 54: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 55: MOV temp[4].w, temp[6].wwww; 56: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 57: ENDIF; 58: MUL output[2].xy, temp[3], temp[4].wwww; 59: MUL temp[11].xy, temp[3], temp[0].zzzz; 60: MOV output[2].zw, temp[11].xyxy; 61: MOV output[3].xy, temp[4]; 62: MOV output[3].z, temp[0].wyww; 63: MOV output[3].w, const[25].xxxx; 64: MUL temp[0], const[18], temp[1].yyyy; 65: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 66: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 67: MAD temp[3], const[20], temp[1].wwww, temp[0]; 68: MOV temp[13], temp[3]; 69: MOV output[1], input[0]; 70: MOV temp[3].xyz, const[1]; 71: MUL temp[1].xyz, const[22], temp[7].yyyw; 72: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 73: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 74: DP3 temp[6].w, temp[1], temp[1]; 75: RSQ temp[6].w, temp[6].wwww; 76: MUL temp[2].xyz, temp[1], temp[6].wwww; 77: MOV temp[0].xyz, temp[2]; 78: DP3 temp[5].w, temp[2], const[1]; 79: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 80: MUL output[4].xyz, const[3], temp[6].wwww; 81: DP3 temp[9].w, temp[10], temp[10]; 82: RSQ temp[12].w, temp[9].wwww; 83: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 84: MOV output[5].z, temp[5].wyww; 85: DP3 temp[8].w, temp[10], temp[10]; 86: RSQ temp[9].w, temp[8].wwww; 87: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 88: MOV temp[9].w, -temp[12].wwww; 89: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 90: EX2 temp[9].w, temp[8].wwww; 91: SUB temp[8].w, const[26].xxxx, temp[9].wwww; 92: MOV output[5].w, temp[8].wyzw; 93: MOV output[0], temp[13]; 94: MOV output[6], temp[13]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: ADD temp[7].xyz, temp[5], -const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: ADD temp[2].z, temp[2].wwww, -const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FRC temp[14], temp[3].wwww; 38: ADD temp[2].z, temp[3].wwww, -temp[14]; 39: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 40: FRC temp[6].w, temp[7].wwww; 41: SLT temp[7].w, -temp[6].wwww, -const[25].xxxx; 42: IF temp[7].wwww; 43: FRC temp[0].w, temp[3].wwww; 44: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 45: RCP temp[12].w, temp[5].wwww; 46: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 47: MOV temp[4].w, temp[6].wwww; 48: MUL temp[0].z, temp[6].wwww, const[25].wwww; 49: ELSE; 50: FRC temp[6].w, temp[3].wwww; 51: ADD temp[0].w, const[26].xxxx, -temp[6].wwww; 52: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 53: POW temp[2].w, const[26].zzzz, temp[12].wwww; 54: RCP temp[12].w, temp[2].wwww; 55: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 56: MOV temp[4].w, temp[6].wwww; 57: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 58: ENDIF; 59: MUL output[2].xy, temp[3], temp[4].wwww; 60: MUL temp[11].xy, temp[3], temp[0].zzzz; 61: MOV output[2].zw, temp[11].xyxy; 62: MOV output[3].xy, temp[4]; 63: MOV output[3].z, temp[0].wyww; 64: MOV output[3].w, const[25].xxxx; 65: MUL temp[0], const[18], temp[1].yyyy; 66: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 67: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 68: MAD temp[3], const[20], temp[1].wwww, temp[0]; 69: MOV temp[13], temp[3]; 70: MOV output[1], input[0]; 71: MOV temp[3].xyz, const[1]; 72: MUL temp[1].xyz, const[22], temp[7].yyyw; 73: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 74: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 75: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 76: RSQ temp[6].w, temp[6].wwww; 77: MUL temp[2].xyz, temp[1], temp[6].wwww; 78: MOV temp[0].xyz, temp[2]; 79: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 80: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 81: MUL output[4].xyz, const[3], temp[6].wwww; 82: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 83: RSQ temp[12].w, temp[9].wwww; 84: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 85: MOV output[5].z, temp[5].wyww; 86: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 87: RSQ temp[9].w, temp[8].wwww; 88: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 89: MOV temp[9].w, -temp[12].wwww; 90: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 91: EX2 temp[9].w, temp[8].wwww; 92: ADD temp[8].w, const[26].xxxx, -temp[9].wwww; 93: MOV output[5].w, temp[8].wyzw; 94: MOV output[0], temp[13]; 95: MOV output[6], temp[13]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: ADD temp[7].xyz, temp[5], -const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: ADD temp[2].z, temp[2].wwww, -const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FRC temp[14], temp[3].wwww; 38: ADD temp[2].z, temp[3].wwww, -temp[14]; 39: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 40: FRC temp[6].w, temp[7].wwww; 41: SLT temp[7].w, -temp[6].wwww, -const[25].xxxx; 42: IF temp[7].wwww; 43: FRC temp[0].w, temp[3].wwww; 44: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 45: RCP temp[12].w, temp[5].wwww; 46: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 47: MOV temp[4].w, temp[6].wwww; 48: MUL temp[0].z, temp[6].wwww, const[25].wwww; 49: ELSE; 50: FRC temp[6].w, temp[3].wwww; 51: ADD temp[0].w, const[26].xxxx, -temp[6].wwww; 52: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 53: POW temp[2].w, const[26].zzzz, temp[12].wwww; 54: RCP temp[12].w, temp[2].wwww; 55: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 56: MOV temp[4].w, temp[6].wwww; 57: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 58: ENDIF; 59: MUL output[2].xy, temp[3], temp[4].wwww; 60: MUL temp[11].xy, temp[3], temp[0].zzzz; 61: MOV output[2].zw, temp[11].xyxy; 62: MOV output[3].xy, temp[4]; 63: MOV output[3].z, temp[0].wyww; 64: MOV output[3].w, const[25].xxxx; 65: MUL temp[0], const[18], temp[1].yyyy; 66: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 67: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 68: MAD temp[3], const[20], temp[1].wwww, temp[0]; 69: MOV temp[13], temp[3]; 70: MOV output[1], input[0]; 71: MOV temp[3].xyz, const[1]; 72: MUL temp[1].xyz, const[22], temp[7].yyyw; 73: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 74: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 75: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 76: RSQ temp[6].w, temp[6].wwww; 77: MUL temp[2].xyz, temp[1], temp[6].wwww; 78: MOV temp[0].xyz, temp[2]; 79: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 80: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 81: MUL output[4].xyz, const[3], temp[6].wwww; 82: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 83: RSQ temp[12].w, temp[9].wwww; 84: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 85: MOV output[5].z, temp[5].wyww; 86: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 87: RSQ temp[9].w, temp[8].wwww; 88: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 89: MOV temp[9].w, -temp[12].wwww; 90: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 91: EX2 temp[9].w, temp[8].wwww; 92: ADD temp[8].w, const[26].xxxx, -temp[9].wwww; 93: MOV output[5].w, temp[8].wyzw; 94: MOV output[0], temp[13]; 95: MOV output[6], temp[13]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[5].xy, const[25].xx__; 1: MOV temp[0].z, input[1].__w_; 2: MOV temp[1].x, temp[0].z___; 3: MOV temp[1].y, input[2]._w__; 4: MOV temp[0].xy, temp[1].xy__; 5: MUL temp[2].xy, temp[1].xy__, const[0].xx__; 6: MOV temp[3].xy, temp[2].xy__; 7: MOV temp[3].z, input[3].__x_; 8: MOV temp[3].w, const[26].___x; 9: MOV temp[1], temp[3]; 10: MUL temp[3].xy, temp[0].xy__, const[0].yy__; 11: MUL temp[4].xy, temp[0].xy__, const[0].zz__; 12: RCP temp[0].z, const[26].y___; 13: MUL temp[6].xyz, input[1].xyz_, temp[0].zzz_; 14: MUL temp[5].xyz, temp[6].xyz_, const[26].zzz_; 15: ADD temp[7].xyz, temp[5].xyz_, -const[26].xxx_; 16: MUL temp[10].xyz, const[13].xyz_, temp[1].yyy_; 17: MAD temp[11].xyz, const[12].xyz_, temp[1].xxx_, temp[10].xyz_; 18: MAD temp[10].xyz, const[14].xyz_, temp[1].zzz_, temp[11].xyz_; 19: MAD temp[12].xyz, const[15].xyz_, temp[1].www_, temp[10].xyz_; 20: MOV temp[10].xyz, temp[12].xyz_; 21: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 22: RSQ temp[3].z, temp[3].w___; 23: MUL temp[0].w, temp[3].___w, temp[3].___z; 24: MOV temp[0].z, temp[0].__w_; 25: LG2 temp[2].z, temp[0].z___; 26: MUL temp[2].w, temp[2].___z, const[25].___y; 27: ADD temp[2].z, temp[2].__w_, -const[25].__z_; 28: MAX temp[3].w, temp[2].___z, const[25].___x; 29: FRC temp[14].z, temp[3].__w_; 30: ADD temp[2].z, temp[3].__w_, -temp[14].__z_; 31: MUL temp[7].w, temp[2].___z, const[25].___w; 32: FRC temp[6].w, temp[7].___w; 33: SLT temp[7].w, -temp[6].___w, -const[25].___x; 34: IF temp[7].w___; 35: FRC temp[0].w, temp[3].___w; 36: POW temp[5].w, const[26].z___, temp[2].z___; 37: RCP temp[12].w, temp[5].w___; 38: MUL temp[6].w, const[26].___x, temp[12].___w; 39: MOV temp[4].w, temp[6].___w; 40: MUL temp[0].z, temp[6].__w_, const[25].__w_; 41: ELSE; 42: FRC temp[6].w, temp[3].___w; 43: ADD temp[0].w, const[26].___x, -temp[6].___w; 44: ADD temp[12].w, temp[2].___z, const[26].___x; 45: POW temp[2].w, const[26].z___, temp[12].w___; 46: RCP temp[12].w, temp[2].w___; 47: MUL temp[6].w, const[26].___x, temp[12].___w; 48: MOV temp[4].w, temp[6].___w; 49: MUL temp[0].z, temp[6].__w_, const[26].__z_; 50: ENDIF; 51: MUL output[2].xy, temp[3].xy__, temp[4].ww__; 52: MUL temp[11].xy, temp[3].xy__, temp[0].zz__; 53: MOV output[2].zw, temp[11].__xy; 54: MOV output[3].xy, temp[4].xy__; 55: MOV output[3].z, temp[0].__w_; 56: MOV output[3].w, const[25].___x; 57: MUL temp[0], const[18], temp[1].yyyy; 58: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 59: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 60: MAD temp[3], const[20], temp[1].wwww, temp[0]; 61: MOV temp[13], temp[3]; 62: MOV output[1], input[0]; 63: MUL temp[1].xyz, const[22].xyz_, temp[7].yyy_; 64: MAD temp[3].xyz, const[21].xyz_, temp[7].xxx_, temp[1].xyz_; 65: MAD temp[1].xyz, const[23].xyz_, temp[7].zzz_, temp[3].xyz_; 66: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 67: RSQ temp[6].w, temp[6].w___; 68: MUL temp[2].xyz, temp[1].xyz_, temp[6].www_; 69: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 70: MAX temp[6].w, temp[5].___w, const[25].___x; 71: MUL output[4].xyz, const[3].xyz_, temp[6].www_; 72: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 73: RSQ temp[12].w, temp[9].w___; 74: MUL temp[5].w, temp[9].___w, temp[12].___w; 75: MOV output[5].z, temp[5].__w_; 76: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 77: RSQ temp[9].w, temp[8].w___; 78: MUL temp[12].w, temp[8].___w, temp[9].___w; 79: MUL temp[8].w, -temp[12].___w, const[8].___x; 80: EX2 temp[9].w, temp[8].w___; 81: ADD temp[8].w, const[26].___x, -temp[9].___w; 82: MOV output[5].w, temp[8].___w; 83: MOV output[0], temp[13]; 84: MOV output[6], temp[13]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[5].xy, const[25].xx__; 1: MOV temp[0].z, input[1].__w_; 2: MOV temp[1].x, temp[0].z___; 3: MOV temp[1].y, input[2]._w__; 4: MOV temp[0].xy, temp[1].xy__; 5: MUL temp[2].xy, temp[1].xy__, const[0].xx__; 6: MOV temp[3].xy, temp[2].xy__; 7: MOV temp[3].z, input[3].__x_; 8: MOV temp[3].w, const[26].___x; 9: MOV temp[1], temp[3]; 10: MUL temp[3].xy, temp[0].xy__, const[0].yy__; 11: MUL temp[4].xy, temp[0].xy__, const[0].zz__; 12: RCP temp[0].z, const[26].y___; 13: MUL temp[5].xyz, input[1].xyz_, temp[0].zzz_; 14: MUL temp[6].xyz, temp[5].xyz_, const[26].zzz_; 15: ADD temp[7].xyz, temp[6].xyz_, -const[26].xxx_; 16: MUL temp[8].xyz, const[13].xyz_, temp[1].yyy_; 17: MAD temp[9].xyz, const[12].xyz_, temp[1].xxx_, temp[8].xyz_; 18: MAD temp[8].xyz, const[14].xyz_, temp[1].zzz_, temp[9].xyz_; 19: MAD temp[10].xyz, const[15].xyz_, temp[1].www_, temp[8].xyz_; 20: MOV temp[8].xyz, temp[10].xyz_; 21: DP4 temp[3].w, temp[10].xyz0, temp[10].xyz0; 22: RSQ temp[3].z, temp[3].w___; 23: MUL temp[0].w, temp[3].___w, temp[3].___z; 24: MOV temp[0].z, temp[0].__w_; 25: LG2 temp[2].z, temp[0].z___; 26: MUL temp[2].w, temp[2].___z, const[25].___y; 27: ADD temp[2].z, temp[2].__w_, -const[25].__z_; 28: MAX temp[3].w, temp[2].___z, const[25].___x; 29: FRC temp[11].z, temp[3].__w_; 30: ADD temp[2].z, temp[3].__w_, -temp[11].__z_; 31: MUL temp[7].w, temp[2].___z, const[25].___w; 32: FRC temp[5].w, temp[7].___w; 33: SLT temp[7].w, -temp[5].___w, -const[25].___x; 34: IF temp[7].w___; 35: FRC temp[0].w, temp[3].___w; 36: POW temp[6].w, const[26].z___, temp[2].z___; 37: RCP temp[10].w, temp[6].w___; 38: MUL temp[5].w, const[26].___x, temp[10].___w; 39: MOV temp[4].w, temp[5].___w; 40: MUL temp[0].z, temp[5].__w_, const[25].__w_; 41: ELSE; 42: FRC temp[5].w, temp[3].___w; 43: ADD temp[0].w, const[26].___x, -temp[5].___w; 44: ADD temp[10].w, temp[2].___z, const[26].___x; 45: POW temp[2].w, const[26].z___, temp[10].w___; 46: RCP temp[10].w, temp[2].w___; 47: MUL temp[5].w, const[26].___x, temp[10].___w; 48: MOV temp[4].w, temp[5].___w; 49: MUL temp[0].z, temp[5].__w_, const[26].__z_; 50: ENDIF; 51: MUL output[2].xy, temp[3].xy__, temp[4].ww__; 52: MUL temp[9].xy, temp[3].xy__, temp[0].zz__; 53: MOV output[2].zw, temp[9].__xy; 54: MOV output[3].xy, temp[4].xy__; 55: MOV output[3].z, temp[0].__w_; 56: MOV output[3].w, const[25].___x; 57: MUL temp[0], const[18], temp[1].yyyy; 58: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 59: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 60: MAD temp[3], const[20], temp[1].wwww, temp[0]; 61: MOV temp[0], temp[3]; 62: MOV output[1], input[0]; 63: MUL temp[1].xyz, const[22].xyz_, temp[7].yyy_; 64: MAD temp[3].xyz, const[21].xyz_, temp[7].xxx_, temp[1].xyz_; 65: MAD temp[1].xyz, const[23].xyz_, temp[7].zzz_, temp[3].xyz_; 66: DP4 temp[5].w, temp[1].xyz0, temp[1].xyz0; 67: RSQ temp[5].w, temp[5].w___; 68: MUL temp[2].xyz, temp[1].xyz_, temp[5].www_; 69: DP4 temp[6].w, temp[2].xyz0, const[1].xyz0; 70: MAX temp[5].w, temp[6].___w, const[25].___x; 71: MUL output[4].xyz, const[3].xyz_, temp[5].www_; 72: DP4 temp[1].w, temp[8].xyz0, temp[8].xyz0; 73: RSQ temp[10].w, temp[1].w___; 74: MUL temp[6].w, temp[1].___w, temp[10].___w; 75: MOV output[5].z, temp[6].__w_; 76: DP4 temp[2].w, temp[8].xyz0, temp[8].xyz0; 77: RSQ temp[1].w, temp[2].w___; 78: MUL temp[10].w, temp[2].___w, temp[1].___w; 79: MUL temp[2].w, -temp[10].___w, const[8].___x; 80: EX2 temp[1].w, temp[2].w___; 81: ADD temp[2].w, const[26].___x, -temp[1].___w; 82: MOV output[5].w, temp[2].___w; 83: MOV output[0], temp[0]; 84: MOV output[6], temp[0]; Final vertex program code: 0: op: 0x0030a203 dst: 5o op: VE_ADD src0: 0x01f80322 reg: 25c swiz: X/ X/ U/ U src1: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 1: op: 0x00400003 dst: 0t op: VE_ADD src0: 0x01dfe021 reg: 1i swiz: U/ U/ W/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff4000 reg: 0t swiz: Z/ U/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 3: op: 0x00202003 dst: 1t op: VE_ADD src0: 0x01fbe041 reg: 2i swiz: U/ W/ U/ U src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 4: op: 0x00300003 dst: 0t op: VE_ADD 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 5: op: 0x00304002 dst: 2t op: VE_MULTIPLY src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f80002 reg: 0c swiz: X/ X/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 6: op: 0x00306003 dst: 3t 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 7: op: 0x00406003 dst: 3t op: VE_ADD src0: 0x01c7e061 reg: 3i swiz: U/ U/ X/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 8: op: 0x00806003 dst: 3t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 9: op: 0x00f02003 dst: 1t 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 10: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f92002 reg: 0c swiz: Y/ Y/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 11: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fa4002 reg: 0c swiz: Z/ Z/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 12: op: 0x00400046 dst: 0t op: ME_RECIP_DX src0: 0x00492342 reg: 26c swiz: Y/ Y/ Y/ Y src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 13: op: 0x0070a002 dst: 5t op: VE_MULTIPLY src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24342 reg: 26c swiz: Z/ Z/ Z/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 15: op: 0x0070e003 dst: 7t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x1fc00342 reg: 26c swiz: -X/-X/-X/-U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 16: op: 0x00710002 dst: 8t op: VE_MULTIPLY src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 17: op: 0x00712004 dst: 9t op: VE_MULTIPLY_ADD src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 18: op: 0x00710004 dst: 8t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10120 reg: 9t swiz: X/ Y/ Z/ U 19: op: 0x00714004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x01d101e2 reg: 15c swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 20: op: 0x00710003 dst: 8t op: VE_ADD src0: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U src1: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 21: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 22: op: 0x00406048 dst: 3t op: ME_RECIP_SQRT_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 23: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 24: op: 0x00400003 dst: 0t op: VE_ADD src0: 0x01dfe000 reg: 0t swiz: U/ U/ W/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 25: op: 0x0040404c dst: 2t op: ME_LOG_BASE2_FULL_DX src0: 0x00924000 reg: 0t swiz: Z/ Z/ Z/ Z src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 26: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x007fe322 reg: 25c swiz: U/ U/ U/ Y src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 27: op: 0x00404003 dst: 2t op: VE_ADD src0: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src1: 0x1fd7e322 reg: 25c swiz: -U/-U/-Z/-U src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 28: op: 0x00806007 dst: 3t op: VE_MAXIMUM src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 29: op: 0x00416006 dst: 11t op: VE_FRACTION src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 30: op: 0x00404003 dst: 2t op: VE_ADD src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x1fd7e160 reg: 11t swiz: -U/-U/-Z/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 31: op: 0x0080e002 dst: 7t op: VE_MULTIPLY src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x00ffe322 reg: 25c swiz: U/ U/ U/ W src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 32: op: 0x0080a006 dst: 5t op: VE_FRACTION src0: 0x00ffe0e0 reg: 7t swiz: U/ U/ U/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 33: op: 0x0080e00a dst: 7t op: VE_SET_LESS_THAN src0: 0x1effe0a0 reg: 5t swiz: -U/-U/-U/-W src1: 0x1e3fe322 reg: 25c swiz: -U/-U/-U/-X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 34: op: 0x008d0058 dst: 104t op: ME_PRED_SET_NEQ src0: 0x00db60e0 reg: 7t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x0c800006 dst: 0t op: PRED 1 VE_FRACTION src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 36: op: 0x0c80c045 dst: 6t op: PRED 1 ME_POWER_FUNC_FF src0: 0x00924342 reg: 26c swiz: Z/ Z/ Z/ Z src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x00924040 reg: 2t swiz: Z/ Z/ Z/ Z 37: op: 0x0c814046 dst: 10t op: PRED 1 ME_RECIP_DX src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 38: op: 0x0c80a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 39: op: 0x0c808003 dst: 4t op: PRED 1 VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 40: op: 0x0c400002 dst: 0t op: PRED 1 VE_MULTIPLY src0: 0x01dfe0a0 reg: 5t swiz: U/ U/ W/ U src1: 0x01dfe322 reg: 25c swiz: U/ U/ W/ U src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 41: op: 0x008d005a dst: 104t op: ME_PRED_SET_INV src0: 0x00e49d00 reg: 232t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 42: op: 0x0c80a006 dst: 5t op: PRED 1 VE_FRACTION src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 43: op: 0x0c800003 dst: 0t op: PRED 1 VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x1effe0a0 reg: 5t swiz: -U/-U/-U/-W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 44: op: 0x0c814003 dst: 10t op: PRED 1 VE_ADD src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 45: op: 0x0c804045 dst: 2t op: PRED 1 ME_POWER_FUNC_FF src0: 0x00924342 reg: 26c swiz: Z/ Z/ Z/ Z src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x00db6140 reg: 10t swiz: W/ W/ W/ W 46: op: 0x0c814046 dst: 10t op: PRED 1 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 47: op: 0x0c80a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 48: op: 0x0c808003 dst: 4t op: PRED 1 VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 49: op: 0x0c400002 dst: 0t op: PRED 1 VE_MULTIPLY src0: 0x01dfe0a0 reg: 5t swiz: U/ U/ W/ U src1: 0x01d7e342 reg: 26c swiz: U/ U/ Z/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 50: op: 0x008d005b dst: 104t op: ME_PRED_SET_POP src0: 0x00e49d00 reg: 232t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 51: op: 0x00304202 dst: 2o op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01fb6080 reg: 4t swiz: W/ W/ U/ U src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 52: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01fa4000 reg: 0t swiz: Z/ Z/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 53: op: 0x00c04203 dst: 2o op: VE_ADD src0: 0x0047e120 reg: 9t swiz: U/ U/ X/ Y src1: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 54: op: 0x00306203 dst: 3o op: VE_ADD src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 55: op: 0x00406203 dst: 3o op: VE_ADD src0: 0x01dfe000 reg: 0t swiz: U/ U/ W/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 56: op: 0x00806203 dst: 3o op: VE_ADD src0: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src1: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 57: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00492020 reg: 1t swiz: Y/ Y/ Y/ Y src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 58: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 59: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10262 reg: 19c swiz: X/ Y/ Z/ W src1: 0x00924020 reg: 1t swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 60: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d10282 reg: 20c swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 61: op: 0x00f00003 dst: 0t 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 62: op: 0x00f02203 dst: 1o 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 63: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d102c2 reg: 22c swiz: X/ Y/ Z/ U src1: 0x01c920e0 reg: 7t swiz: Y/ Y/ Y/ U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 64: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01c000e0 reg: 7t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 65: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d102e2 reg: 23c swiz: X/ Y/ Z/ U src1: 0x01d240e0 reg: 7t swiz: Z/ Z/ Z/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 66: op: 0x0080a001 dst: 5t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 67: op: 0x0080a048 dst: 5t op: ME_RECIP_SQRT_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 68: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db60a0 reg: 5t swiz: W/ W/ W/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 69: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 70: op: 0x0080a007 dst: 5t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 71: op: 0x00708202 dst: 4o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db60a0 reg: 5t swiz: W/ W/ W/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 72: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src1: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 73: op: 0x00814048 dst: 10t op: ME_RECIP_SQRT_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 74: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 75: op: 0x0040a203 dst: 5o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 76: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src1: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 77: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 78: op: 0x00814002 dst: 10t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 79: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x1effe140 reg: 10t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 80: op: 0x0080204b dst: 1t op: ME_EXP_BASE2_FULL_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 81: op: 0x00804003 dst: 2t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 82: op: 0x0080a203 dst: 5o op: VE_ADD src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 83: 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 84: 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 vertex program VERT DCL IN[0] DCL OUT[0], POSITION DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[0], temp[2]; 6: MOV output[1], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[0], temp[2]; 6: MOV output[1], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[0], temp[2]; 6: MOV output[1], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[0], temp[2]; 6: MOV output[1], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[0], temp[2]; 6: MOV output[1], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[0], temp[0]; 6: MOV output[1], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 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: 0x00f02203 dst: 1o 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..4] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[2], IN[0].yyyy 1: MAD TEMP[1], CONST[1], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[3], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[4], IN[0].wwww, TEMP[0] 4: MOV TEMP[0], TEMP[1] 5: SUB TEMP[1].x, TEMP[1].wwww, CONST[0].xxxx 6: MOV TEMP[0].z, TEMP[1].xyxw 7: MOV OUT[1], IN[2] 8: MOV OUT[2], IN[1] 9: MOV OUT[0], TEMP[0] 10: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[2], input[0].yyyy; 1: MAD temp[1], const[1], input[0].xxxx, temp[0]; 2: MAD temp[0], const[3], input[0].zzzz, temp[1]; 3: MAD temp[1], const[4], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: SUB temp[1].x, temp[1].wwww, const[0].xxxx; 6: MOV temp[0].z, temp[1].xyxw; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[2], temp[0]; 10: MOV output[0], temp[2]; 11: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[2], input[0].yyyy; 1: MAD temp[1], const[1], input[0].xxxx, temp[0]; 2: MAD temp[0], const[3], input[0].zzzz, temp[1]; 3: MAD temp[1], const[4], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: SUB temp[1].x, temp[1].wwww, const[0].xxxx; 6: MOV temp[0].z, temp[1].xyxw; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[2], temp[0]; 10: MOV output[0], temp[2]; 11: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[2], input[0].yyyy; 1: MAD temp[1], const[1], input[0].xxxx, temp[0]; 2: MAD temp[0], const[3], input[0].zzzz, temp[1]; 3: MAD temp[1], const[4], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: ADD temp[1].x, temp[1].wwww, -const[0].xxxx; 6: MOV temp[0].z, temp[1].xyxw; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[2], temp[0]; 10: MOV output[0], temp[2]; 11: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[2], input[0].yyyy; 1: MAD temp[1], const[1], input[0].xxxx, temp[0]; 2: MAD temp[0], const[3], input[0].zzzz, temp[1]; 3: MAD temp[1], const[4], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: ADD temp[1].x, temp[1].wwww, -const[0].xxxx; 6: MOV temp[0].z, temp[1].xyxw; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[2], temp[0]; 10: MOV output[0], temp[2]; 11: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0].xyw, const[2].xy_w, input[0].yy_y; 1: MAD temp[1].xyw, const[1].xy_w, input[0].xx_x, temp[0].xy_w; 2: MAD temp[0].xyw, const[3].xy_w, input[0].zz_z, temp[1].xy_w; 3: MAD temp[1].xyw, const[4].xy_w, input[0].ww_w, temp[0].xy_w; 4: MOV temp[0].xyw, temp[1].xy_w; 5: ADD temp[1].x, temp[1].w___, -const[0].x___; 6: MOV temp[0].z, temp[1].__x_; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[2], temp[0]; 10: MOV output[0], temp[2]; 11: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0].xyw, const[2].xy_w, input[0].yy_y; 1: MAD temp[1].xyw, const[1].xy_w, input[0].xx_x, temp[0].xy_w; 2: MAD temp[0].xyw, const[3].xy_w, input[0].zz_z, temp[1].xy_w; 3: MAD temp[1].xyw, const[4].xy_w, input[0].ww_w, temp[0].xy_w; 4: MOV temp[0].xyw, temp[1].xy_w; 5: ADD temp[1].x, temp[1].w___, -const[0].x___; 6: MOV temp[0].z, temp[1].__x_; 7: MOV output[1], input[2]; 8: MOV output[2], input[1]; 9: MOV temp[0], temp[0]; 10: MOV output[0], temp[0]; 11: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00b00002 dst: 0t op: VE_MULTIPLY src0: 0x00f90042 reg: 2c swiz: X/ Y/ U/ W src1: 0x00792001 reg: 0i swiz: Y/ Y/ U/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00b02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00f90022 reg: 1c swiz: X/ Y/ U/ W src1: 0x00380001 reg: 0i swiz: X/ X/ U/ X src2: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W 2: op: 0x00b00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00f90062 reg: 3c swiz: X/ Y/ U/ W src1: 0x00ba4001 reg: 0i swiz: Z/ Z/ U/ Z src2: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W 3: op: 0x00b02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00f90082 reg: 4c swiz: X/ Y/ U/ W src1: 0x00fb6001 reg: 0i swiz: W/ W/ U/ W src2: 0x00f90000 reg: 0t swiz: X/ Y/ U/ W 4: op: 0x00b00003 dst: 0t op: VE_ADD src0: 0x00f90020 reg: 1t swiz: X/ Y/ U/ W src1: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 5: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff6020 reg: 1t swiz: W/ U/ U/ U src1: 0x1fff0002 reg: 0c swiz: -X/-U/-U/-U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 6: op: 0x00400003 dst: 0t 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 7: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 8: op: 0x00f04203 dst: 2o 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 9: op: 0x00f00003 dst: 0t 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 10: 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 11: 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 vertex program VERT DCL IN[0] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..4] DCL TEMP[0..1] 0: MOV OUT[0], IN[0] 1: MUL TEMP[0], CONST[2], IN[0].yyyy 2: MAD TEMP[1], CONST[1], IN[0].xxxx, TEMP[0] 3: MAD TEMP[0], CONST[3], IN[0].zzzz, TEMP[1] 4: MAD TEMP[1], CONST[4], IN[0].wwww, TEMP[0] 5: MOV OUT[1], TEMP[1] 6: MOV OUT[2], CONST[0] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV temp[2], input[0]; 1: MUL temp[0], const[2], input[0].yyyy; 2: MAD temp[1], const[1], input[0].xxxx, temp[0]; 3: MAD temp[0], const[3], input[0].zzzz, temp[1]; 4: MAD temp[1], const[4], input[0].wwww, temp[0]; 5: MOV output[1], temp[1]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV temp[2], input[0]; 1: MUL temp[0], const[2], input[0].yyyy; 2: MAD temp[1], const[1], input[0].xxxx, temp[0]; 3: MAD temp[0], const[3], input[0].zzzz, temp[1]; 4: MAD temp[1], const[4], input[0].wwww, temp[0]; 5: MOV output[1], temp[1]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV temp[2], input[0]; 1: MUL temp[0], const[2], input[0].yyyy; 2: MAD temp[1], const[1], input[0].xxxx, temp[0]; 3: MAD temp[0], const[3], input[0].zzzz, temp[1]; 4: MAD temp[1], const[4], input[0].wwww, temp[0]; 5: MOV output[1], temp[1]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV temp[2], input[0]; 1: MUL temp[0], const[2], input[0].yyyy; 2: MAD temp[1], const[1], input[0].xxxx, temp[0]; 3: MAD temp[0], const[3], input[0].zzzz, temp[1]; 4: MAD temp[1], const[4], input[0].wwww, temp[0]; 5: MOV output[1], temp[1]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV temp[2], input[0]; 1: MUL temp[0], const[2], input[0].yyyy; 2: MAD temp[1], const[1], input[0].xxxx, temp[0]; 3: MAD temp[0], const[3], input[0].zzzz, temp[1]; 4: MAD temp[1], const[4], input[0].wwww, temp[0]; 5: MOV output[1], temp[1]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV temp[0], input[0]; 1: MUL temp[1], const[2], input[0].yyyy; 2: MAD temp[2], const[1], input[0].xxxx, temp[1]; 3: MAD temp[1], const[3], input[0].zzzz, temp[2]; 4: MAD temp[2], const[4], input[0].wwww, temp[1]; 5: MOV output[1], temp[2]; 6: MOV output[2], const[0]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00003 dst: 0t 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 1: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 4: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10082 reg: 4c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 7: 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 8: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 10 warnings Warning: CONST[0]: Register never used Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used Warning: CONST[25]: Register never used 0 errors, 8 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..11] DCL CONST[14..25] DCL TEMP[0..7] IMM FLT32 { 0.0000, 255.0000, 2.0000, 1.0000} IMM FLT32 { 255.0000, 2.0000, 1.0000, 3.1416} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0], IN[0] 2: MOV TEMP[1].xyz, IN[1] 3: RCP TEMP[2].w, IMM[1].xxxx 4: MUL TEMP[3].xyz, IN[1], TEMP[2].wwww 5: MUL TEMP[1].xyz, TEMP[3], IMM[1].yyyy 6: SUB TEMP[2].xyz, TEMP[1], IMM[1].zzzz 7: RCP TEMP[2].w, IMM[1].xxxx 8: MUL TEMP[3], IN[2], TEMP[2].wwww 9: MOV TEMP[4].zw, TEMP[3] 10: MOV TEMP[2].w, IMM[1].wwww 11: MOV TEMP[3].xy, TEMP[3] 12: MUL TEMP[1].w, TEMP[4].wwww, IMM[1].wwww 13: ADD TEMP[3].w, CONST[10].xxxx, TEMP[1].wwww 14: MUL TEMP[1].x, TEMP[3].wwww, CONST[11].zzzz 15: SIN TEMP[3].w, TEMP[1].xxxx 16: MUL TEMP[3].z, TEMP[3].wwww, CONST[11].wwww 17: MUL TEMP[1].y, TEMP[4].zzzz, TEMP[3].zzzz 18: ADD TEMP[0].x, IN[0].xxxx, TEMP[1].yyyy 19: MOV TEMP[3].w, TEMP[0].xxxx 20: MUL TEMP[4], CONST[15], TEMP[0].yyyy 21: MAD TEMP[5], CONST[14], TEMP[0].xxxx, TEMP[4] 22: MAD TEMP[4], CONST[16], TEMP[0].zzzz, TEMP[5] 23: MAD TEMP[6].xyz, CONST[17], TEMP[0].wwww, TEMP[4] 24: MOV TEMP[7].xyz, TEMP[6] 25: DP3 TEMP[7].w, TEMP[6], TEMP[6] 26: RSQ TEMP[1].w, TEMP[7].wwww 27: MUL TEMP[1].z, TEMP[7].wwww, TEMP[1].wwww 28: MOV TEMP[1].y, TEMP[1].zzzz 29: MUL TEMP[5], CONST[19], TEMP[0].yyyy 30: MAD TEMP[6], CONST[18], TEMP[0].xxxx, TEMP[5] 31: MAD TEMP[5], CONST[20], TEMP[0].zzzz, TEMP[6] 32: MAD TEMP[4], CONST[21], TEMP[0].wwww, TEMP[5] 33: MOV OUT[0], TEMP[4] 34: MOV TEMP[5].xy, TEMP[3] 35: MOV TEMP[4].xy, TEMP[3] 36: MOV TEMP[4].z, IMM[0].xxxx 37: MOV TEMP[4].w, IMM[0].xxxx 38: MOV OUT[1], TEMP[4] 39: MAD TEMP[1].w, TEMP[1].zzzz, CONST[11].xxxx, CONST[11].yyyy 40: MAX TEMP[4].x, TEMP[1].wwww, IMM[0].xxxx 41: MIN TEMP[7].w, TEMP[4].xxxx, IMM[1].zzzz 42: SUB TEMP[1].z, IMM[1].zzzz, TEMP[7].wwww 43: MOV OUT[2].x, IMM[1].zzzz 44: MOV OUT[2].y, IMM[1].zzzz 45: MOV OUT[2].z, IMM[1].zzzz 46: MOV OUT[2].w, TEMP[1].zyzz 47: MOV TEMP[4].xyz, CONST[1] 48: MUL TEMP[0].xyz, CONST[23], TEMP[2].yyyw 49: MAD TEMP[3].xyz, CONST[22], TEMP[2].xxxw, TEMP[0] 50: MAD TEMP[0].xyz, CONST[24], TEMP[2].zzzw, TEMP[3] 51: DP3 TEMP[1].z, TEMP[0], TEMP[0] 52: RSQ TEMP[1].z, TEMP[1].zzzz 53: MUL TEMP[6].xyz, TEMP[0], TEMP[1].zzzz 54: MOV TEMP[5].xyz, TEMP[6] 55: DP3 TEMP[1].w, TEMP[6], CONST[1] 56: MAX TEMP[1].z, TEMP[1].wwww, IMM[0].xxxx 57: MUL OUT[3].xyz, CONST[3], TEMP[1].zzzz 58: MOV OUT[4].z, TEMP[1].yyyw 59: DP3 TEMP[5].w, TEMP[7], TEMP[7] 60: RSQ TEMP[4].w, TEMP[5].wwww 61: MUL TEMP[1].w, TEMP[5].wwww, TEMP[4].wwww 62: MOV TEMP[4].w, -TEMP[1].wwww 63: MUL TEMP[5].w, -TEMP[1].wwww, CONST[8].xxxx 64: EX2 TEMP[4].w, TEMP[5].wwww 65: SUB TEMP[5].w, IMM[1].zzzz, TEMP[4].wwww 66: MOV OUT[4].w, TEMP[5].wyzw 67: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: SUB temp[2].xyz, temp[1], const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: SIN temp[3].w, temp[1].xxxx; 16: MUL temp[3].z, temp[3].wwww, const[11].wwww; 17: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 18: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 19: MOV temp[3].w, temp[0].xxxx; 20: MUL temp[4], const[15], temp[0].yyyy; 21: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 22: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 23: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 24: MOV temp[7].xyz, temp[6]; 25: DP3 temp[7].w, temp[6], temp[6]; 26: RSQ temp[1].w, temp[7].wwww; 27: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 28: MOV temp[1].y, temp[1].zzzz; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[5].xy, temp[3]; 35: MOV temp[4].xy, temp[3]; 36: MOV temp[4].z, const[26].xxxx; 37: MOV temp[4].w, const[26].xxxx; 38: MOV output[1], temp[4]; 39: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 40: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 41: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 42: SUB temp[1].z, const[27].zzzz, temp[7].wwww; 43: MOV output[2].x, const[27].zzzz; 44: MOV output[2].y, const[27].zzzz; 45: MOV output[2].z, const[27].zzzz; 46: MOV output[2].w, temp[1].zyzz; 47: MOV temp[4].xyz, const[1]; 48: MUL temp[0].xyz, const[23], temp[2].yyyw; 49: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 50: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 51: DP3 temp[1].z, temp[0], temp[0]; 52: RSQ temp[1].z, temp[1].zzzz; 53: MUL temp[6].xyz, temp[0], temp[1].zzzz; 54: MOV temp[5].xyz, temp[6]; 55: DP3 temp[1].w, temp[6], const[1]; 56: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 57: MUL output[3].xyz, const[3], temp[1].zzzz; 58: MOV output[4].z, temp[1].yyyw; 59: DP3 temp[5].w, temp[7], temp[7]; 60: RSQ temp[4].w, temp[5].wwww; 61: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 62: MOV temp[4].w, -temp[1].wwww; 63: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 64: EX2 temp[4].w, temp[5].wwww; 65: SUB temp[5].w, const[27].zzzz, temp[4].wwww; 66: MOV output[4].w, temp[5].wyzw; 67: MOV output[0], temp[8]; 68: MOV output[5], temp[8]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: SUB temp[2].xyz, temp[1], const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: SIN temp[3].w, temp[1].xxxx; 16: MUL temp[3].z, temp[3].wwww, const[11].wwww; 17: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 18: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 19: MOV temp[3].w, temp[0].xxxx; 20: MUL temp[4], const[15], temp[0].yyyy; 21: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 22: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 23: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 24: MOV temp[7].xyz, temp[6]; 25: DP3 temp[7].w, temp[6], temp[6]; 26: RSQ temp[1].w, temp[7].wwww; 27: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 28: MOV temp[1].y, temp[1].zzzz; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[5].xy, temp[3]; 35: MOV temp[4].xy, temp[3]; 36: MOV temp[4].z, const[26].xxxx; 37: MOV temp[4].w, const[26].xxxx; 38: MOV output[1], temp[4]; 39: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 40: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 41: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 42: SUB temp[1].z, const[27].zzzz, temp[7].wwww; 43: MOV output[2].x, const[27].zzzz; 44: MOV output[2].y, const[27].zzzz; 45: MOV output[2].z, const[27].zzzz; 46: MOV output[2].w, temp[1].zyzz; 47: MOV temp[4].xyz, const[1]; 48: MUL temp[0].xyz, const[23], temp[2].yyyw; 49: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 50: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 51: DP3 temp[1].z, temp[0], temp[0]; 52: RSQ temp[1].z, temp[1].zzzz; 53: MUL temp[6].xyz, temp[0], temp[1].zzzz; 54: MOV temp[5].xyz, temp[6]; 55: DP3 temp[1].w, temp[6], const[1]; 56: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 57: MUL output[3].xyz, const[3], temp[1].zzzz; 58: MOV output[4].z, temp[1].yyyw; 59: DP3 temp[5].w, temp[7], temp[7]; 60: RSQ temp[4].w, temp[5].wwww; 61: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 62: MOV temp[4].w, -temp[1].wwww; 63: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 64: EX2 temp[4].w, temp[5].wwww; 65: SUB temp[5].w, const[27].zzzz, temp[4].wwww; 66: MOV output[4].w, temp[5].wyzw; 67: MOV output[0], temp[8]; 68: MOV output[5], temp[8]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: ADD temp[2].xyz, temp[1], -const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: MAD temp[9].w, temp[1].xxxx, const[28].xxxx, const[28].yyyy; 16: FRC temp[9].w, temp[9]; 17: MAD temp[9].w, temp[9], const[28].zzzz, const[28].wwww; 18: SIN temp[3].w, temp[9].wwww; 19: MUL temp[3].z, temp[3].wwww, const[11].wwww; 20: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 21: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 22: MOV temp[3].w, temp[0].xxxx; 23: MUL temp[4], const[15], temp[0].yyyy; 24: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 25: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 26: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 27: MOV temp[7].xyz, temp[6]; 28: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 29: RSQ temp[1].w, temp[7].wwww; 30: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 31: MOV temp[1].y, temp[1].zzzz; 32: MUL temp[5], const[19], temp[0].yyyy; 33: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 34: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 35: MAD temp[4], const[21], temp[0].wwww, temp[5]; 36: MOV temp[8], temp[4]; 37: MOV temp[5].xy, temp[3]; 38: MOV temp[4].xy, temp[3]; 39: MOV temp[4].z, const[26].xxxx; 40: MOV temp[4].w, const[26].xxxx; 41: MOV output[1], temp[4]; 42: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 43: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 44: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 45: ADD temp[1].z, const[27].zzzz, -temp[7].wwww; 46: MOV output[2].x, const[27].zzzz; 47: MOV output[2].y, const[27].zzzz; 48: MOV output[2].z, const[27].zzzz; 49: MOV output[2].w, temp[1].zyzz; 50: MOV temp[4].xyz, const[1]; 51: MUL temp[0].xyz, const[23], temp[2].yyyw; 52: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 53: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 54: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 55: RSQ temp[1].z, temp[1].zzzz; 56: MUL temp[6].xyz, temp[0], temp[1].zzzz; 57: MOV temp[5].xyz, temp[6]; 58: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 59: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 60: MUL output[3].xyz, const[3], temp[1].zzzz; 61: MOV output[4].z, temp[1].yyyw; 62: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 63: RSQ temp[4].w, temp[5].wwww; 64: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 65: MOV temp[4].w, -temp[1].wwww; 66: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 67: EX2 temp[4].w, temp[5].wwww; 68: ADD temp[5].w, const[27].zzzz, -temp[4].wwww; 69: MOV output[4].w, temp[5].wyzw; 70: MOV output[0], temp[8]; 71: MOV output[5], temp[8]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[26].xxxx; 1: MOV temp[0], input[0]; 2: MOV temp[1].xyz, input[1]; 3: RCP temp[2].w, const[27].xxxx; 4: MUL temp[3].xyz, input[1], temp[2].wwww; 5: MUL temp[1].xyz, temp[3], const[27].yyyy; 6: ADD temp[2].xyz, temp[1], -const[27].zzzz; 7: RCP temp[2].w, const[27].xxxx; 8: MUL temp[3], input[2], temp[2].wwww; 9: MOV temp[4].zw, temp[3]; 10: MOV temp[2].w, const[27].wwww; 11: MOV temp[3].xy, temp[3]; 12: MUL temp[1].w, temp[4].wwww, const[27].wwww; 13: ADD temp[3].w, const[10].xxxx, temp[1].wwww; 14: MUL temp[1].x, temp[3].wwww, const[11].zzzz; 15: MAD temp[9].w, temp[1].xxxx, const[28].xxxx, const[28].yyyy; 16: FRC temp[9].w, temp[9]; 17: MAD temp[9].w, temp[9], const[28].zzzz, const[28].wwww; 18: SIN temp[3].w, temp[9].wwww; 19: MUL temp[3].z, temp[3].wwww, const[11].wwww; 20: MUL temp[1].y, temp[4].zzzz, temp[3].zzzz; 21: ADD temp[0].x, input[0].xxxx, temp[1].yyyy; 22: MOV temp[3].w, temp[0].xxxx; 23: MUL temp[4], const[15], temp[0].yyyy; 24: MAD temp[5], const[14], temp[0].xxxx, temp[4]; 25: MAD temp[4], const[16], temp[0].zzzz, temp[5]; 26: MAD temp[6].xyz, const[17], temp[0].wwww, temp[4]; 27: MOV temp[7].xyz, temp[6]; 28: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 29: RSQ temp[1].w, temp[7].wwww; 30: MUL temp[1].z, temp[7].wwww, temp[1].wwww; 31: MOV temp[1].y, temp[1].zzzz; 32: MUL temp[5], const[19], temp[0].yyyy; 33: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 34: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 35: MAD temp[4], const[21], temp[0].wwww, temp[5]; 36: MOV temp[8], temp[4]; 37: MOV temp[5].xy, temp[3]; 38: MOV temp[4].xy, temp[3]; 39: MOV temp[4].z, const[26].xxxx; 40: MOV temp[4].w, const[26].xxxx; 41: MOV output[1], temp[4]; 42: MAD temp[1].w, temp[1].zzzz, const[11].xxxx, const[11].yyyy; 43: MAX temp[4].x, temp[1].wwww, const[26].xxxx; 44: MIN temp[7].w, temp[4].xxxx, const[27].zzzz; 45: ADD temp[1].z, const[27].zzzz, -temp[7].wwww; 46: MOV output[2].x, const[27].zzzz; 47: MOV output[2].y, const[27].zzzz; 48: MOV output[2].z, const[27].zzzz; 49: MOV output[2].w, temp[1].zyzz; 50: MOV temp[4].xyz, const[1]; 51: MUL temp[0].xyz, const[23], temp[2].yyyw; 52: MAD temp[3].xyz, const[22], temp[2].xxxw, temp[0]; 53: MAD temp[0].xyz, const[24], temp[2].zzzw, temp[3]; 54: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 55: RSQ temp[1].z, temp[1].zzzz; 56: MUL temp[6].xyz, temp[0], temp[1].zzzz; 57: MOV temp[5].xyz, temp[6]; 58: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 59: MAX temp[1].z, temp[1].wwww, const[26].xxxx; 60: MUL output[3].xyz, const[3], temp[1].zzzz; 61: MOV output[4].z, temp[1].yyyw; 62: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 63: RSQ temp[4].w, temp[5].wwww; 64: MUL temp[1].w, temp[5].wwww, temp[4].wwww; 65: MOV temp[4].w, -temp[1].wwww; 66: MUL temp[5].w, -temp[1].wwww, const[8].xxxx; 67: EX2 temp[4].w, temp[5].wwww; 68: ADD temp[5].w, const[27].zzzz, -temp[4].wwww; 69: MOV output[4].w, temp[5].wyzw; 70: MOV output[0], temp[8]; 71: MOV output[5], temp[8]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[26].xx__; 1: MOV temp[0].yzw, input[0]._yzw; 2: RCP temp[2].w, const[27].x___; 3: MUL temp[3].xyz, input[1].xyz_, temp[2].www_; 4: MUL temp[1].xyz, temp[3].xyz_, const[27].yyy_; 5: ADD temp[2].xyz, temp[1].xyz_, -const[27].zzz_; 6: RCP temp[2].w, const[27].x___; 7: MUL temp[3], input[2], temp[2].wwww; 8: MOV temp[4].zw, temp[3].__zw; 9: MOV temp[3].xy, temp[3].xy__; 10: MUL temp[1].w, temp[4].___w, const[27].___w; 11: ADD temp[3].w, const[10].___x, temp[1].___w; 12: MUL temp[1].x, temp[3].w___, const[11].z___; 13: MAD temp[9].w, temp[1].___x, const[28].___x, const[28].___y; 14: FRC temp[9].w, temp[9].___w; 15: MAD temp[9].w, temp[9].___w, const[28].___z, const[28].___w; 16: SIN temp[3].w, temp[9].w___; 17: MUL temp[3].z, temp[3].__w_, const[11].__w_; 18: MUL temp[1].y, temp[4]._z__, temp[3]._z__; 19: ADD temp[0].x, input[0].x___, temp[1].y___; 20: MUL temp[4].xyz, const[15].xyz_, temp[0].yyy_; 21: MAD temp[5].xyz, const[14].xyz_, temp[0].xxx_, temp[4].xyz_; 22: MAD temp[4].xyz, const[16].xyz_, temp[0].zzz_, temp[5].xyz_; 23: MAD temp[6].xyz, const[17].xyz_, temp[0].www_, temp[4].xyz_; 24: MOV temp[7].xyz, temp[6].xyz_; 25: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 26: RSQ temp[1].w, temp[7].w___; 27: MUL temp[1].z, temp[7].__w_, temp[1].__w_; 28: MOV temp[1].y, temp[1]._z__; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[4].xy, temp[3].xy__; 35: MOV temp[4].z, const[26].__x_; 36: MOV temp[4].w, const[26].___x; 37: MOV output[1], temp[4]; 38: MAD temp[1].w, temp[1].___z, const[11].___x, const[11].___y; 39: MAX temp[4].x, temp[1].w___, const[26].x___; 40: MIN temp[7].w, temp[4].___x, const[27].___z; 41: ADD temp[1].z, const[27].__z_, -temp[7].__w_; 42: MOV output[2].x, const[27].z___; 43: MOV output[2].y, const[27]._z__; 44: MOV output[2].z, const[27].__z_; 45: MOV output[2].w, temp[1].___z; 46: MUL temp[0].xyz, const[23].xyz_, temp[2].yyy_; 47: MAD temp[3].xyz, const[22].xyz_, temp[2].xxx_, temp[0].xyz_; 48: MAD temp[0].xyz, const[24].xyz_, temp[2].zzz_, temp[3].xyz_; 49: DP4 temp[1].z, temp[0].xyz0, temp[0].xyz0; 50: RSQ temp[1].z, temp[1].z___; 51: MUL temp[6].xyz, temp[0].xyz_, temp[1].zzz_; 52: DP4 temp[1].w, temp[6].xyz0, const[1].xyz0; 53: MAX temp[1].z, temp[1].__w_, const[26].__x_; 54: MUL output[3].xyz, const[3].xyz_, temp[1].zzz_; 55: MOV output[4].z, temp[1].__y_; 56: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 57: RSQ temp[4].w, temp[5].w___; 58: MUL temp[1].w, temp[5].___w, temp[4].___w; 59: MUL temp[5].w, -temp[1].___w, const[8].___x; 60: EX2 temp[4].w, temp[5].w___; 61: ADD temp[5].w, const[27].___z, -temp[4].___w; 62: MOV output[4].w, temp[5].___w; 63: MOV output[0], temp[8]; 64: MOV output[5], temp[8]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[26].xx__; 1: MOV temp[0].yzw, input[0]._yzw; 2: RCP temp[1].w, const[27].x___; 3: MUL temp[2].xyz, input[1].xyz_, temp[1].www_; 4: MUL temp[3].xyz, temp[2].xyz_, const[27].yyy_; 5: ADD temp[1].xyz, temp[3].xyz_, -const[27].zzz_; 6: RCP temp[1].w, const[27].x___; 7: MUL temp[2], input[2], temp[1].wwww; 8: MOV temp[4].zw, temp[2].__zw; 9: MOV temp[2].xy, temp[2].xy__; 10: MUL temp[3].w, temp[4].___w, const[27].___w; 11: ADD temp[2].w, const[10].___x, temp[3].___w; 12: MUL temp[3].x, temp[2].w___, const[11].z___; 13: MAD temp[5].w, temp[3].___x, const[28].___x, const[28].___y; 14: FRC temp[5].w, temp[5].___w; 15: MAD temp[5].w, temp[5].___w, const[28].___z, const[28].___w; 16: SIN temp[2].w, temp[5].w___; 17: MUL temp[2].z, temp[2].__w_, const[11].__w_; 18: MUL temp[3].y, temp[4]._z__, temp[2]._z__; 19: ADD temp[0].x, input[0].x___, temp[3].y___; 20: MUL temp[4].xyz, const[15].xyz_, temp[0].yyy_; 21: MAD temp[5].xyz, const[14].xyz_, temp[0].xxx_, temp[4].xyz_; 22: MAD temp[4].xyz, const[16].xyz_, temp[0].zzz_, temp[5].xyz_; 23: MAD temp[6].xyz, const[17].xyz_, temp[0].www_, temp[4].xyz_; 24: MOV temp[7].xyz, temp[6].xyz_; 25: DP4 temp[7].w, temp[6].xyz0, temp[6].xyz0; 26: RSQ temp[3].w, temp[7].w___; 27: MUL temp[3].z, temp[7].__w_, temp[3].__w_; 28: MOV temp[3].y, temp[3]._z__; 29: MUL temp[5], const[19], temp[0].yyyy; 30: MAD temp[6], const[18], temp[0].xxxx, temp[5]; 31: MAD temp[5], const[20], temp[0].zzzz, temp[6]; 32: MAD temp[4], const[21], temp[0].wwww, temp[5]; 33: MOV temp[8], temp[4]; 34: MOV temp[4].xy, temp[2].xy__; 35: MOV temp[4].z, const[26].__x_; 36: MOV temp[4].w, const[26].___x; 37: MOV output[1], temp[4]; 38: MAD temp[3].w, temp[3].___z, const[11].___x, const[11].___y; 39: MAX temp[4].x, temp[3].w___, const[26].x___; 40: MIN temp[7].w, temp[4].___x, const[27].___z; 41: ADD temp[3].z, const[27].__z_, -temp[7].__w_; 42: MOV output[2].x, const[27].z___; 43: MOV output[2].y, const[27]._z__; 44: MOV output[2].z, const[27].__z_; 45: MOV output[2].w, temp[3].___z; 46: MUL temp[0].xyz, const[23].xyz_, temp[1].yyy_; 47: MAD temp[2].xyz, const[22].xyz_, temp[1].xxx_, temp[0].xyz_; 48: MAD temp[0].xyz, const[24].xyz_, temp[1].zzz_, temp[2].xyz_; 49: DP4 temp[3].z, temp[0].xyz0, temp[0].xyz0; 50: RSQ temp[3].z, temp[3].z___; 51: MUL temp[6].xyz, temp[0].xyz_, temp[3].zzz_; 52: DP4 temp[3].w, temp[6].xyz0, const[1].xyz0; 53: MAX temp[3].z, temp[3].__w_, const[26].__x_; 54: MUL output[3].xyz, const[3].xyz_, temp[3].zzz_; 55: MOV output[4].z, temp[3].__y_; 56: DP4 temp[5].w, temp[7].xyz0, temp[7].xyz0; 57: RSQ temp[4].w, temp[5].w___; 58: MUL temp[3].w, temp[5].___w, temp[4].___w; 59: MUL temp[5].w, -temp[3].___w, const[8].___x; 60: EX2 temp[4].w, temp[5].w___; 61: ADD temp[5].w, const[27].___z, -temp[4].___w; 62: MOV output[4].w, temp[5].___w; 63: MOV output[0], temp[8]; 64: MOV output[5], temp[8]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f80342 reg: 26c swiz: X/ X/ U/ U src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 1: op: 0x00e00003 dst: 0t op: VE_ADD src0: 0x00d1e001 reg: 0i swiz: U/ Y/ Z/ W src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 2: op: 0x00802046 dst: 1t op: ME_RECIP_DX src0: 0x00000362 reg: 27c swiz: X/ X/ X/ X src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 3: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 4: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01c92362 reg: 27c swiz: Y/ Y/ Y/ U src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 5: op: 0x00702003 dst: 1t op: VE_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x1fd24362 reg: 27c swiz: -Z/-Z/-Z/-U src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 6: op: 0x00802046 dst: 1t op: ME_RECIP_DX src0: 0x00000362 reg: 27c swiz: X/ X/ X/ X src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 7: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 8: op: 0x00c08003 dst: 4t op: VE_ADD src0: 0x00d7e040 reg: 2t swiz: U/ U/ Z/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 9: op: 0x00304003 dst: 2t 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 10: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe362 reg: 27c swiz: U/ U/ U/ W src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 11: op: 0x00804003 dst: 2t op: VE_ADD src0: 0x003fe142 reg: 10c swiz: U/ U/ U/ X src1: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 12: op: 0x00106002 dst: 3t op: VE_MULTIPLY src0: 0x01ff6040 reg: 2t swiz: W/ U/ U/ U src1: 0x01ff4162 reg: 11c swiz: Z/ U/ U/ U src2: 0x01248162 reg: 11c swiz: 0/ 0/ 0/ 0 13: op: 0x0080a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x003fe060 reg: 3t swiz: U/ U/ U/ X src1: 0x003fe382 reg: 28c swiz: U/ U/ U/ X src2: 0x007fe382 reg: 28c swiz: U/ U/ U/ Y 14: op: 0x0080a006 dst: 5t op: VE_FRACTION src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 15: op: 0x0080a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x00bfe382 reg: 28c swiz: U/ U/ U/ Z src2: 0x00ffe382 reg: 28c swiz: U/ U/ U/ W 16: op: 0x00804050 dst: 2t op: ME_SIN src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 17: op: 0x00404002 dst: 2t op: VE_MULTIPLY src0: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src1: 0x01dfe162 reg: 11c swiz: U/ U/ W/ U src2: 0x01248162 reg: 11c swiz: 0/ 0/ 0/ 0 18: op: 0x00206002 dst: 3t op: VE_MULTIPLY src0: 0x01fae080 reg: 4t swiz: U/ Z/ U/ U src1: 0x01fae040 reg: 2t swiz: U/ Z/ U/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 19: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0001 reg: 0i swiz: X/ U/ U/ U src1: 0x01ff2060 reg: 3t swiz: Y/ U/ U/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 20: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d101e2 reg: 15c swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x0070a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 22: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10202 reg: 16c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U 23: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d10222 reg: 17c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 24: op: 0x0070e003 dst: 7t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 25: op: 0x0080e001 dst: 7t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00806048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x00db60e0 reg: 7t swiz: W/ W/ W/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 27: op: 0x00406002 dst: 3t op: VE_MULTIPLY src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 28: op: 0x00206003 dst: 3t op: VE_ADD src0: 0x01fae060 reg: 3t swiz: U/ Z/ U/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 29: op: 0x00f0a002 dst: 5t op: VE_MULTIPLY src0: 0x00d10262 reg: 19c swiz: X/ Y/ Z/ W src1: 0x00492000 reg: 0t swiz: Y/ Y/ Y/ Y src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 30: op: 0x00f0c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W 31: op: 0x00f0a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x00d10282 reg: 20c swiz: X/ Y/ Z/ W src1: 0x00924000 reg: 0t swiz: Z/ Z/ Z/ Z src2: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W 32: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d102a2 reg: 21c swiz: X/ Y/ Z/ W src1: 0x00db6000 reg: 0t swiz: W/ W/ W/ W src2: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W 33: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 34: op: 0x00308003 dst: 4t 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 35: op: 0x00408003 dst: 4t op: VE_ADD src0: 0x01c7e342 reg: 26c swiz: U/ U/ X/ U src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 36: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 37: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 38: op: 0x00806004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src1: 0x003fe162 reg: 11c swiz: U/ U/ U/ X src2: 0x007fe162 reg: 11c swiz: U/ U/ U/ Y 39: op: 0x00108007 dst: 4t op: VE_MAXIMUM src0: 0x01ff6060 reg: 3t swiz: W/ U/ U/ U src1: 0x01ff0342 reg: 26c swiz: X/ U/ U/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 40: op: 0x0080e008 dst: 7t op: VE_MINIMUM src0: 0x003fe080 reg: 4t swiz: U/ U/ U/ X src1: 0x00bfe362 reg: 27c swiz: U/ U/ U/ Z src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 41: op: 0x00406003 dst: 3t op: VE_ADD src0: 0x01d7e362 reg: 27c swiz: U/ U/ Z/ U src1: 0x1fdfe0e0 reg: 7t swiz: -U/-U/-W/-U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 42: op: 0x00104203 dst: 2o op: VE_ADD src0: 0x01ff4362 reg: 27c swiz: Z/ U/ U/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 43: op: 0x00204203 dst: 2o op: VE_ADD src0: 0x01fae362 reg: 27c swiz: U/ Z/ U/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 44: op: 0x00404203 dst: 2o op: VE_ADD src0: 0x01d7e362 reg: 27c swiz: U/ U/ Z/ U src1: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 src2: 0x01248362 reg: 27c swiz: 0/ 0/ 0/ 0 45: op: 0x00804203 dst: 2o op: VE_ADD src0: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 46: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d102e2 reg: 23c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 47: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d102c2 reg: 22c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 48: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d10302 reg: 24c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 49: op: 0x00406001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src1: 0x01110000 reg: 0t swiz: X/ Y/ Z/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 50: op: 0x00406048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x00924060 reg: 3t swiz: Z/ Z/ Z/ Z src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U src1: 0x01d24060 reg: 3t swiz: Z/ Z/ Z/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 52: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 53: op: 0x00406007 dst: 3t op: VE_MAXIMUM src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x01c7e342 reg: 26c swiz: U/ U/ X/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 54: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01d24060 reg: 3t swiz: Z/ Z/ Z/ U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 55: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01cfe060 reg: 3t swiz: U/ U/ Y/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 56: op: 0x0080a001 dst: 5t op: VE_DOT_PRODUCT src0: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src1: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 57: op: 0x00808048 dst: 4t op: ME_RECIP_SQRT_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 58: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 59: op: 0x0080a002 dst: 5t op: VE_MULTIPLY src0: 0x1effe060 reg: 3t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 60: op: 0x0080804b dst: 4t op: ME_EXP_BASE2_FULL_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 61: op: 0x0080a003 dst: 5t op: VE_ADD src0: 0x00bfe362 reg: 27c swiz: U/ U/ U/ Z src1: 0x1effe080 reg: 4t swiz: -U/-U/-U/-W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 62: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 63: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 64: op: 0x00f0a203 dst: 5o op: VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV OUT[4], CONST[226] 1: MOV TEMP[0].x, IN[3] 2: MOV TEMP[1].x, IN[4] 3: MOV TEMP[2].xy, CONST[226].xyyy 4: MOV TEMP[3].yz, CONST[226].xyyy 5: MOV TEMP[4], CONST[226].yxyy 6: MOV TEMP[5], CONST[226].yyxy 7: MOV TEMP[6], CONST[226].yyyx 8: MOV TEMP[7], CONST[226].xyyy 9: MOV TEMP[8], CONST[226].yxyy 10: MOV TEMP[9], CONST[226].yyxy 11: MOV TEMP[10].w, CONST[226].xxxx 12: BGNLOOP :36 13: SGE TEMP[11].w, TEMP[10].wwww, CONST[227].xxxx 14: IF TEMP[11].wwww :16 15: BRK 16: ENDIF 17: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 18: TRUNC TEMP[5].y, TEMP[5].xxxx 19: ARL ADDR[0].x, TEMP[5].yyyy 20: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 21: ADD TEMP[7], TEMP[7], TEMP[4] 22: MOV TEMP[3].yz, TEMP[7] 23: ADD TEMP[6].x, TEMP[0].xxxx, CONST[227].yyyy 24: TRUNC TEMP[6].y, TEMP[6].xxxx 25: ARL ADDR[0].x, TEMP[6].yyyy 26: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 27: ADD TEMP[8], TEMP[8], TEMP[5] 28: MOV TEMP[4], TEMP[8] 29: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].zzzz 30: TRUNC TEMP[2].y, TEMP[2].xxxx 31: ARL ADDR[0].x, TEMP[2].yyyy 32: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 33: ADD TEMP[9], TEMP[9], TEMP[6] 34: MOV TEMP[5], TEMP[9] 35: ADD TEMP[10].w, TEMP[10].wwww, CONST[227].yyyy 36: ENDLOOP :12 37: MOV TEMP[0].xyz, TEMP[7] 38: MOV TEMP[1].xyz, TEMP[8] 39: MOV TEMP[11].xyz, TEMP[9] 40: MOV TEMP[2].xyz, TEMP[7] 41: MOV TEMP[12].xyz, TEMP[8] 42: MOV TEMP[13].xyz, TEMP[9] 43: MOV TEMP[4], TEMP[2] 44: MOV TEMP[5], TEMP[12] 45: MOV TEMP[6], TEMP[13] 46: MOV TEMP[3].y, TEMP[7].wwww 47: MOV TEMP[3].z, TEMP[8].wwww 48: MOV TEMP[12].x, TEMP[3].yyyy 49: MOV TEMP[12].y, TEMP[3].zzzw 50: MOV TEMP[12].z, TEMP[9].wwww 51: MOV TEMP[2].xyz, TEMP[12] 52: MOV TEMP[0].xyz, IN[0] 53: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 54: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 55: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 56: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 57: MOV TEMP[7].xyz, TEMP[12] 58: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 59: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 60: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 61: MOV TEMP[12].xyz, TEMP[13] 62: DP3 TEMP[3].y, TEMP[13], TEMP[13] 63: RSQ TEMP[3].y, TEMP[3].yyyy 64: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 65: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 66: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 67: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 68: MOV TEMP[12].xyz, TEMP[13] 69: DP3 TEMP[3].y, TEMP[13], TEMP[13] 70: RSQ TEMP[3].y, TEMP[3].yyyy 71: MUL TEMP[0], CONST[229], TEMP[7].yyyy 72: MAD TEMP[1], CONST[228], TEMP[7].xxxx, TEMP[0] 73: MAD TEMP[0], CONST[230], TEMP[7].zzzz, TEMP[1] 74: MAD TEMP[13], CONST[231], CONST[227].yyyy, TEMP[0] 75: MOV TEMP[12].xyz, TEMP[13] 76: MUL TEMP[1], CONST[233], TEMP[7].yyyy 77: MAD TEMP[11], CONST[232], TEMP[7].xxxx, TEMP[1] 78: MAD TEMP[1], CONST[234], TEMP[7].zzzz, TEMP[11] 79: MAD TEMP[0], CONST[235], CONST[227].yyyy, TEMP[1] 80: MOV OUT[0], TEMP[0] 81: MOV OUT[1], IN[2] 82: MOV OUT[2], CONST[0] 83: MOV TEMP[0].xyz, CONST[1] 84: MUL TEMP[4].xyz, CONST[237], TEMP[10].yyyw 85: MAD TEMP[5].xyz, CONST[236], TEMP[10].xxxw, TEMP[4] 86: MAD TEMP[4].xyz, CONST[238], TEMP[10].zzzw, TEMP[5] 87: DP3 TEMP[3].y, TEMP[4], TEMP[4] 88: RSQ TEMP[3].y, TEMP[3].yyyy 89: MUL TEMP[11].xyz, TEMP[4], TEMP[3].yyyy 90: MOV TEMP[1].xyz, TEMP[11] 91: DP3 TEMP[3].z, TEMP[11], CONST[1] 92: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 93: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 94: DP3 TEMP[12].w, TEMP[13], TEMP[13] 95: RSQ TEMP[2].w, TEMP[12].wwww 96: MUL TEMP[3].z, TEMP[12].wwww, TEMP[2].wwww 97: MOV OUT[4].z, TEMP[3].zyzw 98: DP3 TEMP[0].w, TEMP[12], TEMP[12] 99: RSQ TEMP[12].w, TEMP[0].wwww 100: MUL TEMP[2].w, TEMP[0].wwww, TEMP[12].wwww 101: MOV TEMP[12].w, -TEMP[2].wwww 102: MUL TEMP[0].w, -TEMP[2].wwww, CONST[8].xxxx 103: EX2 TEMP[12].w, TEMP[0].wwww 104: SUB TEMP[0].w, CONST[227].yyyy, TEMP[12].wwww 105: MOV OUT[4].w, TEMP[0].wyzw 106: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SGE temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: BRK; 16: ENDIF; 17: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 18: FLR temp[5].y, temp[5].xxxx; 19: ARL addr[0].x, temp[5].yyyy; 20: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 21: ADD temp[7], temp[7], temp[4]; 22: MOV temp[3].yz, temp[7]; 23: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 24: FLR temp[6].y, temp[6].xxxx; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FLR temp[2].y, temp[2].xxxx; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 36: ENDLOOP; 37: MOV temp[0].xyz, temp[7]; 38: MOV temp[1].xyz, temp[8]; 39: MOV temp[11].xyz, temp[9]; 40: MOV temp[2].xyz, temp[7]; 41: MOV temp[12].xyz, temp[8]; 42: MOV temp[13].xyz, temp[9]; 43: MOV temp[4], temp[2]; 44: MOV temp[5], temp[12]; 45: MOV temp[6], temp[13]; 46: MOV temp[3].y, temp[7].wwww; 47: MOV temp[3].z, temp[8].wwww; 48: MOV temp[12].x, temp[3].yyyy; 49: MOV temp[12].y, temp[3].zzzw; 50: MOV temp[12].z, temp[9].wwww; 51: MOV temp[2].xyz, temp[12]; 52: MOV temp[0].xyz, input[0]; 53: MUL temp[1].xyz, temp[5], input[0].yyyw; 54: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 55: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 56: ADD temp[12].xyz, temp[13], temp[12]; 57: MOV temp[7].xyz, temp[12]; 58: MUL temp[0].xyz, temp[5], input[1].yyyw; 59: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 60: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 61: MOV temp[12].xyz, temp[13]; 62: DP3 temp[3].y, temp[13], temp[13]; 63: RSQ temp[3].y, temp[3].yyyy; 64: MUL temp[10].xyz, temp[13], temp[3].yyyy; 65: MUL temp[0].xyz, temp[5], input[5].yyyw; 66: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 67: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 68: MOV temp[12].xyz, temp[13]; 69: DP3 temp[3].y, temp[13], temp[13]; 70: RSQ temp[3].y, temp[3].yyyy; 71: MUL temp[0], const[229], temp[7].yyyy; 72: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 73: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 74: MAD temp[13], const[231], const[227].yyyy, temp[0]; 75: MOV temp[12].xyz, temp[13]; 76: MUL temp[1], const[233], temp[7].yyyy; 77: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 78: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 79: MAD temp[0], const[235], const[227].yyyy, temp[1]; 80: MOV temp[14], temp[0]; 81: MOV output[1], input[2]; 82: MOV output[2], const[0]; 83: MOV temp[0].xyz, const[1]; 84: MUL temp[4].xyz, const[237], temp[10].yyyw; 85: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 86: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 87: DP3 temp[3].y, temp[4], temp[4]; 88: RSQ temp[3].y, temp[3].yyyy; 89: MUL temp[11].xyz, temp[4], temp[3].yyyy; 90: MOV temp[1].xyz, temp[11]; 91: DP3 temp[3].z, temp[11], const[1]; 92: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 93: MUL output[3].xyz, const[3], temp[3].yyyy; 94: DP3 temp[12].w, temp[13], temp[13]; 95: RSQ temp[2].w, temp[12].wwww; 96: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 97: MOV output[4].z, temp[3].zyzw; 98: DP3 temp[0].w, temp[12], temp[12]; 99: RSQ temp[12].w, temp[0].wwww; 100: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 101: MOV temp[12].w, -temp[2].wwww; 102: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 103: EX2 temp[12].w, temp[0].wwww; 104: SUB temp[0].w, const[227].yyyy, temp[12].wwww; 105: MOV output[4].w, temp[0].wyzw; 106: MOV output[0], temp[14]; 107: MOV output[5], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FLR temp[5].y, temp[5].xxxx; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 22: FLR temp[6].y, temp[6].xxxx; 23: ARL addr[0].x, temp[6].yyyy; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 28: FLR temp[2].y, temp[2].xxxx; 29: ARL addr[0].x, temp[2].yyyy; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[7].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[7].yyyy; 71: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 73: MAD temp[13], const[231], const[227].yyyy, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[7].yyyy; 76: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 78: MAD temp[0], const[235], const[227].yyyy, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[4].xyz, const[237], temp[10].yyyw; 84: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 85: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 86: DP3 temp[3].y, temp[4], temp[4]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[4], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: DP3 temp[12].w, temp[13], temp[13]; 94: RSQ temp[2].w, temp[12].wwww; 95: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 96: MOV output[4].z, temp[3].zyzw; 97: DP3 temp[0].w, temp[12], temp[12]; 98: RSQ temp[12].w, temp[0].wwww; 99: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 100: MOV temp[12].w, -temp[2].wwww; 101: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 102: EX2 temp[12].w, temp[0].wwww; 103: SUB temp[0].w, const[227].yyyy, temp[12].wwww; 104: MOV output[4].w, temp[0].wyzw; 105: MOV output[0], temp[14]; 106: MOV output[5], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MAD temp[13], const[231], const[227].yyyy, temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[7].yyyy; 79: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 81: MAD temp[0], const[235], const[227].yyyy, temp[1]; 82: MOV temp[14], temp[0]; 83: MOV output[1], input[2]; 84: MOV output[2], const[0]; 85: MOV temp[0].xyz, const[1]; 86: MUL temp[4].xyz, const[237], temp[10].yyyw; 87: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 88: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 89: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 90: RSQ temp[3].y, temp[3].yyyy; 91: MUL temp[11].xyz, temp[4], temp[3].yyyy; 92: MOV temp[1].xyz, temp[11]; 93: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 94: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 95: MUL output[3].xyz, const[3], temp[3].yyyy; 96: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 97: RSQ temp[2].w, temp[12].wwww; 98: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 99: MOV output[4].z, temp[3].zyzw; 100: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 101: RSQ temp[12].w, temp[0].wwww; 102: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 103: MOV temp[12].w, -temp[2].wwww; 104: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 105: EX2 temp[12].w, temp[0].wwww; 106: ADD temp[0].w, const[227].yyyy, -temp[12].wwww; 107: MOV output[4].w, temp[0].wyzw; 108: MOV output[0], temp[14]; 109: MOV output[5], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MOV temp[18], const[227].yyyy; 77: MAD temp[13], const[231], temp[18], temp[0]; 78: MOV temp[12].xyz, temp[13]; 79: MUL temp[1], const[233], temp[7].yyyy; 80: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 81: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 82: MOV temp[19], const[227].yyyy; 83: MAD temp[0], const[235], temp[19], temp[1]; 84: MOV temp[14], temp[0]; 85: MOV output[1], input[2]; 86: MOV output[2], const[0]; 87: MOV temp[0].xyz, const[1]; 88: MUL temp[4].xyz, const[237], temp[10].yyyw; 89: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 90: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 91: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 92: RSQ temp[3].y, temp[3].yyyy; 93: MUL temp[11].xyz, temp[4], temp[3].yyyy; 94: MOV temp[1].xyz, temp[11]; 95: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 96: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 97: MUL output[3].xyz, const[3], temp[3].yyyy; 98: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 99: RSQ temp[2].w, temp[12].wwww; 100: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 101: MOV output[4].z, temp[3].zyzw; 102: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 103: RSQ temp[12].w, temp[0].wwww; 104: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 105: MOV temp[12].w, -temp[2].wwww; 106: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 107: EX2 temp[12].w, temp[0].wwww; 108: ADD temp[0].w, const[227].yyyy, -temp[12].wwww; 109: MOV output[4].w, temp[0].wyzw; 110: MOV output[0], temp[14]; 111: MOV output[5], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].___w, const[227].___x; 13: IF temp[11].w___; 14: ADD temp[5].x, temp[0].x___, const[226].x___; 15: FRC temp[15].y, temp[5]._x__; 16: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 17: ARL addr[0].x, temp[5].y___; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: ADD temp[6].x, temp[0].x___, const[227].y___; 21: FRC temp[16].y, temp[6]._x__; 22: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 23: ARL addr[0].x, temp[6].y___; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[17].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[7].xyz_; 38: MOV temp[12].xyz, temp[8].xyz_; 39: MOV temp[13].xyz, temp[9].xyz_; 40: MOV temp[4].xyz, temp[2].xyz_; 41: MOV temp[5].xyz, temp[12].xyz_; 42: MOV temp[6].xyz, temp[13].xyz_; 43: MOV temp[3].y, temp[7]._w__; 44: MOV temp[3].z, temp[8].__w_; 45: MOV temp[12].x, temp[3].y___; 46: MOV temp[12].y, temp[3]._z__; 47: MOV temp[12].z, temp[9].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 50: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 52: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 53: MOV temp[7].xyz, temp[12].xyz_; 54: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 58: RSQ temp[3].y, temp[3].y___; 59: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[7].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[7].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[7].zzz_, temp[1].xyz_; 63: MOV temp[18].xyz, const[227].yyy_; 64: MAD temp[13].xyz, const[231].xyz_, temp[18].xyz_, temp[0].xyz_; 65: MOV temp[12].xyz, temp[13].xyz_; 66: MUL temp[1], const[233], temp[7].yyyy; 67: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 69: MOV temp[19], const[227].yyyy; 70: MAD temp[0], const[235], temp[19], temp[1]; 71: MOV temp[14], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[4].xyz, const[237].xyz_, temp[10].yyy_; 75: MAD temp[5].xyz, const[236].xyz_, temp[10].xxx_, temp[4].xyz_; 76: MAD temp[4].xyz, const[238].xyz_, temp[10].zzz_, temp[5].xyz_; 77: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 78: RSQ temp[3].y, temp[3].y___; 79: MUL temp[11].xyz, temp[4].xyz_, temp[3].yyy_; 80: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 81: MAX temp[3].y, temp[3]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 83: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 84: RSQ temp[2].w, temp[12].w___; 85: MUL temp[3].z, temp[12].__w_, temp[2].__w_; 86: MOV output[4].z, temp[3].__z_; 87: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 88: RSQ temp[12].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[12].___w; 90: MUL temp[0].w, -temp[2].___w, const[8].___x; 91: EX2 temp[12].w, temp[0].w___; 92: ADD temp[0].w, const[227].___y, -temp[12].___w; 93: MOV output[4].w, temp[0].___w; 94: MOV output[0], temp[14]; 95: MOV output[5], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[3], const[226].yxyy; 5: MOV temp[4], const[226].yyxy; 6: MOV temp[5], const[226].yyyx; 7: MOV temp[6], const[226].xyyy; 8: MOV temp[7], const[226].yxyy; 9: MOV temp[8], const[226].yyxy; 10: MOV temp[9].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[10].w, temp[9].___w, const[227].___x; 13: IF temp[10].w___; 14: ADD temp[4].x, temp[0].x___, const[226].x___; 15: FRC temp[11].y, temp[4]._x__; 16: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 17: ARL addr[0].x, temp[4].y___; 18: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[6], temp[6], temp[3]; 20: ADD temp[5].x, temp[0].x___, const[227].y___; 21: FRC temp[12].y, temp[5]._x__; 22: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 23: ARL addr[0].x, temp[5].y___; 24: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[7], temp[7], temp[4]; 26: MOV temp[3], temp[7]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[13].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[8], temp[8], temp[5]; 33: MOV temp[4], temp[8]; 34: ADD temp[9].w, temp[9].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[6].xyz_; 38: MOV temp[14].xyz, temp[7].xyz_; 39: MOV temp[15].xyz, temp[8].xyz_; 40: MOV temp[3].xyz, temp[2].xyz_; 41: MOV temp[4].xyz, temp[14].xyz_; 42: MOV temp[5].xyz, temp[15].xyz_; 43: MOV temp[16].y, temp[6]._w__; 44: MOV temp[16].z, temp[7].__w_; 45: MOV temp[14].x, temp[16].y___; 46: MOV temp[14].y, temp[16]._z__; 47: MOV temp[14].z, temp[8].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 50: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 52: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 53: MOV temp[6].xyz, temp[14].xyz_; 54: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[16].y, temp[15].xyz0, temp[15].xyz0; 58: RSQ temp[16].y, temp[16].y___; 59: MUL temp[9].xyz, temp[15].xyz_, temp[16].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[6].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[6].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[6].zzz_, temp[1].xyz_; 63: MOV temp[5].xyz, const[227].yyy_; 64: MAD temp[15].xyz, const[231].xyz_, temp[5].xyz_, temp[0].xyz_; 65: MOV temp[14].xyz, temp[15].xyz_; 66: MUL temp[1], const[233], temp[6].yyyy; 67: MAD temp[10], const[232], temp[6].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[6].zzzz, temp[10]; 69: MOV temp[5], const[227].yyyy; 70: MAD temp[0], const[235], temp[5], temp[1]; 71: MOV temp[1], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[3].xyz, const[237].xyz_, temp[9].yyy_; 75: MAD temp[4].xyz, const[236].xyz_, temp[9].xxx_, temp[3].xyz_; 76: MAD temp[3].xyz, const[238].xyz_, temp[9].zzz_, temp[4].xyz_; 77: DP4 temp[16].y, temp[3].xyz0, temp[3].xyz0; 78: RSQ temp[16].y, temp[16].y___; 79: MUL temp[10].xyz, temp[3].xyz_, temp[16].yyy_; 80: DP4 temp[16].z, temp[10].xyz0, const[1].xyz0; 81: MAX temp[16].y, temp[16]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[16].yyy_; 83: DP4 temp[14].w, temp[15].xyz0, temp[15].xyz0; 84: RSQ temp[2].w, temp[14].w___; 85: MUL temp[16].z, temp[14].__w_, temp[2].__w_; 86: MOV output[4].z, temp[16].__z_; 87: DP4 temp[0].w, temp[14].xyz0, temp[14].xyz0; 88: RSQ temp[14].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[14].___w; 90: MUL temp[0].w, -temp[2].___w, const[8].___x; 91: EX2 temp[14].w, temp[0].w___; 92: ADD temp[0].w, const[227].___y, -temp[14].___w; 93: MOV output[4].w, temp[0].___w; 94: MOV output[0], temp[1]; 95: MOV output[5], temp[1]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 3: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x003ffc62 reg: 227c swiz: U/ U/ U/ X src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 12: op: 0x008d8058 dst: 108t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 13: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 14: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 15: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 16: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff3c62 reg: 227c swiz: Y/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 20: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 21: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 22: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 25: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 26: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff5c62 reg: 227c swiz: Z/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 27: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 28: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 29: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 32: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 33: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 34: op: 0x008d805b dst: 108t op: ME_PRED_SET_POP src0: 0x00e48d80 reg: 108t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 36: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 37: op: 0x0071e003 dst: 15t 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 38: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 39: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 40: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 41: op: 0x00220003 dst: 16t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 42: op: 0x00420003 dst: 16t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 43: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff2200 reg: 16t swiz: Y/ U/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 44: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 45: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 46: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 48: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 49: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 50: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 52: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 53: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 54: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 55: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 56: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 57: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 58: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11ca2 reg: 229c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 59: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d11c82 reg: 228c swiz: X/ Y/ Z/ U src1: 0x01c000c0 reg: 6t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 60: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11cc2 reg: 230c swiz: X/ Y/ Z/ U src1: 0x01d240c0 reg: 6t swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 61: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01c93c62 reg: 227c swiz: Y/ Y/ Y/ U src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 62: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d11ce2 reg: 231c swiz: X/ Y/ Z/ U src1: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 63: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 64: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 65: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 66: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x009240c0 reg: 6t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 67: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00493c62 reg: 227c swiz: Y/ Y/ Y/ Y src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 68: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 69: op: 0x00f02003 dst: 1t 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 70: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 71: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 72: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 73: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 74: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 75: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 76: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 77: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 78: op: 0x00420001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 79: op: 0x00220007 dst: 16t op: VE_MAXIMUM src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 80: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 81: op: 0x0081c001 dst: 14t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 82: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db61c0 reg: 14t swiz: W/ W/ W/ W src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 83: op: 0x00420002 dst: 16t op: VE_MULTIPLY src0: 0x01dfe1c0 reg: 14t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 84: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e200 reg: 16t swiz: U/ U/ Z/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 85: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src1: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 86: op: 0x0081c048 dst: 14t op: ME_RECIP_SQRT_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 87: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 88: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 89: op: 0x0081c04b dst: 14t op: ME_EXP_BASE2_FULL_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 90: op: 0x00800003 dst: 0t op: VE_ADD src0: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src1: 0x1effe1c0 reg: 14t swiz: -U/-U/-U/-W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 91: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 92: 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 93: op: 0x00f0a203 dst: 5o 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: 0x00000002 LOOP: uw-> 0x000b0022 lw-> 0xffff000a Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1].xy, IN[2] 12: MOV OUT[1].zw, IN[3].xyxy 13: MOV OUT[2], CONST[0] 14: MOV TEMP[1].xyz, CONST[1] 15: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 16: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 17: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 18: DP3 TEMP[0].w, TEMP[5], TEMP[5] 19: RSQ TEMP[0].w, TEMP[0].wwww 20: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 21: MOV TEMP[2].xyz, TEMP[4] 22: DP3 TEMP[5].w, TEMP[4], CONST[1] 23: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 24: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 25: DP3 TEMP[2].w, TEMP[3], TEMP[3] 26: RSQ TEMP[1].w, TEMP[2].wwww 27: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 28: MOV OUT[4].z, TEMP[5].wyww 29: DP3 TEMP[4].w, TEMP[3], TEMP[3] 30: RSQ TEMP[2].w, TEMP[4].wwww 31: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 32: MOV TEMP[2].w, -TEMP[1].wwww 33: MUL TEMP[4].w, -TEMP[1].wwww, CONST[8].xxxx 34: EX2 TEMP[2].w, TEMP[4].wwww 35: SUB TEMP[4].w, IMM[0].yyyy, TEMP[2].wwww 36: MOV OUT[4].w, TEMP[4].wyzw 37: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1].xy, input[2]; 12: MOV output[1].zw, input[3].xyxy; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[5].xyz, const[20], input[1].yyyw; 16: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 17: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 18: DP3 temp[0].w, temp[5], temp[5]; 19: RSQ temp[0].w, temp[0].wwww; 20: MUL temp[4].xyz, temp[5], temp[0].wwww; 21: MOV temp[2].xyz, temp[4]; 22: DP3 temp[5].w, temp[4], const[1]; 23: MAX temp[0].w, temp[5].wwww, temp[0].0000; 24: MUL output[3].xyz, const[3], temp[0].wwww; 25: DP3 temp[2].w, temp[3], temp[3]; 26: RSQ temp[1].w, temp[2].wwww; 27: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 28: MOV output[4].z, temp[5].wyww; 29: DP3 temp[4].w, temp[3], temp[3]; 30: RSQ temp[2].w, temp[4].wwww; 31: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 32: MOV temp[2].w, -temp[1].wwww; 33: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 34: EX2 temp[2].w, temp[4].wwww; 35: SUB temp[4].w, temp[0].1111, temp[2].wwww; 36: MOV output[4].w, temp[4].wyzw; 37: MOV output[0], temp[7]; 38: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1].xy, input[2]; 12: MOV output[1].zw, input[3].xyxy; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[5].xyz, const[20], input[1].yyyw; 16: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 17: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 18: DP3 temp[0].w, temp[5], temp[5]; 19: RSQ temp[0].w, temp[0].wwww; 20: MUL temp[4].xyz, temp[5], temp[0].wwww; 21: MOV temp[2].xyz, temp[4]; 22: DP3 temp[5].w, temp[4], const[1]; 23: MAX temp[0].w, temp[5].wwww, temp[0].0000; 24: MUL output[3].xyz, const[3], temp[0].wwww; 25: DP3 temp[2].w, temp[3], temp[3]; 26: RSQ temp[1].w, temp[2].wwww; 27: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 28: MOV output[4].z, temp[5].wyww; 29: DP3 temp[4].w, temp[3], temp[3]; 30: RSQ temp[2].w, temp[4].wwww; 31: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 32: MOV temp[2].w, -temp[1].wwww; 33: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 34: EX2 temp[2].w, temp[4].wwww; 35: SUB temp[4].w, temp[0].1111, temp[2].wwww; 36: MOV output[4].w, temp[4].wyzw; 37: MOV output[0], temp[7]; 38: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1].xy, input[2]; 12: MOV output[1].zw, input[3].xyxy; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[5].xyz, const[20], input[1].yyyw; 16: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 17: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 18: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 19: RSQ temp[0].w, temp[0].wwww; 20: MUL temp[4].xyz, temp[5], temp[0].wwww; 21: MOV temp[2].xyz, temp[4]; 22: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 23: MAX temp[0].w, temp[5].wwww, temp[0].0000; 24: MUL output[3].xyz, const[3], temp[0].wwww; 25: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 26: RSQ temp[1].w, temp[2].wwww; 27: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 28: MOV output[4].z, temp[5].wyww; 29: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 30: RSQ temp[2].w, temp[4].wwww; 31: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 32: MOV temp[2].w, -temp[1].wwww; 33: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 34: EX2 temp[2].w, temp[4].wwww; 35: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 36: MOV output[4].w, temp[4].wyzw; 37: MOV output[0], temp[7]; 38: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1].xy, input[2]; 12: MOV output[1].zw, input[3].xyxy; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[5].xyz, const[20], input[1].yyyw; 16: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 17: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 18: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 19: RSQ temp[0].w, temp[0].wwww; 20: MUL temp[4].xyz, temp[5], temp[0].wwww; 21: MOV temp[2].xyz, temp[4]; 22: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 23: MAX temp[0].w, temp[5].wwww, temp[0].0000; 24: MUL output[3].xyz, const[3], temp[0].wwww; 25: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 26: RSQ temp[1].w, temp[2].wwww; 27: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 28: MOV output[4].z, temp[5].wyww; 29: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 30: RSQ temp[2].w, temp[4].wwww; 31: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 32: MOV temp[2].w, -temp[1].wwww; 33: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 34: EX2 temp[2].w, temp[4].wwww; 35: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 36: MOV output[4].w, temp[4].wyzw; 37: MOV output[0], temp[7]; 38: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1].xy, input[2].xy__; 12: MOV output[1].zw, input[3].__xy; 13: MOV output[2], const[0]; 14: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 16: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 20: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[5].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 24: RSQ temp[1].w, temp[2].w___; 25: MUL temp[5].w, temp[2].___w, temp[1].___w; 26: MOV output[4].z, temp[5].__w_; 27: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 28: RSQ temp[2].w, temp[4].w___; 29: MUL temp[1].w, temp[4].___w, temp[2].___w; 30: MUL temp[4].w, -temp[1].___w, const[8].___x; 31: EX2 temp[2].w, temp[4].w___; 32: ADD temp[4].w, temp[0].___1, -temp[2].___w; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[7]; 35: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1].xy, input[2].xy__; 12: MOV output[1].zw, input[3].__xy; 13: MOV output[2], const[0]; 14: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 16: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 17: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 20: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[6].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 24: RSQ temp[1].w, temp[2].w___; 25: MUL temp[6].w, temp[2].___w, temp[1].___w; 26: MOV output[4].z, temp[6].__w_; 27: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 28: RSQ temp[2].w, temp[4].w___; 29: MUL temp[1].w, temp[4].___w, temp[2].___w; 30: MUL temp[4].w, -temp[1].___w, const[8].___x; 31: EX2 temp[2].w, temp[4].w___; 32: ADD temp[4].w, temp[0].___1, -temp[2].___w; 33: MOV output[4].w, temp[4].___w; 34: MOV output[0], temp[5]; 35: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00302203 dst: 1o 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 12: op: 0x00c02203 dst: 1o op: VE_ADD src0: 0x0047e061 reg: 3i swiz: U/ U/ X/ Y src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 13: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 14: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 15: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 16: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 17: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 18: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 19: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 20: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 21: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 23: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 24: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 25: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 26: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 27: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 28: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 29: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 31: op: 0x0080404b dst: 2t op: ME_EXP_BASE2_FULL_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 32: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 33: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 34: 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 35: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MOV TEMP[2].w, -TEMP[1].wwww 32: MUL TEMP[4].w, -TEMP[1].wwww, CONST[8].xxxx 33: EX2 TEMP[2].w, TEMP[4].wwww 34: SUB TEMP[4].w, IMM[0].yyyy, TEMP[2].wwww 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[7]; 34: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[5]; 34: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 30: op: 0x0080404b dst: 2t op: ME_EXP_BASE2_FULL_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 31: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 32: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 33: 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 34: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MOV TEMP[2].w, -TEMP[1].wwww 32: MUL TEMP[4].w, -TEMP[1].wwww, CONST[8].xxxx 33: EX2 TEMP[2].w, TEMP[4].wwww 34: SUB TEMP[4].w, IMM[0].yyyy, TEMP[2].wwww 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[7]; 34: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[5]; 34: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 30: op: 0x0080404b dst: 2t op: ME_EXP_BASE2_FULL_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 31: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 32: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 33: 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 34: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 10 warnings Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..5] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MOV TEMP[4].xyz, TEMP[3] 7: MUL TEMP[2], CONST[16], IN[0].yyyy 8: MAD TEMP[3], CONST[15], IN[0].xxxx, TEMP[2] 9: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[3] 10: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 11: MOV OUT[0], TEMP[1] 12: MOV OUT[1], IN[2] 13: MOV OUT[2], CONST[0] 14: MOV TEMP[1].xyz, CONST[1] 15: MUL TEMP[1].xyz, CONST[20], IN[1].yyyw 16: MAD TEMP[5].xyz, CONST[19], TEMP[0].xxxw, TEMP[1] 17: MAD TEMP[1].xyz, CONST[21], TEMP[0].zzzw, TEMP[5] 18: MOV TEMP[5].x, TEMP[1] 19: DP3 TEMP[0].w, TEMP[1], TEMP[1] 20: RSQ TEMP[0].w, TEMP[0].wwww 21: MUL TEMP[3].xyz, TEMP[1], TEMP[0].wwww 22: MOV TEMP[2].xyz, TEMP[3] 23: DP3 TEMP[4].w, TEMP[3], CONST[1] 24: MAX TEMP[0].w, TEMP[4].wwww, IMM[0].xxxx 25: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 26: DP3 TEMP[3].w, TEMP[4], TEMP[4] 27: RSQ TEMP[2].w, TEMP[3].wwww 28: MUL TEMP[4].w, TEMP[3].wwww, TEMP[2].wwww 29: MOV OUT[4].z, TEMP[4].wyww 30: DP3 TEMP[5].x, TEMP[4], TEMP[4] 31: RSQ TEMP[3].w, TEMP[5].xxxx 32: MUL TEMP[2].w, TEMP[5].xxxx, TEMP[3].wwww 33: MOV TEMP[3].w, -TEMP[2].wwww 34: MUL TEMP[5].x, -TEMP[2].wwww, CONST[8].xxxx 35: EX2 TEMP[3].w, TEMP[5].xxxx 36: SUB TEMP[5].x, IMM[0].yyyy, TEMP[3].wwww 37: MOV OUT[4].w, TEMP[5].xyzx 38: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: SUB temp[5].x, temp[0].1111, temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP3 temp[0].w, temp[1], temp[1]; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP3 temp[4].w, temp[3], const[1]; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP3 temp[3].w, temp[4], temp[4]; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP3 temp[5].x, temp[4], temp[4]; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: SUB temp[5].x, temp[0].1111, temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: ADD temp[5].x, temp[0].1111, -temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MOV temp[4].xyz, temp[3]; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MOV temp[1].xyz, const[1]; 15: MUL temp[1].xyz, const[20], input[1].yyyw; 16: MAD temp[5].xyz, const[19], temp[0].xxxw, temp[1]; 17: MAD temp[1].xyz, const[21], temp[0].zzzw, temp[5]; 18: MOV temp[5].x, temp[1]; 19: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 20: RSQ temp[0].w, temp[0].wwww; 21: MUL temp[3].xyz, temp[1], temp[0].wwww; 22: MOV temp[2].xyz, temp[3]; 23: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 24: MAX temp[0].w, temp[4].wwww, temp[0].0000; 25: MUL output[3].xyz, const[3], temp[0].wwww; 26: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 27: RSQ temp[2].w, temp[3].wwww; 28: MUL temp[4].w, temp[3].wwww, temp[2].wwww; 29: MOV output[4].z, temp[4].wyww; 30: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 31: RSQ temp[3].w, temp[5].xxxx; 32: MUL temp[2].w, temp[5].xxxx, temp[3].wwww; 33: MOV temp[3].w, -temp[2].wwww; 34: MUL temp[5].x, -temp[2].wwww, const[8].xxxx; 35: EX2 temp[3].w, temp[5].xxxx; 36: ADD temp[5].x, temp[0].1111, -temp[3].wwww; 37: MOV output[4].w, temp[5].xyzx; 38: MOV output[0], temp[6]; 39: MOV output[5], temp[6]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[6], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[5].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[5].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[5].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[5].x___; 29: MUL temp[2].w, temp[5].___x, temp[3].___w; 30: MUL temp[5].x, -temp[2].w___, const[8].x___; 31: EX2 temp[3].w, temp[5].x___; 32: ADD temp[5].x, temp[0].1___, -temp[3].w___; 33: MOV output[4].w, temp[5].___x; 34: MOV output[0], temp[6]; 35: MOV output[5], temp[6]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MOV temp[4].xyz, temp[3].xyz_; 7: MUL temp[2], const[16], input[0].yyyy; 8: MAD temp[3], const[15], input[0].xxxx, temp[2]; 9: MAD temp[2], const[17], input[0].zzzz, temp[3]; 10: MAD temp[1], const[18], input[0].wwww, temp[2]; 11: MOV temp[5], temp[1]; 12: MOV output[1], input[2]; 13: MOV output[2], const[0]; 14: MUL temp[1].xyz, const[20].xyz_, input[1].yyy_; 15: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[1].xyz_; 16: MAD temp[1].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 17: DP4 temp[0].w, temp[1].xyz0, temp[1].xyz0; 18: RSQ temp[0].w, temp[0].w___; 19: MUL temp[3].xyz, temp[1].xyz_, temp[0].www_; 20: DP4 temp[4].w, temp[3].xyz0, const[1].xyz0; 21: MAX temp[0].w, temp[4].___w, temp[0].___0; 22: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 23: DP4 temp[3].w, temp[4].xyz0, temp[4].xyz0; 24: RSQ temp[2].w, temp[3].w___; 25: MUL temp[4].w, temp[3].___w, temp[2].___w; 26: MOV output[4].z, temp[4].__w_; 27: DP4 temp[6].x, temp[4].xyz0, temp[4].xyz0; 28: RSQ temp[3].w, temp[6].x___; 29: MUL temp[2].w, temp[6].___x, temp[3].___w; 30: MUL temp[6].x, -temp[2].w___, const[8].x___; 31: EX2 temp[3].w, temp[6].x___; 32: ADD temp[6].x, temp[0].1___, -temp[3].w___; 33: MOV output[4].w, temp[6].___x; 34: MOV output[0], temp[5]; 35: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 7: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 8: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 9: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W 10: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 11: op: 0x00f0a003 dst: 5t 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 12: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 13: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 14: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 16: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 17: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 19: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 20: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 21: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 23: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 24: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 25: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 26: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe080 reg: 4t swiz: U/ U/ W/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 27: op: 0x0010c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 28: op: 0x00806048 dst: 3t op: ME_RECIP_SQRT_DX src0: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 29: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 30: op: 0x0010c002 dst: 6t op: VE_MULTIPLY src0: 0x1fff6040 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 31: op: 0x0080604b dst: 3t op: ME_EXP_BASE2_FULL_DX src0: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 32: op: 0x0010c003 dst: 6t op: VE_ADD src0: 0x01ffa000 reg: 0t swiz: 1/ U/ U/ U src1: 0x1fff6060 reg: 3t swiz: -W/-U/-U/-U src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 33: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x003fe0c0 reg: 6t swiz: U/ U/ U/ X src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 34: 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 35: op: 0x00f0a203 dst: 5o 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 Warning: CONST[0]: Register never used Warning: CONST[7]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 10 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..71] DCL TEMP[0..8] DCL ADDR[0] 0: MOV OUT[4], CONST[58] 1: TRUNC TEMP[0].x, IN[3].xxxx 2: ARL ADDR[0].x, TEMP[0].xxxx 3: MAD TEMP[1], CONST[ADDR[0].x+10], IN[3].yyyy, IN[0] 4: MOV TEMP[2].xz, IN[1] 5: MUL TEMP[3], CONST[60], TEMP[1].yyyy 6: MAD TEMP[4], CONST[59], TEMP[1].xxxx, TEMP[3] 7: MAD TEMP[3], CONST[61], TEMP[1].zzzz, TEMP[4] 8: MAD TEMP[5].xyz, CONST[62], TEMP[1].wwww, TEMP[3] 9: MOV TEMP[6].xyz, TEMP[5] 10: MUL TEMP[4], CONST[64], TEMP[1].yyyy 11: MAD TEMP[7], CONST[63], TEMP[1].xxxx, TEMP[4] 12: MAD TEMP[4], CONST[65], TEMP[1].zzzz, TEMP[7] 13: MAD TEMP[3], CONST[66], TEMP[1].wwww, TEMP[4] 14: MOV OUT[0], TEMP[3] 15: MOV OUT[1], IN[2] 16: MOV OUT[2], CONST[0] 17: MOV TEMP[3].xyz, CONST[1] 18: MUL TEMP[1].xyz, CONST[68], IN[1].yyyw 19: MAD TEMP[8].xyz, CONST[67], TEMP[2].xxxw, TEMP[1] 20: MAD TEMP[1].xyz, CONST[69], TEMP[2].zzzw, TEMP[8] 21: DP3 TEMP[0].y, TEMP[1], TEMP[1] 22: RSQ TEMP[0].y, TEMP[0].yyyy 23: MUL TEMP[7].xyz, TEMP[1], TEMP[0].yyyy 24: MOV TEMP[4].xyz, TEMP[7] 25: DP3 TEMP[0].z, TEMP[7], CONST[1] 26: MAX TEMP[0].y, TEMP[0].zzzz, CONST[58].xxxx 27: MUL OUT[3].xyz, CONST[3], TEMP[0].yyyy 28: DP3 TEMP[6].w, TEMP[5], TEMP[5] 29: RSQ TEMP[2].w, TEMP[6].wwww 30: MUL TEMP[0].z, TEMP[6].wwww, TEMP[2].wwww 31: MOV OUT[4].z, TEMP[0].zyzw 32: DP3 TEMP[3].w, TEMP[6], TEMP[6] 33: RSQ TEMP[6].w, TEMP[3].wwww 34: MUL TEMP[2].w, TEMP[3].wwww, TEMP[6].wwww 35: MOV TEMP[6].w, -TEMP[2].wwww 36: MUL TEMP[3].w, -TEMP[2].wwww, CONST[8].xxxx 37: EX2 TEMP[6].w, TEMP[3].wwww 38: SUB TEMP[3].w, CONST[71].xxxx, TEMP[6].wwww 39: MOV OUT[4].w, TEMP[3].wyzw 40: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FLR temp[0].x, input[3].xxxx; 2: ARL addr[0].x, temp[0].xxxx; 3: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 4: MOV temp[2].xz, input[1]; 5: MUL temp[3], const[60], temp[1].yyyy; 6: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 7: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 8: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 9: MOV temp[6].xyz, temp[5]; 10: MUL temp[4], const[64], temp[1].yyyy; 11: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 12: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 13: MAD temp[3], const[66], temp[1].wwww, temp[4]; 14: MOV temp[9], temp[3]; 15: MOV output[1], input[2]; 16: MOV output[2], const[0]; 17: MOV temp[3].xyz, const[1]; 18: MUL temp[1].xyz, const[68], input[1].yyyw; 19: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 20: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 21: DP3 temp[0].y, temp[1], temp[1]; 22: RSQ temp[0].y, temp[0].yyyy; 23: MUL temp[7].xyz, temp[1], temp[0].yyyy; 24: MOV temp[4].xyz, temp[7]; 25: DP3 temp[0].z, temp[7], const[1]; 26: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 27: MUL output[3].xyz, const[3], temp[0].yyyy; 28: DP3 temp[6].w, temp[5], temp[5]; 29: RSQ temp[2].w, temp[6].wwww; 30: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 31: MOV output[4].z, temp[0].zyzw; 32: DP3 temp[3].w, temp[6], temp[6]; 33: RSQ temp[6].w, temp[3].wwww; 34: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 35: MOV temp[6].w, -temp[2].wwww; 36: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 37: EX2 temp[6].w, temp[3].wwww; 38: SUB temp[3].w, const[71].xxxx, temp[6].wwww; 39: MOV output[4].w, temp[3].wyzw; 40: MOV output[0], temp[9]; 41: MOV output[5], temp[9]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FLR temp[0].x, input[3].xxxx; 2: ARL addr[0].x, temp[0].xxxx; 3: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 4: MOV temp[2].xz, input[1]; 5: MUL temp[3], const[60], temp[1].yyyy; 6: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 7: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 8: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 9: MOV temp[6].xyz, temp[5]; 10: MUL temp[4], const[64], temp[1].yyyy; 11: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 12: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 13: MAD temp[3], const[66], temp[1].wwww, temp[4]; 14: MOV temp[9], temp[3]; 15: MOV output[1], input[2]; 16: MOV output[2], const[0]; 17: MOV temp[3].xyz, const[1]; 18: MUL temp[1].xyz, const[68], input[1].yyyw; 19: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 20: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 21: DP3 temp[0].y, temp[1], temp[1]; 22: RSQ temp[0].y, temp[0].yyyy; 23: MUL temp[7].xyz, temp[1], temp[0].yyyy; 24: MOV temp[4].xyz, temp[7]; 25: DP3 temp[0].z, temp[7], const[1]; 26: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 27: MUL output[3].xyz, const[3], temp[0].yyyy; 28: DP3 temp[6].w, temp[5], temp[5]; 29: RSQ temp[2].w, temp[6].wwww; 30: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 31: MOV output[4].z, temp[0].zyzw; 32: DP3 temp[3].w, temp[6], temp[6]; 33: RSQ temp[6].w, temp[3].wwww; 34: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 35: MOV temp[6].w, -temp[2].wwww; 36: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 37: EX2 temp[6].w, temp[3].wwww; 38: SUB temp[3].w, const[71].xxxx, temp[6].wwww; 39: MOV output[4].w, temp[3].wyzw; 40: MOV output[0], temp[9]; 41: MOV output[5], temp[9]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FRC temp[10], input[3].xxxx; 2: ADD temp[0].x, input[3].xxxx, -temp[10]; 3: ARL addr[0].x, temp[0].xxxx; 4: MAD temp[1], const[10 + addr[0]], input[3].yyyy, input[0]; 5: MOV temp[2].xz, input[1]; 6: MUL temp[3], const[60], temp[1].yyyy; 7: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 8: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 9: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 10: MOV temp[6].xyz, temp[5]; 11: MUL temp[4], const[64], temp[1].yyyy; 12: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 13: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 14: MAD temp[3], const[66], temp[1].wwww, temp[4]; 15: MOV temp[9], temp[3]; 16: MOV output[1], input[2]; 17: MOV output[2], const[0]; 18: MOV temp[3].xyz, const[1]; 19: MUL temp[1].xyz, const[68], input[1].yyyw; 20: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 21: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].yyyy; 24: MUL temp[7].xyz, temp[1], temp[0].yyyy; 25: MOV temp[4].xyz, temp[7]; 26: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 27: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 28: MUL output[3].xyz, const[3], temp[0].yyyy; 29: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 30: RSQ temp[2].w, temp[6].wwww; 31: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 32: MOV output[4].z, temp[0].zyzw; 33: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 34: RSQ temp[6].w, temp[3].wwww; 35: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 36: MOV temp[6].w, -temp[2].wwww; 37: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 38: EX2 temp[6].w, temp[3].wwww; 39: ADD temp[3].w, const[71].xxxx, -temp[6].wwww; 40: MOV output[4].w, temp[3].wyzw; 41: MOV output[0], temp[9]; 42: MOV output[5], temp[9]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[58]; 1: FRC temp[10], input[3].xxxx; 2: ADD temp[0].x, input[3].xxxx, -temp[10]; 3: ARL addr[0].x, temp[0].xxxx; 4: MOV temp[11], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[11]; 6: MOV temp[2].xz, input[1]; 7: MUL temp[3], const[60], temp[1].yyyy; 8: MAD temp[4], const[59], temp[1].xxxx, temp[3]; 9: MAD temp[3], const[61], temp[1].zzzz, temp[4]; 10: MAD temp[5].xyz, const[62], temp[1].wwww, temp[3]; 11: MOV temp[6].xyz, temp[5]; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[9], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MOV temp[3].xyz, const[1]; 20: MUL temp[1].xyz, const[68], input[1].yyyw; 21: MAD temp[8].xyz, const[67], temp[2].xxxw, temp[1]; 22: MAD temp[1].xyz, const[69], temp[2].zzzw, temp[8]; 23: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 24: RSQ temp[0].y, temp[0].yyyy; 25: MUL temp[7].xyz, temp[1], temp[0].yyyy; 26: MOV temp[4].xyz, temp[7]; 27: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 28: MAX temp[0].y, temp[0].zzzz, const[58].xxxx; 29: MUL output[3].xyz, const[3], temp[0].yyyy; 30: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 31: RSQ temp[2].w, temp[6].wwww; 32: MUL temp[0].z, temp[6].wwww, temp[2].wwww; 33: MOV output[4].z, temp[0].zyzw; 34: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 35: RSQ temp[6].w, temp[3].wwww; 36: MUL temp[2].w, temp[3].wwww, temp[6].wwww; 37: MOV temp[6].w, -temp[2].wwww; 38: MUL temp[3].w, -temp[2].wwww, const[8].xxxx; 39: EX2 temp[6].w, temp[3].wwww; 40: ADD temp[3].w, const[71].xxxx, -temp[6].wwww; 41: MOV output[4].w, temp[3].wyzw; 42: MOV output[0], temp[9]; 43: MOV output[5], temp[9]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[58].xy__; 1: FRC temp[10].x, input[3].x___; 2: ADD temp[0].x, input[3].x___, -temp[10].x___; 3: ARL addr[0].x, temp[0].x___; 4: MOV temp[11], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[11]; 6: MOV temp[2].xz, input[1].x_z_; 7: MUL temp[3].xyz, const[60].xyz_, temp[1].yyy_; 8: MAD temp[4].xyz, const[59].xyz_, temp[1].xxx_, temp[3].xyz_; 9: MAD temp[3].xyz, const[61].xyz_, temp[1].zzz_, temp[4].xyz_; 10: MAD temp[5].xyz, const[62].xyz_, temp[1].www_, temp[3].xyz_; 11: MOV temp[6].xyz, temp[5].xyz_; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[9], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MUL temp[1].xyz, const[68].xyz_, input[1].yyy_; 20: MAD temp[8].xyz, const[67].xyz_, temp[2].xxx_, temp[1].xyz_; 21: MAD temp[1].xyz, const[69].xyz_, temp[2].zzz_, temp[8].xyz_; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].y___; 24: MUL temp[7].xyz, temp[1].xyz_, temp[0].yyy_; 25: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 26: MAX temp[0].y, temp[0]._z__, const[58]._x__; 27: MUL output[3].xyz, const[3].xyz_, temp[0].yyy_; 28: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 29: RSQ temp[2].w, temp[6].w___; 30: MUL temp[0].z, temp[6].__w_, temp[2].__w_; 31: MOV output[4].z, temp[0].__z_; 32: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 33: RSQ temp[6].w, temp[3].w___; 34: MUL temp[2].w, temp[3].___w, temp[6].___w; 35: MUL temp[3].w, -temp[2].___w, const[8].___x; 36: EX2 temp[6].w, temp[3].w___; 37: ADD temp[3].w, const[71].___x, -temp[6].___w; 38: MOV output[4].w, temp[3].___w; 39: MOV output[0], temp[9]; 40: MOV output[5], temp[9]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[58].xy__; 1: FRC temp[0].x, input[3].x___; 2: ADD temp[0].x, input[3].x___, -temp[0].x___; 3: ARL addr[0].x, temp[0].x___; 4: MOV temp[1], input[0]; 5: MAD temp[1], const[10 + addr[0]], input[3].yyyy, temp[1]; 6: MOV temp[2].xz, input[1].x_z_; 7: MUL temp[3].xyz, const[60].xyz_, temp[1].yyy_; 8: MAD temp[4].xyz, const[59].xyz_, temp[1].xxx_, temp[3].xyz_; 9: MAD temp[3].xyz, const[61].xyz_, temp[1].zzz_, temp[4].xyz_; 10: MAD temp[5].xyz, const[62].xyz_, temp[1].www_, temp[3].xyz_; 11: MOV temp[6].xyz, temp[5].xyz_; 12: MUL temp[4], const[64], temp[1].yyyy; 13: MAD temp[7], const[63], temp[1].xxxx, temp[4]; 14: MAD temp[4], const[65], temp[1].zzzz, temp[7]; 15: MAD temp[3], const[66], temp[1].wwww, temp[4]; 16: MOV temp[4], temp[3]; 17: MOV output[1], input[2]; 18: MOV output[2], const[0]; 19: MUL temp[1].xyz, const[68].xyz_, input[1].yyy_; 20: MAD temp[8].xyz, const[67].xyz_, temp[2].xxx_, temp[1].xyz_; 21: MAD temp[1].xyz, const[69].xyz_, temp[2].zzz_, temp[8].xyz_; 22: DP4 temp[0].y, temp[1].xyz0, temp[1].xyz0; 23: RSQ temp[0].y, temp[0].y___; 24: MUL temp[7].xyz, temp[1].xyz_, temp[0].yyy_; 25: DP4 temp[0].z, temp[7].xyz0, const[1].xyz0; 26: MAX temp[0].y, temp[0]._z__, const[58]._x__; 27: MUL output[3].xyz, const[3].xyz_, temp[0].yyy_; 28: DP4 temp[6].w, temp[5].xyz0, temp[5].xyz0; 29: RSQ temp[2].w, temp[6].w___; 30: MUL temp[0].z, temp[6].__w_, temp[2].__w_; 31: MOV output[4].z, temp[0].__z_; 32: DP4 temp[3].w, temp[6].xyz0, temp[6].xyz0; 33: RSQ temp[6].w, temp[3].w___; 34: MUL temp[2].w, temp[3].___w, temp[6].___w; 35: MUL temp[3].w, -temp[2].___w, const[8].___x; 36: EX2 temp[6].w, temp[3].w___; 37: ADD temp[3].w, const[71].___x, -temp[6].___w; 38: MOV output[4].w, temp[3].___w; 39: MOV output[0], temp[4]; 40: MOV output[5], temp[4]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f90742 reg: 58c swiz: X/ Y/ U/ U src1: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 src2: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 1: op: 0x00100006 dst: 0t op: VE_FRACTION src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x1fff0000 reg: 0t swiz: -X/-U/-U/-U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 3: op: 0x0010010d dst: 0a0 op: VE_FLT2FIX_DX src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 4: op: 0x00f02003 dst: 1t 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 5: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00492061 reg: 3i swiz: Y/ Y/ Y/ Y src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 6: op: 0x00504003 dst: 2t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 7: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d10782 reg: 60c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 8: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d10762 reg: 59c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 9: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d107a2 reg: 61c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 10: op: 0x0070a004 dst: 5t op: VE_MULTIPLY_ADD src0: 0x01d107c2 reg: 62c swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 11: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 12: op: 0x00f08002 dst: 4t op: VE_MULTIPLY src0: 0x00d10802 reg: 64c swiz: X/ Y/ Z/ W src1: 0x00492020 reg: 1t swiz: Y/ Y/ Y/ Y src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 13: op: 0x00f0e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x00d107e2 reg: 63c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 14: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d10822 reg: 65c swiz: X/ Y/ Z/ W src1: 0x00924020 reg: 1t swiz: Z/ Z/ Z/ Z src2: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W 15: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d10842 reg: 66c swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 16: op: 0x00f08003 dst: 4t 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 17: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 18: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 19: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10882 reg: 68c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 20: op: 0x00710004 dst: 8t op: VE_MULTIPLY_ADD src0: 0x01d10862 reg: 67c swiz: X/ Y/ Z/ U src1: 0x01c00040 reg: 2t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 21: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d108a2 reg: 69c swiz: X/ Y/ Z/ U src1: 0x01d24040 reg: 2t swiz: Z/ Z/ Z/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 22: op: 0x00200001 dst: 0t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 23: op: 0x00200048 dst: 0t op: ME_RECIP_SQRT_DX src0: 0x00492000 reg: 0t swiz: Y/ Y/ Y/ Y src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 24: op: 0x0070e002 dst: 7t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 25: op: 0x00400001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100e0 reg: 7t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 26: op: 0x00200007 dst: 0t op: VE_MAXIMUM src0: 0x01fae000 reg: 0t swiz: U/ Z/ U/ U src1: 0x01f8e742 reg: 58c swiz: U/ X/ U/ U src2: 0x01248742 reg: 58c swiz: 0/ 0/ 0/ 0 27: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92000 reg: 0t swiz: Y/ Y/ Y/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 28: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x011100a0 reg: 5t swiz: X/ Y/ Z/ 0 src1: 0x011100a0 reg: 5t swiz: X/ Y/ Z/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 29: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 30: op: 0x00400002 dst: 0t op: VE_MULTIPLY src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 31: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e000 reg: 0t swiz: U/ U/ Z/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 32: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 33: op: 0x0080c048 dst: 6t op: ME_RECIP_SQRT_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 34: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 35: op: 0x00806002 dst: 3t op: VE_MULTIPLY src0: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 36: op: 0x0080c04b dst: 6t op: ME_EXP_BASE2_FULL_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 37: op: 0x00806003 dst: 3t op: VE_ADD src0: 0x003fe8e2 reg: 71c swiz: U/ U/ U/ X src1: 0x1effe0c0 reg: 6t swiz: -U/-U/-U/-W src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 38: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 39: op: 0x00f00203 dst: 0o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 40: op: 0x00f0a203 dst: 5o op: VE_ADD src0: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 Flow Control Ops: 0x00000000 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[12]: Register never used Warning: CONST[3]: Register never used Warning: CONST[10]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[11]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 11 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[24]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL IN[3] DCL OUT[0], POSITION DCL OUT[1], COLOR DCL OUT[2], GENERIC[0] DCL OUT[3], GENERIC[1] DCL OUT[4], GENERIC[10] DCL OUT[5], GENERIC[11] DCL CONST[0..9] DCL CONST[12..15] DCL CONST[17..24] DCL TEMP[0..12] IMM FLT32 { 0.0000, 0.7500, 6.3750, 0.5000} IMM FLT32 { 1.0000, 255.0000, 2.0000, 8.5000} 0: MOV OUT[5], IMM[0].xxxx 1: MOV TEMP[0].z, IN[1].wwww 2: MOV TEMP[0].w, IN[2].wwww 3: MOV TEMP[1].x, TEMP[0].zzzz 4: MOV TEMP[1].y, IN[2].wwww 5: MOV TEMP[0].xy, TEMP[1] 6: MUL TEMP[2].xy, TEMP[1], CONST[0].xxxx 7: MOV TEMP[3].xy, TEMP[2] 8: MOV TEMP[3].z, IN[3].xyxw 9: MOV TEMP[3].w, IMM[1].xxxx 10: MOV TEMP[1], TEMP[3] 11: MUL TEMP[3].xy, TEMP[0], CONST[0].yyyy 12: MUL TEMP[4].xy, TEMP[0], CONST[0].zzzz 13: MOV TEMP[5].xyz, IN[1] 14: RCP TEMP[0].z, IMM[1].yyyy 15: MUL TEMP[6].xyz, IN[1], TEMP[0].zzzz 16: MUL TEMP[5].xyz, TEMP[6], IMM[1].zzzz 17: SUB TEMP[7].xyz, TEMP[5], IMM[1].xxxx 18: MOV TEMP[8].xyz, IN[2] 19: RCP TEMP[0].z, IMM[1].yyyy 20: MUL TEMP[9].xyz, IN[2], TEMP[0].zzzz 21: MUL TEMP[8].xyz, TEMP[9], IMM[1].zzzz 22: MUL TEMP[10], CONST[13], TEMP[1].yyyy 23: MAD TEMP[11], CONST[12], TEMP[1].xxxx, TEMP[10] 24: MAD TEMP[10], CONST[14], TEMP[1].zzzz, TEMP[11] 25: MAD TEMP[12].xyz, CONST[15], TEMP[1].wwww, TEMP[10] 26: MOV TEMP[10].xyz, TEMP[12] 27: DP3 TEMP[3].w, TEMP[12], TEMP[12] 28: RSQ TEMP[3].z, TEMP[3].wwww 29: MUL TEMP[0].w, TEMP[3].wwww, TEMP[3].zzzz 30: MOV TEMP[0].z, TEMP[0].wwww 31: MOV TEMP[0].w, IMM[1].wwww 32: MOV TEMP[3].z, IMM[0].yyyy 33: LG2 TEMP[2].z, TEMP[0].zzzz 34: MUL TEMP[2].w, TEMP[2].zzzz, IMM[0].yyyy 35: SUB TEMP[2].z, TEMP[2].wwww, IMM[0].zzzz 36: MAX TEMP[3].w, TEMP[2].zzzz, IMM[0].xxxx 37: FLR TEMP[2].z, TEMP[3].wwww 38: MUL TEMP[7].w, TEMP[2].zzzz, IMM[0].wwww 39: FRC TEMP[6].w, TEMP[7].wwww 40: SGT TEMP[7].w, TEMP[6].wwww, IMM[0].xxxx 41: IF TEMP[7].wwww :48 42: FRC TEMP[0].w, TEMP[3].wwww 43: POW TEMP[5].w, IMM[1].zzzz, TEMP[2].zzzz 44: RCP TEMP[12].w, TEMP[5].wwww 45: MUL TEMP[6].w, IMM[1].xxxx, TEMP[12].wwww 46: MOV TEMP[4].w, TEMP[6].wwww 47: MUL TEMP[0].z, TEMP[6].wwww, IMM[0].wwww 48: ELSE :57 49: FRC TEMP[6].w, TEMP[3].wwww 50: SUB TEMP[0].w, IMM[1].xxxx, TEMP[6].wwww 51: ADD TEMP[12].w, TEMP[2].zzzz, IMM[1].xxxx 52: POW TEMP[2].w, IMM[1].zzzz, TEMP[12].wwww 53: RCP TEMP[12].w, TEMP[2].wwww 54: MUL TEMP[6].w, IMM[1].xxxx, TEMP[12].wwww 55: MOV TEMP[4].w, TEMP[6].wwww 56: MUL TEMP[0].z, TEMP[6].wwww, IMM[1].zzzz 57: ENDIF 58: MUL OUT[2].xy, TEMP[3], TEMP[4].wwww 59: MUL TEMP[11].xy, TEMP[3], TEMP[0].zzzz 60: MOV OUT[2].zw, TEMP[11].xyxy 61: MOV OUT[3].xy, TEMP[4] 62: MOV OUT[3].z, TEMP[0].wyww 63: MOV OUT[3].w, IMM[0].xxxx 64: MUL TEMP[0], CONST[18], TEMP[1].yyyy 65: MAD TEMP[2], CONST[17], TEMP[1].xxxx, TEMP[0] 66: MAD TEMP[0], CONST[19], TEMP[1].zzzz, TEMP[2] 67: MAD TEMP[3], CONST[20], TEMP[1].wwww, TEMP[0] 68: MOV OUT[0], TEMP[3] 69: MOV OUT[1], IN[0] 70: MOV TEMP[3].xyz, CONST[1] 71: MUL TEMP[1].xyz, CONST[22], TEMP[7].yyyw 72: MAD TEMP[3].xyz, CONST[21], TEMP[7].xxxw, TEMP[1] 73: MAD TEMP[1].xyz, CONST[23], TEMP[7].zzzw, TEMP[3] 74: DP3 TEMP[6].w, TEMP[1], TEMP[1] 75: RSQ TEMP[6].w, TEMP[6].wwww 76: MUL TEMP[2].xyz, TEMP[1], TEMP[6].wwww 77: MOV TEMP[0].xyz, TEMP[2] 78: DP3 TEMP[5].w, TEMP[2], CONST[1] 79: MAX TEMP[6].w, TEMP[5].wwww, IMM[0].xxxx 80: MUL OUT[4].xyz, CONST[3], TEMP[6].wwww 81: DP3 TEMP[9].w, TEMP[10], TEMP[10] 82: RSQ TEMP[12].w, TEMP[9].wwww 83: MUL TEMP[5].w, TEMP[9].wwww, TEMP[12].wwww 84: MOV OUT[5].z, TEMP[5].wyww 85: DP3 TEMP[8].w, TEMP[10], TEMP[10] 86: RSQ TEMP[9].w, TEMP[8].wwww 87: MUL TEMP[12].w, TEMP[8].wwww, TEMP[9].wwww 88: MOV TEMP[9].w, -TEMP[12].wwww 89: MUL TEMP[8].w, -TEMP[12].wwww, CONST[8].xxxx 90: EX2 TEMP[9].w, TEMP[8].wwww 91: SUB TEMP[8].w, IMM[1].xxxx, TEMP[9].wwww 92: MOV OUT[5].w, TEMP[8].wyzw 93: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: SUB temp[7].xyz, temp[5], const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP3 temp[3].w, temp[12], temp[12]; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: SUB temp[2].z, temp[2].wwww, const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FLR temp[2].z, temp[3].wwww; 38: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 39: FRC temp[6].w, temp[7].wwww; 40: SGT temp[7].w, temp[6].wwww, const[25].xxxx; 41: IF temp[7].wwww; 42: FRC temp[0].w, temp[3].wwww; 43: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 44: RCP temp[12].w, temp[5].wwww; 45: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 46: MOV temp[4].w, temp[6].wwww; 47: MUL temp[0].z, temp[6].wwww, const[25].wwww; 48: ELSE; 49: FRC temp[6].w, temp[3].wwww; 50: SUB temp[0].w, const[26].xxxx, temp[6].wwww; 51: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 52: POW temp[2].w, const[26].zzzz, temp[12].wwww; 53: RCP temp[12].w, temp[2].wwww; 54: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 55: MOV temp[4].w, temp[6].wwww; 56: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 57: ENDIF; 58: MUL output[2].xy, temp[3], temp[4].wwww; 59: MUL temp[11].xy, temp[3], temp[0].zzzz; 60: MOV output[2].zw, temp[11].xyxy; 61: MOV output[3].xy, temp[4]; 62: MOV output[3].z, temp[0].wyww; 63: MOV output[3].w, const[25].xxxx; 64: MUL temp[0], const[18], temp[1].yyyy; 65: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 66: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 67: MAD temp[3], const[20], temp[1].wwww, temp[0]; 68: MOV temp[13], temp[3]; 69: MOV output[1], input[0]; 70: MOV temp[3].xyz, const[1]; 71: MUL temp[1].xyz, const[22], temp[7].yyyw; 72: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 73: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 74: DP3 temp[6].w, temp[1], temp[1]; 75: RSQ temp[6].w, temp[6].wwww; 76: MUL temp[2].xyz, temp[1], temp[6].wwww; 77: MOV temp[0].xyz, temp[2]; 78: DP3 temp[5].w, temp[2], const[1]; 79: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 80: MUL output[4].xyz, const[3], temp[6].wwww; 81: DP3 temp[9].w, temp[10], temp[10]; 82: RSQ temp[12].w, temp[9].wwww; 83: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 84: MOV output[5].z, temp[5].wyww; 85: DP3 temp[8].w, temp[10], temp[10]; 86: RSQ temp[9].w, temp[8].wwww; 87: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 88: MOV temp[9].w, -temp[12].wwww; 89: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 90: EX2 temp[9].w, temp[8].wwww; 91: SUB temp[8].w, const[26].xxxx, temp[9].wwww; 92: MOV output[5].w, temp[8].wyzw; 93: MOV output[0], temp[13]; 94: MOV output[6], temp[13]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: SUB temp[7].xyz, temp[5], const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP3 temp[3].w, temp[12], temp[12]; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: SUB temp[2].z, temp[2].wwww, const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FLR temp[2].z, temp[3].wwww; 38: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 39: FRC temp[6].w, temp[7].wwww; 40: SGT temp[7].w, temp[6].wwww, const[25].xxxx; 41: IF temp[7].wwww; 42: FRC temp[0].w, temp[3].wwww; 43: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 44: RCP temp[12].w, temp[5].wwww; 45: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 46: MOV temp[4].w, temp[6].wwww; 47: MUL temp[0].z, temp[6].wwww, const[25].wwww; 48: ELSE; 49: FRC temp[6].w, temp[3].wwww; 50: SUB temp[0].w, const[26].xxxx, temp[6].wwww; 51: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 52: POW temp[2].w, const[26].zzzz, temp[12].wwww; 53: RCP temp[12].w, temp[2].wwww; 54: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 55: MOV temp[4].w, temp[6].wwww; 56: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 57: ENDIF; 58: MUL output[2].xy, temp[3], temp[4].wwww; 59: MUL temp[11].xy, temp[3], temp[0].zzzz; 60: MOV output[2].zw, temp[11].xyxy; 61: MOV output[3].xy, temp[4]; 62: MOV output[3].z, temp[0].wyww; 63: MOV output[3].w, const[25].xxxx; 64: MUL temp[0], const[18], temp[1].yyyy; 65: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 66: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 67: MAD temp[3], const[20], temp[1].wwww, temp[0]; 68: MOV temp[13], temp[3]; 69: MOV output[1], input[0]; 70: MOV temp[3].xyz, const[1]; 71: MUL temp[1].xyz, const[22], temp[7].yyyw; 72: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 73: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 74: DP3 temp[6].w, temp[1], temp[1]; 75: RSQ temp[6].w, temp[6].wwww; 76: MUL temp[2].xyz, temp[1], temp[6].wwww; 77: MOV temp[0].xyz, temp[2]; 78: DP3 temp[5].w, temp[2], const[1]; 79: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 80: MUL output[4].xyz, const[3], temp[6].wwww; 81: DP3 temp[9].w, temp[10], temp[10]; 82: RSQ temp[12].w, temp[9].wwww; 83: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 84: MOV output[5].z, temp[5].wyww; 85: DP3 temp[8].w, temp[10], temp[10]; 86: RSQ temp[9].w, temp[8].wwww; 87: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 88: MOV temp[9].w, -temp[12].wwww; 89: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 90: EX2 temp[9].w, temp[8].wwww; 91: SUB temp[8].w, const[26].xxxx, temp[9].wwww; 92: MOV output[5].w, temp[8].wyzw; 93: MOV output[0], temp[13]; 94: MOV output[6], temp[13]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: ADD temp[7].xyz, temp[5], -const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: ADD temp[2].z, temp[2].wwww, -const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FRC temp[14], temp[3].wwww; 38: ADD temp[2].z, temp[3].wwww, -temp[14]; 39: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 40: FRC temp[6].w, temp[7].wwww; 41: SLT temp[7].w, -temp[6].wwww, -const[25].xxxx; 42: IF temp[7].wwww; 43: FRC temp[0].w, temp[3].wwww; 44: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 45: RCP temp[12].w, temp[5].wwww; 46: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 47: MOV temp[4].w, temp[6].wwww; 48: MUL temp[0].z, temp[6].wwww, const[25].wwww; 49: ELSE; 50: FRC temp[6].w, temp[3].wwww; 51: ADD temp[0].w, const[26].xxxx, -temp[6].wwww; 52: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 53: POW temp[2].w, const[26].zzzz, temp[12].wwww; 54: RCP temp[12].w, temp[2].wwww; 55: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 56: MOV temp[4].w, temp[6].wwww; 57: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 58: ENDIF; 59: MUL output[2].xy, temp[3], temp[4].wwww; 60: MUL temp[11].xy, temp[3], temp[0].zzzz; 61: MOV output[2].zw, temp[11].xyxy; 62: MOV output[3].xy, temp[4]; 63: MOV output[3].z, temp[0].wyww; 64: MOV output[3].w, const[25].xxxx; 65: MUL temp[0], const[18], temp[1].yyyy; 66: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 67: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 68: MAD temp[3], const[20], temp[1].wwww, temp[0]; 69: MOV temp[13], temp[3]; 70: MOV output[1], input[0]; 71: MOV temp[3].xyz, const[1]; 72: MUL temp[1].xyz, const[22], temp[7].yyyw; 73: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 74: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 75: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 76: RSQ temp[6].w, temp[6].wwww; 77: MUL temp[2].xyz, temp[1], temp[6].wwww; 78: MOV temp[0].xyz, temp[2]; 79: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 80: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 81: MUL output[4].xyz, const[3], temp[6].wwww; 82: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 83: RSQ temp[12].w, temp[9].wwww; 84: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 85: MOV output[5].z, temp[5].wyww; 86: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 87: RSQ temp[9].w, temp[8].wwww; 88: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 89: MOV temp[9].w, -temp[12].wwww; 90: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 91: EX2 temp[9].w, temp[8].wwww; 92: ADD temp[8].w, const[26].xxxx, -temp[9].wwww; 93: MOV output[5].w, temp[8].wyzw; 94: MOV output[0], temp[13]; 95: MOV output[6], temp[13]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[5], const[25].xxxx; 1: MOV temp[0].z, input[1].wwww; 2: MOV temp[0].w, input[2].wwww; 3: MOV temp[1].x, temp[0].zzzz; 4: MOV temp[1].y, input[2].wwww; 5: MOV temp[0].xy, temp[1]; 6: MUL temp[2].xy, temp[1], const[0].xxxx; 7: MOV temp[3].xy, temp[2]; 8: MOV temp[3].z, input[3].xyxw; 9: MOV temp[3].w, const[26].xxxx; 10: MOV temp[1], temp[3]; 11: MUL temp[3].xy, temp[0], const[0].yyyy; 12: MUL temp[4].xy, temp[0], const[0].zzzz; 13: MOV temp[5].xyz, input[1]; 14: RCP temp[0].z, const[26].yyyy; 15: MUL temp[6].xyz, input[1], temp[0].zzzz; 16: MUL temp[5].xyz, temp[6], const[26].zzzz; 17: ADD temp[7].xyz, temp[5], -const[26].xxxx; 18: MOV temp[8].xyz, input[2]; 19: RCP temp[0].z, const[26].yyyy; 20: MUL temp[9].xyz, input[2], temp[0].zzzz; 21: MUL temp[8].xyz, temp[9], const[26].zzzz; 22: MUL temp[10], const[13], temp[1].yyyy; 23: MAD temp[11], const[12], temp[1].xxxx, temp[10]; 24: MAD temp[10], const[14], temp[1].zzzz, temp[11]; 25: MAD temp[12].xyz, const[15], temp[1].wwww, temp[10]; 26: MOV temp[10].xyz, temp[12]; 27: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 28: RSQ temp[3].z, temp[3].wwww; 29: MUL temp[0].w, temp[3].wwww, temp[3].zzzz; 30: MOV temp[0].z, temp[0].wwww; 31: MOV temp[0].w, const[26].wwww; 32: MOV temp[3].z, const[25].yyyy; 33: LG2 temp[2].z, temp[0].zzzz; 34: MUL temp[2].w, temp[2].zzzz, const[25].yyyy; 35: ADD temp[2].z, temp[2].wwww, -const[25].zzzz; 36: MAX temp[3].w, temp[2].zzzz, const[25].xxxx; 37: FRC temp[14], temp[3].wwww; 38: ADD temp[2].z, temp[3].wwww, -temp[14]; 39: MUL temp[7].w, temp[2].zzzz, const[25].wwww; 40: FRC temp[6].w, temp[7].wwww; 41: SLT temp[7].w, -temp[6].wwww, -const[25].xxxx; 42: IF temp[7].wwww; 43: FRC temp[0].w, temp[3].wwww; 44: POW temp[5].w, const[26].zzzz, temp[2].zzzz; 45: RCP temp[12].w, temp[5].wwww; 46: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 47: MOV temp[4].w, temp[6].wwww; 48: MUL temp[0].z, temp[6].wwww, const[25].wwww; 49: ELSE; 50: FRC temp[6].w, temp[3].wwww; 51: ADD temp[0].w, const[26].xxxx, -temp[6].wwww; 52: ADD temp[12].w, temp[2].zzzz, const[26].xxxx; 53: POW temp[2].w, const[26].zzzz, temp[12].wwww; 54: RCP temp[12].w, temp[2].wwww; 55: MUL temp[6].w, const[26].xxxx, temp[12].wwww; 56: MOV temp[4].w, temp[6].wwww; 57: MUL temp[0].z, temp[6].wwww, const[26].zzzz; 58: ENDIF; 59: MUL output[2].xy, temp[3], temp[4].wwww; 60: MUL temp[11].xy, temp[3], temp[0].zzzz; 61: MOV output[2].zw, temp[11].xyxy; 62: MOV output[3].xy, temp[4]; 63: MOV output[3].z, temp[0].wyww; 64: MOV output[3].w, const[25].xxxx; 65: MUL temp[0], const[18], temp[1].yyyy; 66: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 67: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 68: MAD temp[3], const[20], temp[1].wwww, temp[0]; 69: MOV temp[13], temp[3]; 70: MOV output[1], input[0]; 71: MOV temp[3].xyz, const[1]; 72: MUL temp[1].xyz, const[22], temp[7].yyyw; 73: MAD temp[3].xyz, const[21], temp[7].xxxw, temp[1]; 74: MAD temp[1].xyz, const[23], temp[7].zzzw, temp[3]; 75: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 76: RSQ temp[6].w, temp[6].wwww; 77: MUL temp[2].xyz, temp[1], temp[6].wwww; 78: MOV temp[0].xyz, temp[2]; 79: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 80: MAX temp[6].w, temp[5].wwww, const[25].xxxx; 81: MUL output[4].xyz, const[3], temp[6].wwww; 82: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 83: RSQ temp[12].w, temp[9].wwww; 84: MUL temp[5].w, temp[9].wwww, temp[12].wwww; 85: MOV output[5].z, temp[5].wyww; 86: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 87: RSQ temp[9].w, temp[8].wwww; 88: MUL temp[12].w, temp[8].wwww, temp[9].wwww; 89: MOV temp[9].w, -temp[12].wwww; 90: MUL temp[8].w, -temp[12].wwww, const[8].xxxx; 91: EX2 temp[9].w, temp[8].wwww; 92: ADD temp[8].w, const[26].xxxx, -temp[9].wwww; 93: MOV output[5].w, temp[8].wyzw; 94: MOV output[0], temp[13]; 95: MOV output[6], temp[13]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[5].xy, const[25].xx__; 1: MOV temp[0].z, input[1].__w_; 2: MOV temp[1].x, temp[0].z___; 3: MOV temp[1].y, input[2]._w__; 4: MOV temp[0].xy, temp[1].xy__; 5: MUL temp[2].xy, temp[1].xy__, const[0].xx__; 6: MOV temp[3].xy, temp[2].xy__; 7: MOV temp[3].z, input[3].__x_; 8: MOV temp[3].w, const[26].___x; 9: MOV temp[1], temp[3]; 10: MUL temp[3].xy, temp[0].xy__, const[0].yy__; 11: MUL temp[4].xy, temp[0].xy__, const[0].zz__; 12: RCP temp[0].z, const[26].y___; 13: MUL temp[6].xyz, input[1].xyz_, temp[0].zzz_; 14: MUL temp[5].xyz, temp[6].xyz_, const[26].zzz_; 15: ADD temp[7].xyz, temp[5].xyz_, -const[26].xxx_; 16: MUL temp[10].xyz, const[13].xyz_, temp[1].yyy_; 17: MAD temp[11].xyz, const[12].xyz_, temp[1].xxx_, temp[10].xyz_; 18: MAD temp[10].xyz, const[14].xyz_, temp[1].zzz_, temp[11].xyz_; 19: MAD temp[12].xyz, const[15].xyz_, temp[1].www_, temp[10].xyz_; 20: MOV temp[10].xyz, temp[12].xyz_; 21: DP4 temp[3].w, temp[12].xyz0, temp[12].xyz0; 22: RSQ temp[3].z, temp[3].w___; 23: MUL temp[0].w, temp[3].___w, temp[3].___z; 24: MOV temp[0].z, temp[0].__w_; 25: LG2 temp[2].z, temp[0].z___; 26: MUL temp[2].w, temp[2].___z, const[25].___y; 27: ADD temp[2].z, temp[2].__w_, -const[25].__z_; 28: MAX temp[3].w, temp[2].___z, const[25].___x; 29: FRC temp[14].z, temp[3].__w_; 30: ADD temp[2].z, temp[3].__w_, -temp[14].__z_; 31: MUL temp[7].w, temp[2].___z, const[25].___w; 32: FRC temp[6].w, temp[7].___w; 33: SLT temp[7].w, -temp[6].___w, -const[25].___x; 34: IF temp[7].w___; 35: FRC temp[0].w, temp[3].___w; 36: POW temp[5].w, const[26].z___, temp[2].z___; 37: RCP temp[12].w, temp[5].w___; 38: MUL temp[6].w, const[26].___x, temp[12].___w; 39: MOV temp[4].w, temp[6].___w; 40: MUL temp[0].z, temp[6].__w_, const[25].__w_; 41: ELSE; 42: FRC temp[6].w, temp[3].___w; 43: ADD temp[0].w, const[26].___x, -temp[6].___w; 44: ADD temp[12].w, temp[2].___z, const[26].___x; 45: POW temp[2].w, const[26].z___, temp[12].w___; 46: RCP temp[12].w, temp[2].w___; 47: MUL temp[6].w, const[26].___x, temp[12].___w; 48: MOV temp[4].w, temp[6].___w; 49: MUL temp[0].z, temp[6].__w_, const[26].__z_; 50: ENDIF; 51: MUL output[2].xy, temp[3].xy__, temp[4].ww__; 52: MUL temp[11].xy, temp[3].xy__, temp[0].zz__; 53: MOV output[2].zw, temp[11].__xy; 54: MOV output[3].xy, temp[4].xy__; 55: MOV output[3].z, temp[0].__w_; 56: MOV output[3].w, const[25].___x; 57: MUL temp[0], const[18], temp[1].yyyy; 58: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 59: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 60: MAD temp[3], const[20], temp[1].wwww, temp[0]; 61: MOV temp[13], temp[3]; 62: MOV output[1], input[0]; 63: MUL temp[1].xyz, const[22].xyz_, temp[7].yyy_; 64: MAD temp[3].xyz, const[21].xyz_, temp[7].xxx_, temp[1].xyz_; 65: MAD temp[1].xyz, const[23].xyz_, temp[7].zzz_, temp[3].xyz_; 66: DP4 temp[6].w, temp[1].xyz0, temp[1].xyz0; 67: RSQ temp[6].w, temp[6].w___; 68: MUL temp[2].xyz, temp[1].xyz_, temp[6].www_; 69: DP4 temp[5].w, temp[2].xyz0, const[1].xyz0; 70: MAX temp[6].w, temp[5].___w, const[25].___x; 71: MUL output[4].xyz, const[3].xyz_, temp[6].www_; 72: DP4 temp[9].w, temp[10].xyz0, temp[10].xyz0; 73: RSQ temp[12].w, temp[9].w___; 74: MUL temp[5].w, temp[9].___w, temp[12].___w; 75: MOV output[5].z, temp[5].__w_; 76: DP4 temp[8].w, temp[10].xyz0, temp[10].xyz0; 77: RSQ temp[9].w, temp[8].w___; 78: MUL temp[12].w, temp[8].___w, temp[9].___w; 79: MUL temp[8].w, -temp[12].___w, const[8].___x; 80: EX2 temp[9].w, temp[8].w___; 81: ADD temp[8].w, const[26].___x, -temp[9].___w; 82: MOV output[5].w, temp[8].___w; 83: MOV output[0], temp[13]; 84: MOV output[6], temp[13]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[5].xy, const[25].xx__; 1: MOV temp[0].z, input[1].__w_; 2: MOV temp[1].x, temp[0].z___; 3: MOV temp[1].y, input[2]._w__; 4: MOV temp[0].xy, temp[1].xy__; 5: MUL temp[2].xy, temp[1].xy__, const[0].xx__; 6: MOV temp[3].xy, temp[2].xy__; 7: MOV temp[3].z, input[3].__x_; 8: MOV temp[3].w, const[26].___x; 9: MOV temp[1], temp[3]; 10: MUL temp[3].xy, temp[0].xy__, const[0].yy__; 11: MUL temp[4].xy, temp[0].xy__, const[0].zz__; 12: RCP temp[0].z, const[26].y___; 13: MUL temp[5].xyz, input[1].xyz_, temp[0].zzz_; 14: MUL temp[6].xyz, temp[5].xyz_, const[26].zzz_; 15: ADD temp[7].xyz, temp[6].xyz_, -const[26].xxx_; 16: MUL temp[8].xyz, const[13].xyz_, temp[1].yyy_; 17: MAD temp[9].xyz, const[12].xyz_, temp[1].xxx_, temp[8].xyz_; 18: MAD temp[8].xyz, const[14].xyz_, temp[1].zzz_, temp[9].xyz_; 19: MAD temp[10].xyz, const[15].xyz_, temp[1].www_, temp[8].xyz_; 20: MOV temp[8].xyz, temp[10].xyz_; 21: DP4 temp[3].w, temp[10].xyz0, temp[10].xyz0; 22: RSQ temp[3].z, temp[3].w___; 23: MUL temp[0].w, temp[3].___w, temp[3].___z; 24: MOV temp[0].z, temp[0].__w_; 25: LG2 temp[2].z, temp[0].z___; 26: MUL temp[2].w, temp[2].___z, const[25].___y; 27: ADD temp[2].z, temp[2].__w_, -const[25].__z_; 28: MAX temp[3].w, temp[2].___z, const[25].___x; 29: FRC temp[11].z, temp[3].__w_; 30: ADD temp[2].z, temp[3].__w_, -temp[11].__z_; 31: MUL temp[7].w, temp[2].___z, const[25].___w; 32: FRC temp[5].w, temp[7].___w; 33: SLT temp[7].w, -temp[5].___w, -const[25].___x; 34: IF temp[7].w___; 35: FRC temp[0].w, temp[3].___w; 36: POW temp[6].w, const[26].z___, temp[2].z___; 37: RCP temp[10].w, temp[6].w___; 38: MUL temp[5].w, const[26].___x, temp[10].___w; 39: MOV temp[4].w, temp[5].___w; 40: MUL temp[0].z, temp[5].__w_, const[25].__w_; 41: ELSE; 42: FRC temp[5].w, temp[3].___w; 43: ADD temp[0].w, const[26].___x, -temp[5].___w; 44: ADD temp[10].w, temp[2].___z, const[26].___x; 45: POW temp[2].w, const[26].z___, temp[10].w___; 46: RCP temp[10].w, temp[2].w___; 47: MUL temp[5].w, const[26].___x, temp[10].___w; 48: MOV temp[4].w, temp[5].___w; 49: MUL temp[0].z, temp[5].__w_, const[26].__z_; 50: ENDIF; 51: MUL output[2].xy, temp[3].xy__, temp[4].ww__; 52: MUL temp[9].xy, temp[3].xy__, temp[0].zz__; 53: MOV output[2].zw, temp[9].__xy; 54: MOV output[3].xy, temp[4].xy__; 55: MOV output[3].z, temp[0].__w_; 56: MOV output[3].w, const[25].___x; 57: MUL temp[0], const[18], temp[1].yyyy; 58: MAD temp[2], const[17], temp[1].xxxx, temp[0]; 59: MAD temp[0], const[19], temp[1].zzzz, temp[2]; 60: MAD temp[3], const[20], temp[1].wwww, temp[0]; 61: MOV temp[0], temp[3]; 62: MOV output[1], input[0]; 63: MUL temp[1].xyz, const[22].xyz_, temp[7].yyy_; 64: MAD temp[3].xyz, const[21].xyz_, temp[7].xxx_, temp[1].xyz_; 65: MAD temp[1].xyz, const[23].xyz_, temp[7].zzz_, temp[3].xyz_; 66: DP4 temp[5].w, temp[1].xyz0, temp[1].xyz0; 67: RSQ temp[5].w, temp[5].w___; 68: MUL temp[2].xyz, temp[1].xyz_, temp[5].www_; 69: DP4 temp[6].w, temp[2].xyz0, const[1].xyz0; 70: MAX temp[5].w, temp[6].___w, const[25].___x; 71: MUL output[4].xyz, const[3].xyz_, temp[5].www_; 72: DP4 temp[1].w, temp[8].xyz0, temp[8].xyz0; 73: RSQ temp[10].w, temp[1].w___; 74: MUL temp[6].w, temp[1].___w, temp[10].___w; 75: MOV output[5].z, temp[6].__w_; 76: DP4 temp[2].w, temp[8].xyz0, temp[8].xyz0; 77: RSQ temp[1].w, temp[2].w___; 78: MUL temp[10].w, temp[2].___w, temp[1].___w; 79: MUL temp[2].w, -temp[10].___w, const[8].___x; 80: EX2 temp[1].w, temp[2].w___; 81: ADD temp[2].w, const[26].___x, -temp[1].___w; 82: MOV output[5].w, temp[2].___w; 83: MOV output[0], temp[0]; 84: MOV output[6], temp[0]; Final vertex program code: 0: op: 0x0030a203 dst: 5o op: VE_ADD src0: 0x01f80322 reg: 25c swiz: X/ X/ U/ U src1: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 1: op: 0x00400003 dst: 0t op: VE_ADD src0: 0x01dfe021 reg: 1i swiz: U/ U/ W/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff4000 reg: 0t swiz: Z/ U/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 3: op: 0x00202003 dst: 1t op: VE_ADD src0: 0x01fbe041 reg: 2i swiz: U/ W/ U/ U src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 4: op: 0x00300003 dst: 0t op: VE_ADD 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 5: op: 0x00304002 dst: 2t op: VE_MULTIPLY src0: 0x01f90020 reg: 1t swiz: X/ Y/ U/ U src1: 0x01f80002 reg: 0c swiz: X/ X/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 6: op: 0x00306003 dst: 3t 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 7: op: 0x00406003 dst: 3t op: VE_ADD src0: 0x01c7e061 reg: 3i swiz: U/ U/ X/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 8: op: 0x00806003 dst: 3t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 9: op: 0x00f02003 dst: 1t 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 10: op: 0x00306002 dst: 3t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01f92002 reg: 0c swiz: Y/ Y/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 11: op: 0x00308002 dst: 4t op: VE_MULTIPLY src0: 0x01f90000 reg: 0t swiz: X/ Y/ U/ U src1: 0x01fa4002 reg: 0c swiz: Z/ Z/ U/ U src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 12: op: 0x00400046 dst: 0t op: ME_RECIP_DX src0: 0x00492342 reg: 26c swiz: Y/ Y/ Y/ Y src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 13: op: 0x0070a002 dst: 5t op: VE_MULTIPLY src0: 0x01d10021 reg: 1i swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 14: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24342 reg: 26c swiz: Z/ Z/ Z/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 15: op: 0x0070e003 dst: 7t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x1fc00342 reg: 26c swiz: -X/-X/-X/-U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 16: op: 0x00710002 dst: 8t op: VE_MULTIPLY src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01c92020 reg: 1t swiz: Y/ Y/ Y/ U src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 17: op: 0x00712004 dst: 9t op: VE_MULTIPLY_ADD src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c00020 reg: 1t swiz: X/ X/ X/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 18: op: 0x00710004 dst: 8t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01d24020 reg: 1t swiz: Z/ Z/ Z/ U src2: 0x01d10120 reg: 9t swiz: X/ Y/ Z/ U 19: op: 0x00714004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x01d101e2 reg: 15c swiz: X/ Y/ Z/ U src1: 0x01db6020 reg: 1t swiz: W/ W/ W/ U src2: 0x01d10100 reg: 8t swiz: X/ Y/ Z/ U 20: op: 0x00710003 dst: 8t op: VE_ADD src0: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U src1: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 21: op: 0x00806001 dst: 3t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 22: op: 0x00406048 dst: 3t op: ME_RECIP_SQRT_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 23: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x00bfe060 reg: 3t swiz: U/ U/ U/ Z src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 24: op: 0x00400003 dst: 0t op: VE_ADD src0: 0x01dfe000 reg: 0t swiz: U/ U/ W/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 25: op: 0x0040404c dst: 2t op: ME_LOG_BASE2_FULL_DX src0: 0x00924000 reg: 0t swiz: Z/ Z/ Z/ Z src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 26: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x007fe322 reg: 25c swiz: U/ U/ U/ Y src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 27: op: 0x00404003 dst: 2t op: VE_ADD src0: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src1: 0x1fd7e322 reg: 25c swiz: -U/-U/-Z/-U src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 28: op: 0x00806007 dst: 3t op: VE_MAXIMUM src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 29: op: 0x00416006 dst: 11t op: VE_FRACTION src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 30: op: 0x00404003 dst: 2t op: VE_ADD src0: 0x01dfe060 reg: 3t swiz: U/ U/ W/ U src1: 0x1fd7e160 reg: 11t swiz: -U/-U/-Z/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 31: op: 0x0080e002 dst: 7t op: VE_MULTIPLY src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x00ffe322 reg: 25c swiz: U/ U/ U/ W src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 32: op: 0x0080a006 dst: 5t op: VE_FRACTION src0: 0x00ffe0e0 reg: 7t swiz: U/ U/ U/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 33: op: 0x0080e00a dst: 7t op: VE_SET_LESS_THAN src0: 0x1effe0a0 reg: 5t swiz: -U/-U/-U/-W src1: 0x1e3fe322 reg: 25c swiz: -U/-U/-U/-X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 34: op: 0x008d0058 dst: 104t op: ME_PRED_SET_NEQ src0: 0x00db60e0 reg: 7t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x0c800006 dst: 0t op: PRED 1 VE_FRACTION src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 36: op: 0x0c80c045 dst: 6t op: PRED 1 ME_POWER_FUNC_FF src0: 0x00924342 reg: 26c swiz: Z/ Z/ Z/ Z src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x00924040 reg: 2t swiz: Z/ Z/ Z/ Z 37: op: 0x0c814046 dst: 10t op: PRED 1 ME_RECIP_DX src0: 0x00db60c0 reg: 6t swiz: W/ W/ W/ W src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 38: op: 0x0c80a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 39: op: 0x0c808003 dst: 4t op: PRED 1 VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 40: op: 0x0c400002 dst: 0t op: PRED 1 VE_MULTIPLY src0: 0x01dfe0a0 reg: 5t swiz: U/ U/ W/ U src1: 0x01dfe322 reg: 25c swiz: U/ U/ W/ U src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 41: op: 0x008d005a dst: 104t op: ME_PRED_SET_INV src0: 0x00e49d00 reg: 232t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 42: op: 0x0c80a006 dst: 5t op: PRED 1 VE_FRACTION src0: 0x00ffe060 reg: 3t swiz: U/ U/ U/ W src1: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 43: op: 0x0c800003 dst: 0t op: PRED 1 VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x1effe0a0 reg: 5t swiz: -U/-U/-U/-W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 44: op: 0x0c814003 dst: 10t op: PRED 1 VE_ADD src0: 0x00bfe040 reg: 2t swiz: U/ U/ U/ Z src1: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 45: op: 0x0c804045 dst: 2t op: PRED 1 ME_POWER_FUNC_FF src0: 0x00924342 reg: 26c swiz: Z/ Z/ Z/ Z src1: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 src2: 0x00db6140 reg: 10t swiz: W/ W/ W/ W 46: op: 0x0c814046 dst: 10t op: PRED 1 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 47: op: 0x0c80a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 48: op: 0x0c808003 dst: 4t op: PRED 1 VE_ADD src0: 0x00ffe0a0 reg: 5t swiz: U/ U/ U/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 49: op: 0x0c400002 dst: 0t op: PRED 1 VE_MULTIPLY src0: 0x01dfe0a0 reg: 5t swiz: U/ U/ W/ U src1: 0x01d7e342 reg: 26c swiz: U/ U/ Z/ U src2: 0x01248342 reg: 26c swiz: 0/ 0/ 0/ 0 50: op: 0x008d005b dst: 104t op: ME_PRED_SET_POP src0: 0x00e49d00 reg: 232t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 51: op: 0x00304202 dst: 2o op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01fb6080 reg: 4t swiz: W/ W/ U/ U src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 52: op: 0x00312002 dst: 9t op: VE_MULTIPLY src0: 0x01f90060 reg: 3t swiz: X/ Y/ U/ U src1: 0x01fa4000 reg: 0t swiz: Z/ Z/ U/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 53: op: 0x00c04203 dst: 2o op: VE_ADD src0: 0x0047e120 reg: 9t swiz: U/ U/ X/ Y src1: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 54: op: 0x00306203 dst: 3o op: VE_ADD src0: 0x01f90080 reg: 4t swiz: X/ Y/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 55: op: 0x00406203 dst: 3o op: VE_ADD src0: 0x01dfe000 reg: 0t swiz: U/ U/ W/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 56: op: 0x00806203 dst: 3o op: VE_ADD src0: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src1: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 57: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00492020 reg: 1t swiz: Y/ Y/ Y/ Y src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 58: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 59: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10262 reg: 19c swiz: X/ Y/ Z/ W src1: 0x00924020 reg: 1t swiz: Z/ Z/ Z/ Z src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 60: op: 0x00f06004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x00d10282 reg: 20c swiz: X/ Y/ Z/ W src1: 0x00db6020 reg: 1t swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 61: op: 0x00f00003 dst: 0t 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 62: op: 0x00f02203 dst: 1o 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 63: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d102c2 reg: 22c swiz: X/ Y/ Z/ U src1: 0x01c920e0 reg: 7t swiz: Y/ Y/ Y/ U src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 64: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01c000e0 reg: 7t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 65: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d102e2 reg: 23c swiz: X/ Y/ Z/ U src1: 0x01d240e0 reg: 7t swiz: Z/ Z/ Z/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 66: op: 0x0080a001 dst: 5t op: VE_DOT_PRODUCT src0: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src1: 0x01110020 reg: 1t swiz: X/ Y/ Z/ 0 src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 67: op: 0x0080a048 dst: 5t op: ME_RECIP_SQRT_DX src0: 0x00db60a0 reg: 5t swiz: W/ W/ W/ W src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 68: op: 0x00704002 dst: 2t op: VE_MULTIPLY src0: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U src1: 0x01db60a0 reg: 5t swiz: W/ W/ W/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 69: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110040 reg: 2t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 70: op: 0x0080a007 dst: 5t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x003fe322 reg: 25c swiz: U/ U/ U/ X src2: 0x01248322 reg: 25c swiz: 0/ 0/ 0/ 0 71: op: 0x00708202 dst: 4o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db60a0 reg: 5t swiz: W/ W/ W/ U src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 72: op: 0x00802001 dst: 1t op: VE_DOT_PRODUCT src0: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src1: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 73: op: 0x00814048 dst: 10t op: ME_RECIP_SQRT_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 74: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src1: 0x00ffe140 reg: 10t swiz: U/ U/ U/ W src2: 0x01248140 reg: 10t swiz: 0/ 0/ 0/ 0 75: op: 0x0040a203 dst: 5o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 76: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src1: 0x01110100 reg: 8t swiz: X/ Y/ Z/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 77: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 78: op: 0x00814002 dst: 10t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 79: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x1effe140 reg: 10t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 80: op: 0x0080204b dst: 1t op: ME_EXP_BASE2_FULL_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 81: op: 0x00804003 dst: 2t op: VE_ADD src0: 0x003fe342 reg: 26c swiz: U/ U/ U/ X src1: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 82: op: 0x0080a203 dst: 5o op: VE_ADD src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 83: 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 84: 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 vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL CONST[0..3] DCL TEMP[0..1] 0: MUL TEMP[0], CONST[1], IN[0].yyyy 1: MAD TEMP[1], CONST[0], IN[0].xxxx, TEMP[0] 2: MAD TEMP[0], CONST[2], IN[0].zzzz, TEMP[1] 3: MAD TEMP[1], CONST[3], IN[0].wwww, TEMP[0] 4: MOV OUT[0], TEMP[1] 5: MOV OUT[1], IN[2] 6: MOV OUT[2], IN[1] 7: END Vertex Program: before compilation # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after deadcode # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[2], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[2]; 8: MOV output[3], temp[2]; Vertex Program: after dataflow # Radeon Compiler Program 0: MUL temp[0], const[1], input[0].yyyy; 1: MAD temp[1], const[0], input[0].xxxx, temp[0]; 2: MAD temp[0], const[2], input[0].zzzz, temp[1]; 3: MAD temp[1], const[3], input[0].wwww, temp[0]; 4: MOV temp[0], temp[1]; 5: MOV output[1], input[2]; 6: MOV output[2], input[1]; 7: MOV output[0], temp[0]; 8: MOV output[3], temp[0]; Final vertex program code: 0: op: 0x00f00002 dst: 0t op: VE_MULTIPLY src0: 0x00d10022 reg: 1c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 1: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 2: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d10042 reg: 2c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 3: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10062 reg: 3c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10000 reg: 0t swiz: X/ Y/ Z/ W 4: op: 0x00f00003 dst: 0t 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 5: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 6: op: 0x00f04203 dst: 2o 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 7: 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 8: 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 Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings 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[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..239] DCL TEMP[0..13] DCL ADDR[0] 0: MOV OUT[4], CONST[226] 1: MOV TEMP[0].x, IN[3] 2: MOV TEMP[1].x, IN[4] 3: MOV TEMP[2].xy, CONST[226].xyyy 4: MOV TEMP[3].yz, CONST[226].xyyy 5: MOV TEMP[4], CONST[226].yxyy 6: MOV TEMP[5], CONST[226].yyxy 7: MOV TEMP[6], CONST[226].yyyx 8: MOV TEMP[7], CONST[226].xyyy 9: MOV TEMP[8], CONST[226].yxyy 10: MOV TEMP[9], CONST[226].yyxy 11: MOV TEMP[10].w, CONST[226].xxxx 12: BGNLOOP :36 13: SGE TEMP[11].w, TEMP[10].wwww, CONST[227].xxxx 14: IF TEMP[11].wwww :16 15: BRK 16: ENDIF 17: ADD TEMP[5].x, TEMP[0].xxxx, CONST[226].xxxx 18: TRUNC TEMP[5].y, TEMP[5].xxxx 19: ARL ADDR[0].x, TEMP[5].yyyy 20: MUL TEMP[4], CONST[ADDR[0].x+10], TEMP[1].xxxx 21: ADD TEMP[7], TEMP[7], TEMP[4] 22: MOV TEMP[3].yz, TEMP[7] 23: ADD TEMP[6].x, TEMP[0].xxxx, CONST[227].yyyy 24: TRUNC TEMP[6].y, TEMP[6].xxxx 25: ARL ADDR[0].x, TEMP[6].yyyy 26: MUL TEMP[5], CONST[ADDR[0].x+10], TEMP[1].xxxx 27: ADD TEMP[8], TEMP[8], TEMP[5] 28: MOV TEMP[4], TEMP[8] 29: ADD TEMP[2].x, TEMP[0].xxxx, CONST[227].zzzz 30: TRUNC TEMP[2].y, TEMP[2].xxxx 31: ARL ADDR[0].x, TEMP[2].yyyy 32: MUL TEMP[6], CONST[ADDR[0].x+10], TEMP[1].xxxx 33: ADD TEMP[9], TEMP[9], TEMP[6] 34: MOV TEMP[5], TEMP[9] 35: ADD TEMP[10].w, TEMP[10].wwww, CONST[227].yyyy 36: ENDLOOP :12 37: MOV TEMP[0].xyz, TEMP[7] 38: MOV TEMP[1].xyz, TEMP[8] 39: MOV TEMP[11].xyz, TEMP[9] 40: MOV TEMP[2].xyz, TEMP[7] 41: MOV TEMP[12].xyz, TEMP[8] 42: MOV TEMP[13].xyz, TEMP[9] 43: MOV TEMP[4], TEMP[2] 44: MOV TEMP[5], TEMP[12] 45: MOV TEMP[6], TEMP[13] 46: MOV TEMP[3].y, TEMP[7].wwww 47: MOV TEMP[3].z, TEMP[8].wwww 48: MOV TEMP[12].x, TEMP[3].yyyy 49: MOV TEMP[12].y, TEMP[3].zzzw 50: MOV TEMP[12].z, TEMP[9].wwww 51: MOV TEMP[2].xyz, TEMP[12] 52: MOV TEMP[0].xyz, IN[0] 53: MUL TEMP[1].xyz, TEMP[5], IN[0].yyyw 54: MAD TEMP[11].xyz, TEMP[4], TEMP[0].xxxw, TEMP[1] 55: MAD TEMP[13].xyz, TEMP[13], TEMP[0].zzzw, TEMP[11] 56: ADD TEMP[12].xyz, TEMP[13], TEMP[12] 57: MOV TEMP[7].xyz, TEMP[12] 58: MUL TEMP[0].xyz, TEMP[5], IN[1].yyyw 59: MAD TEMP[1].xyz, TEMP[4], IN[1].xxxw, TEMP[0] 60: MAD TEMP[13].xyz, TEMP[6], IN[1].zzzw, TEMP[1] 61: MOV TEMP[12].xyz, TEMP[13] 62: DP3 TEMP[3].y, TEMP[13], TEMP[13] 63: RSQ TEMP[3].y, TEMP[3].yyyy 64: MUL TEMP[10].xyz, TEMP[13], TEMP[3].yyyy 65: MUL TEMP[0].xyz, TEMP[5], IN[5].yyyw 66: MAD TEMP[1].xyz, TEMP[4], IN[5].xxxw, TEMP[0] 67: MAD TEMP[13].xyz, TEMP[6], IN[5].zzzw, TEMP[1] 68: MOV TEMP[12].xyz, TEMP[13] 69: DP3 TEMP[3].y, TEMP[13], TEMP[13] 70: RSQ TEMP[3].y, TEMP[3].yyyy 71: MUL TEMP[0], CONST[229], TEMP[7].yyyy 72: MAD TEMP[1], CONST[228], TEMP[7].xxxx, TEMP[0] 73: MAD TEMP[0], CONST[230], TEMP[7].zzzz, TEMP[1] 74: MAD TEMP[13], CONST[231], CONST[227].yyyy, TEMP[0] 75: MOV TEMP[12].xyz, TEMP[13] 76: MUL TEMP[1], CONST[233], TEMP[7].yyyy 77: MAD TEMP[11], CONST[232], TEMP[7].xxxx, TEMP[1] 78: MAD TEMP[1], CONST[234], TEMP[7].zzzz, TEMP[11] 79: MAD TEMP[0], CONST[235], CONST[227].yyyy, TEMP[1] 80: MOV OUT[0], TEMP[0] 81: MOV OUT[1], IN[2] 82: MOV OUT[2], CONST[0] 83: MOV TEMP[0].xyz, CONST[1] 84: MUL TEMP[4].xyz, CONST[237], TEMP[10].yyyw 85: MAD TEMP[5].xyz, CONST[236], TEMP[10].xxxw, TEMP[4] 86: MAD TEMP[4].xyz, CONST[238], TEMP[10].zzzw, TEMP[5] 87: DP3 TEMP[3].y, TEMP[4], TEMP[4] 88: RSQ TEMP[3].y, TEMP[3].yyyy 89: MUL TEMP[11].xyz, TEMP[4], TEMP[3].yyyy 90: MOV TEMP[1].xyz, TEMP[11] 91: DP3 TEMP[3].z, TEMP[11], CONST[1] 92: MAX TEMP[3].y, TEMP[3].zzzz, CONST[226].xxxx 93: MUL OUT[3].xyz, CONST[3], TEMP[3].yyyy 94: DP3 TEMP[12].w, TEMP[13], TEMP[13] 95: RSQ TEMP[2].w, TEMP[12].wwww 96: MUL TEMP[3].z, TEMP[12].wwww, TEMP[2].wwww 97: MOV OUT[4].z, TEMP[3].zyzw 98: DP3 TEMP[0].w, TEMP[12], TEMP[12] 99: RSQ TEMP[12].w, TEMP[0].wwww 100: MUL TEMP[2].w, TEMP[0].wwww, TEMP[12].wwww 101: MOV TEMP[12].w, -TEMP[2].wwww 102: MUL TEMP[0].w, -TEMP[2].wwww, CONST[8].xxxx 103: EX2 TEMP[12].w, TEMP[0].wwww 104: SUB TEMP[0].w, CONST[227].yyyy, TEMP[12].wwww 105: MOV OUT[4].w, TEMP[0].wyzw 106: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SGE temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: BRK; 16: ENDIF; 17: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 18: FLR temp[5].y, temp[5].xxxx; 19: ARL addr[0].x, temp[5].yyyy; 20: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 21: ADD temp[7], temp[7], temp[4]; 22: MOV temp[3].yz, temp[7]; 23: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 24: FLR temp[6].y, temp[6].xxxx; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FLR temp[2].y, temp[2].xxxx; 31: ARL addr[0].x, temp[2].yyyy; 32: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 33: ADD temp[9], temp[9], temp[6]; 34: MOV temp[5], temp[9]; 35: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 36: ENDLOOP; 37: MOV temp[0].xyz, temp[7]; 38: MOV temp[1].xyz, temp[8]; 39: MOV temp[11].xyz, temp[9]; 40: MOV temp[2].xyz, temp[7]; 41: MOV temp[12].xyz, temp[8]; 42: MOV temp[13].xyz, temp[9]; 43: MOV temp[4], temp[2]; 44: MOV temp[5], temp[12]; 45: MOV temp[6], temp[13]; 46: MOV temp[3].y, temp[7].wwww; 47: MOV temp[3].z, temp[8].wwww; 48: MOV temp[12].x, temp[3].yyyy; 49: MOV temp[12].y, temp[3].zzzw; 50: MOV temp[12].z, temp[9].wwww; 51: MOV temp[2].xyz, temp[12]; 52: MOV temp[0].xyz, input[0]; 53: MUL temp[1].xyz, temp[5], input[0].yyyw; 54: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 55: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 56: ADD temp[12].xyz, temp[13], temp[12]; 57: MOV temp[7].xyz, temp[12]; 58: MUL temp[0].xyz, temp[5], input[1].yyyw; 59: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 60: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 61: MOV temp[12].xyz, temp[13]; 62: DP3 temp[3].y, temp[13], temp[13]; 63: RSQ temp[3].y, temp[3].yyyy; 64: MUL temp[10].xyz, temp[13], temp[3].yyyy; 65: MUL temp[0].xyz, temp[5], input[5].yyyw; 66: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 67: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 68: MOV temp[12].xyz, temp[13]; 69: DP3 temp[3].y, temp[13], temp[13]; 70: RSQ temp[3].y, temp[3].yyyy; 71: MUL temp[0], const[229], temp[7].yyyy; 72: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 73: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 74: MAD temp[13], const[231], const[227].yyyy, temp[0]; 75: MOV temp[12].xyz, temp[13]; 76: MUL temp[1], const[233], temp[7].yyyy; 77: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 78: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 79: MAD temp[0], const[235], const[227].yyyy, temp[1]; 80: MOV temp[14], temp[0]; 81: MOV output[1], input[2]; 82: MOV output[2], const[0]; 83: MOV temp[0].xyz, const[1]; 84: MUL temp[4].xyz, const[237], temp[10].yyyw; 85: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 86: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 87: DP3 temp[3].y, temp[4], temp[4]; 88: RSQ temp[3].y, temp[3].yyyy; 89: MUL temp[11].xyz, temp[4], temp[3].yyyy; 90: MOV temp[1].xyz, temp[11]; 91: DP3 temp[3].z, temp[11], const[1]; 92: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 93: MUL output[3].xyz, const[3], temp[3].yyyy; 94: DP3 temp[12].w, temp[13], temp[13]; 95: RSQ temp[2].w, temp[12].wwww; 96: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 97: MOV output[4].z, temp[3].zyzw; 98: DP3 temp[0].w, temp[12], temp[12]; 99: RSQ temp[12].w, temp[0].wwww; 100: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 101: MOV temp[12].w, -temp[2].wwww; 102: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 103: EX2 temp[12].w, temp[0].wwww; 104: SUB temp[0].w, const[227].yyyy, temp[12].wwww; 105: MOV output[4].w, temp[0].wyzw; 106: MOV output[0], temp[14]; 107: MOV output[5], temp[14]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FLR temp[5].y, temp[5].xxxx; 17: ARL addr[0].x, temp[5].yyyy; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: MOV temp[3].yz, temp[7]; 21: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 22: FLR temp[6].y, temp[6].xxxx; 23: ARL addr[0].x, temp[6].yyyy; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 28: FLR temp[2].y, temp[2].xxxx; 29: ARL addr[0].x, temp[2].yyyy; 30: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 31: ADD temp[9], temp[9], temp[6]; 32: MOV temp[5], temp[9]; 33: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 34: ENDIF; 35: ENDLOOP; 36: MOV temp[0].xyz, temp[7]; 37: MOV temp[1].xyz, temp[8]; 38: MOV temp[11].xyz, temp[9]; 39: MOV temp[2].xyz, temp[7]; 40: MOV temp[12].xyz, temp[8]; 41: MOV temp[13].xyz, temp[9]; 42: MOV temp[4], temp[2]; 43: MOV temp[5], temp[12]; 44: MOV temp[6], temp[13]; 45: MOV temp[3].y, temp[7].wwww; 46: MOV temp[3].z, temp[8].wwww; 47: MOV temp[12].x, temp[3].yyyy; 48: MOV temp[12].y, temp[3].zzzw; 49: MOV temp[12].z, temp[9].wwww; 50: MOV temp[2].xyz, temp[12]; 51: MOV temp[0].xyz, input[0]; 52: MUL temp[1].xyz, temp[5], input[0].yyyw; 53: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 54: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 55: ADD temp[12].xyz, temp[13], temp[12]; 56: MOV temp[7].xyz, temp[12]; 57: MUL temp[0].xyz, temp[5], input[1].yyyw; 58: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 59: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 60: MOV temp[12].xyz, temp[13]; 61: DP3 temp[3].y, temp[13], temp[13]; 62: RSQ temp[3].y, temp[3].yyyy; 63: MUL temp[10].xyz, temp[13], temp[3].yyyy; 64: MUL temp[0].xyz, temp[5], input[5].yyyw; 65: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 66: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 67: MOV temp[12].xyz, temp[13]; 68: DP3 temp[3].y, temp[13], temp[13]; 69: RSQ temp[3].y, temp[3].yyyy; 70: MUL temp[0], const[229], temp[7].yyyy; 71: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 72: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 73: MAD temp[13], const[231], const[227].yyyy, temp[0]; 74: MOV temp[12].xyz, temp[13]; 75: MUL temp[1], const[233], temp[7].yyyy; 76: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 77: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 78: MAD temp[0], const[235], const[227].yyyy, temp[1]; 79: MOV temp[14], temp[0]; 80: MOV output[1], input[2]; 81: MOV output[2], const[0]; 82: MOV temp[0].xyz, const[1]; 83: MUL temp[4].xyz, const[237], temp[10].yyyw; 84: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 85: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 86: DP3 temp[3].y, temp[4], temp[4]; 87: RSQ temp[3].y, temp[3].yyyy; 88: MUL temp[11].xyz, temp[4], temp[3].yyyy; 89: MOV temp[1].xyz, temp[11]; 90: DP3 temp[3].z, temp[11], const[1]; 91: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 92: MUL output[3].xyz, const[3], temp[3].yyyy; 93: DP3 temp[12].w, temp[13], temp[13]; 94: RSQ temp[2].w, temp[12].wwww; 95: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 96: MOV output[4].z, temp[3].zyzw; 97: DP3 temp[0].w, temp[12], temp[12]; 98: RSQ temp[12].w, temp[0].wwww; 99: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 100: MOV temp[12].w, -temp[2].wwww; 101: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 102: EX2 temp[12].w, temp[0].wwww; 103: SUB temp[0].w, const[227].yyyy, temp[12].wwww; 104: MOV output[4].w, temp[0].wyzw; 105: MOV output[0], temp[14]; 106: MOV output[5], temp[14]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MAD temp[13], const[231], const[227].yyyy, temp[0]; 77: MOV temp[12].xyz, temp[13]; 78: MUL temp[1], const[233], temp[7].yyyy; 79: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 80: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 81: MAD temp[0], const[235], const[227].yyyy, temp[1]; 82: MOV temp[14], temp[0]; 83: MOV output[1], input[2]; 84: MOV output[2], const[0]; 85: MOV temp[0].xyz, const[1]; 86: MUL temp[4].xyz, const[237], temp[10].yyyw; 87: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 88: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 89: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 90: RSQ temp[3].y, temp[3].yyyy; 91: MUL temp[11].xyz, temp[4], temp[3].yyyy; 92: MOV temp[1].xyz, temp[11]; 93: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 94: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 95: MUL output[3].xyz, const[3], temp[3].yyyy; 96: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 97: RSQ temp[2].w, temp[12].wwww; 98: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 99: MOV output[4].z, temp[3].zyzw; 100: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 101: RSQ temp[12].w, temp[0].wwww; 102: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 103: MOV temp[12].w, -temp[2].wwww; 104: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 105: EX2 temp[12].w, temp[0].wwww; 106: ADD temp[0].w, const[227].yyyy, -temp[12].wwww; 107: MOV output[4].w, temp[0].wyzw; 108: MOV output[0], temp[14]; 109: MOV output[5], temp[14]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], const[226]; 1: MOV temp[0].x, input[3]; 2: MOV temp[1].x, input[4]; 3: MOV temp[2].xy, const[226].xyyy; 4: MOV temp[3].yz, const[226].xyyy; 5: MOV temp[4], const[226].yxyy; 6: MOV temp[5], const[226].yyxy; 7: MOV temp[6], const[226].yyyx; 8: MOV temp[7], const[226].xyyy; 9: MOV temp[8], const[226].yxyy; 10: MOV temp[9], const[226].yyxy; 11: MOV temp[10].w, const[226].xxxx; 12: BGNLOOP; 13: SLT temp[11].w, temp[10].wwww, const[227].xxxx; 14: IF temp[11].wwww; 15: ADD temp[5].x, temp[0].xxxx, const[226].xxxx; 16: FRC temp[15], temp[5].xxxx; 17: ADD temp[5].y, temp[5].xxxx, -temp[15]; 18: ARL addr[0].x, temp[5].yyyy; 19: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 20: ADD temp[7], temp[7], temp[4]; 21: MOV temp[3].yz, temp[7]; 22: ADD temp[6].x, temp[0].xxxx, const[227].yyyy; 23: FRC temp[16], temp[6].xxxx; 24: ADD temp[6].y, temp[6].xxxx, -temp[16]; 25: ARL addr[0].x, temp[6].yyyy; 26: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 27: ADD temp[8], temp[8], temp[5]; 28: MOV temp[4], temp[8]; 29: ADD temp[2].x, temp[0].xxxx, const[227].zzzz; 30: FRC temp[17], temp[2].xxxx; 31: ADD temp[2].y, temp[2].xxxx, -temp[17]; 32: ARL addr[0].x, temp[2].yyyy; 33: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 34: ADD temp[9], temp[9], temp[6]; 35: MOV temp[5], temp[9]; 36: ADD temp[10].w, temp[10].wwww, const[227].yyyy; 37: ENDIF; 38: ENDLOOP; 39: MOV temp[0].xyz, temp[7]; 40: MOV temp[1].xyz, temp[8]; 41: MOV temp[11].xyz, temp[9]; 42: MOV temp[2].xyz, temp[7]; 43: MOV temp[12].xyz, temp[8]; 44: MOV temp[13].xyz, temp[9]; 45: MOV temp[4], temp[2]; 46: MOV temp[5], temp[12]; 47: MOV temp[6], temp[13]; 48: MOV temp[3].y, temp[7].wwww; 49: MOV temp[3].z, temp[8].wwww; 50: MOV temp[12].x, temp[3].yyyy; 51: MOV temp[12].y, temp[3].zzzw; 52: MOV temp[12].z, temp[9].wwww; 53: MOV temp[2].xyz, temp[12]; 54: MOV temp[0].xyz, input[0]; 55: MUL temp[1].xyz, temp[5], input[0].yyyw; 56: MAD temp[11].xyz, temp[4], temp[0].xxxw, temp[1]; 57: MAD temp[13].xyz, temp[13], temp[0].zzzw, temp[11]; 58: ADD temp[12].xyz, temp[13], temp[12]; 59: MOV temp[7].xyz, temp[12]; 60: MUL temp[0].xyz, temp[5], input[1].yyyw; 61: MAD temp[1].xyz, temp[4], input[1].xxxw, temp[0]; 62: MAD temp[13].xyz, temp[6], input[1].zzzw, temp[1]; 63: MOV temp[12].xyz, temp[13]; 64: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 65: RSQ temp[3].y, temp[3].yyyy; 66: MUL temp[10].xyz, temp[13], temp[3].yyyy; 67: MUL temp[0].xyz, temp[5], input[5].yyyw; 68: MAD temp[1].xyz, temp[4], input[5].xxxw, temp[0]; 69: MAD temp[13].xyz, temp[6], input[5].zzzw, temp[1]; 70: MOV temp[12].xyz, temp[13]; 71: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 72: RSQ temp[3].y, temp[3].yyyy; 73: MUL temp[0], const[229], temp[7].yyyy; 74: MAD temp[1], const[228], temp[7].xxxx, temp[0]; 75: MAD temp[0], const[230], temp[7].zzzz, temp[1]; 76: MOV temp[18], const[227].yyyy; 77: MAD temp[13], const[231], temp[18], temp[0]; 78: MOV temp[12].xyz, temp[13]; 79: MUL temp[1], const[233], temp[7].yyyy; 80: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 81: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 82: MOV temp[19], const[227].yyyy; 83: MAD temp[0], const[235], temp[19], temp[1]; 84: MOV temp[14], temp[0]; 85: MOV output[1], input[2]; 86: MOV output[2], const[0]; 87: MOV temp[0].xyz, const[1]; 88: MUL temp[4].xyz, const[237], temp[10].yyyw; 89: MAD temp[5].xyz, const[236], temp[10].xxxw, temp[4]; 90: MAD temp[4].xyz, const[238], temp[10].zzzw, temp[5]; 91: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 92: RSQ temp[3].y, temp[3].yyyy; 93: MUL temp[11].xyz, temp[4], temp[3].yyyy; 94: MOV temp[1].xyz, temp[11]; 95: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 96: MAX temp[3].y, temp[3].zzzz, const[226].xxxx; 97: MUL output[3].xyz, const[3], temp[3].yyyy; 98: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 99: RSQ temp[2].w, temp[12].wwww; 100: MUL temp[3].z, temp[12].wwww, temp[2].wwww; 101: MOV output[4].z, temp[3].zyzw; 102: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 103: RSQ temp[12].w, temp[0].wwww; 104: MUL temp[2].w, temp[0].wwww, temp[12].wwww; 105: MOV temp[12].w, -temp[2].wwww; 106: MUL temp[0].w, -temp[2].wwww, const[8].xxxx; 107: EX2 temp[12].w, temp[0].wwww; 108: ADD temp[0].w, const[227].yyyy, -temp[12].wwww; 109: MOV output[4].w, temp[0].wyzw; 110: MOV output[0], temp[14]; 111: MOV output[5], temp[14]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[4], const[226].yxyy; 5: MOV temp[5], const[226].yyxy; 6: MOV temp[6], const[226].yyyx; 7: MOV temp[7], const[226].xyyy; 8: MOV temp[8], const[226].yxyy; 9: MOV temp[9], const[226].yyxy; 10: MOV temp[10].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[11].w, temp[10].___w, const[227].___x; 13: IF temp[11].w___; 14: ADD temp[5].x, temp[0].x___, const[226].x___; 15: FRC temp[15].y, temp[5]._x__; 16: ADD temp[5].y, temp[5]._x__, -temp[15]._y__; 17: ARL addr[0].x, temp[5].y___; 18: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[7], temp[7], temp[4]; 20: ADD temp[6].x, temp[0].x___, const[227].y___; 21: FRC temp[16].y, temp[6]._x__; 22: ADD temp[6].y, temp[6]._x__, -temp[16]._y__; 23: ARL addr[0].x, temp[6].y___; 24: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[8], temp[8], temp[5]; 26: MOV temp[4], temp[8]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[17].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[17]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[6], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[9], temp[9], temp[6]; 33: MOV temp[5], temp[9]; 34: ADD temp[10].w, temp[10].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[7].xyz_; 38: MOV temp[12].xyz, temp[8].xyz_; 39: MOV temp[13].xyz, temp[9].xyz_; 40: MOV temp[4].xyz, temp[2].xyz_; 41: MOV temp[5].xyz, temp[12].xyz_; 42: MOV temp[6].xyz, temp[13].xyz_; 43: MOV temp[3].y, temp[7]._w__; 44: MOV temp[3].z, temp[8].__w_; 45: MOV temp[12].x, temp[3].y___; 46: MOV temp[12].y, temp[3]._z__; 47: MOV temp[12].z, temp[9].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[5].xyz_, input[0].yyy_; 50: MAD temp[11].xyz, temp[4].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[13].xyz, temp[13].xyz_, temp[0].zzz_, temp[11].xyz_; 52: ADD temp[12].xyz, temp[13].xyz_, temp[12].xyz_; 53: MOV temp[7].xyz, temp[12].xyz_; 54: MUL temp[0].xyz, temp[5].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[4].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[13].xyz, temp[6].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[3].y, temp[13].xyz0, temp[13].xyz0; 58: RSQ temp[3].y, temp[3].y___; 59: MUL temp[10].xyz, temp[13].xyz_, temp[3].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[7].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[7].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[7].zzz_, temp[1].xyz_; 63: MOV temp[18].xyz, const[227].yyy_; 64: MAD temp[13].xyz, const[231].xyz_, temp[18].xyz_, temp[0].xyz_; 65: MOV temp[12].xyz, temp[13].xyz_; 66: MUL temp[1], const[233], temp[7].yyyy; 67: MAD temp[11], const[232], temp[7].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[7].zzzz, temp[11]; 69: MOV temp[19], const[227].yyyy; 70: MAD temp[0], const[235], temp[19], temp[1]; 71: MOV temp[14], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[4].xyz, const[237].xyz_, temp[10].yyy_; 75: MAD temp[5].xyz, const[236].xyz_, temp[10].xxx_, temp[4].xyz_; 76: MAD temp[4].xyz, const[238].xyz_, temp[10].zzz_, temp[5].xyz_; 77: DP4 temp[3].y, temp[4].xyz0, temp[4].xyz0; 78: RSQ temp[3].y, temp[3].y___; 79: MUL temp[11].xyz, temp[4].xyz_, temp[3].yyy_; 80: DP4 temp[3].z, temp[11].xyz0, const[1].xyz0; 81: MAX temp[3].y, temp[3]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[3].yyy_; 83: DP4 temp[12].w, temp[13].xyz0, temp[13].xyz0; 84: RSQ temp[2].w, temp[12].w___; 85: MUL temp[3].z, temp[12].__w_, temp[2].__w_; 86: MOV output[4].z, temp[3].__z_; 87: DP4 temp[0].w, temp[12].xyz0, temp[12].xyz0; 88: RSQ temp[12].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[12].___w; 90: MUL temp[0].w, -temp[2].___w, const[8].___x; 91: EX2 temp[12].w, temp[0].w___; 92: ADD temp[0].w, const[227].___y, -temp[12].___w; 93: MOV output[4].w, temp[0].___w; 94: MOV output[0], temp[14]; 95: MOV output[5], temp[14]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, const[226].xy__; 1: MOV temp[0].x, input[3].x___; 2: MOV temp[1].x, input[4].x___; 3: MOV temp[2].xy, const[226].xy__; 4: MOV temp[3], const[226].yxyy; 5: MOV temp[4], const[226].yyxy; 6: MOV temp[5], const[226].yyyx; 7: MOV temp[6], const[226].xyyy; 8: MOV temp[7], const[226].yxyy; 9: MOV temp[8], const[226].yyxy; 10: MOV temp[9].w, const[226].___x; 11: BGNLOOP; 12: SLT temp[10].w, temp[9].___w, const[227].___x; 13: IF temp[10].w___; 14: ADD temp[4].x, temp[0].x___, const[226].x___; 15: FRC temp[11].y, temp[4]._x__; 16: ADD temp[4].y, temp[4]._x__, -temp[11]._y__; 17: ARL addr[0].x, temp[4].y___; 18: MUL temp[3], const[10 + addr[0]], temp[1].xxxx; 19: ADD temp[6], temp[6], temp[3]; 20: ADD temp[5].x, temp[0].x___, const[227].y___; 21: FRC temp[12].y, temp[5]._x__; 22: ADD temp[5].y, temp[5]._x__, -temp[12]._y__; 23: ARL addr[0].x, temp[5].y___; 24: MUL temp[4], const[10 + addr[0]], temp[1].xxxx; 25: ADD temp[7], temp[7], temp[4]; 26: MOV temp[3], temp[7]; 27: ADD temp[2].x, temp[0].x___, const[227].z___; 28: FRC temp[13].y, temp[2]._x__; 29: ADD temp[2].y, temp[2]._x__, -temp[13]._y__; 30: ARL addr[0].x, temp[2].y___; 31: MUL temp[5], const[10 + addr[0]], temp[1].xxxx; 32: ADD temp[8], temp[8], temp[5]; 33: MOV temp[4], temp[8]; 34: ADD temp[9].w, temp[9].___w, const[227].___y; 35: ENDIF; 36: ENDLOOP; 37: MOV temp[2].xyz, temp[6].xyz_; 38: MOV temp[14].xyz, temp[7].xyz_; 39: MOV temp[15].xyz, temp[8].xyz_; 40: MOV temp[3].xyz, temp[2].xyz_; 41: MOV temp[4].xyz, temp[14].xyz_; 42: MOV temp[5].xyz, temp[15].xyz_; 43: MOV temp[16].y, temp[6]._w__; 44: MOV temp[16].z, temp[7].__w_; 45: MOV temp[14].x, temp[16].y___; 46: MOV temp[14].y, temp[16]._z__; 47: MOV temp[14].z, temp[8].__w_; 48: MOV temp[0].xz, input[0].x_z_; 49: MUL temp[1].xyz, temp[4].xyz_, input[0].yyy_; 50: MAD temp[10].xyz, temp[3].xyz_, temp[0].xxx_, temp[1].xyz_; 51: MAD temp[15].xyz, temp[15].xyz_, temp[0].zzz_, temp[10].xyz_; 52: ADD temp[14].xyz, temp[15].xyz_, temp[14].xyz_; 53: MOV temp[6].xyz, temp[14].xyz_; 54: MUL temp[0].xyz, temp[4].xyz_, input[1].yyy_; 55: MAD temp[1].xyz, temp[3].xyz_, input[1].xxx_, temp[0].xyz_; 56: MAD temp[15].xyz, temp[5].xyz_, input[1].zzz_, temp[1].xyz_; 57: DP4 temp[16].y, temp[15].xyz0, temp[15].xyz0; 58: RSQ temp[16].y, temp[16].y___; 59: MUL temp[9].xyz, temp[15].xyz_, temp[16].yyy_; 60: MUL temp[0].xyz, const[229].xyz_, temp[6].yyy_; 61: MAD temp[1].xyz, const[228].xyz_, temp[6].xxx_, temp[0].xyz_; 62: MAD temp[0].xyz, const[230].xyz_, temp[6].zzz_, temp[1].xyz_; 63: MOV temp[5].xyz, const[227].yyy_; 64: MAD temp[15].xyz, const[231].xyz_, temp[5].xyz_, temp[0].xyz_; 65: MOV temp[14].xyz, temp[15].xyz_; 66: MUL temp[1], const[233], temp[6].yyyy; 67: MAD temp[10], const[232], temp[6].xxxx, temp[1]; 68: MAD temp[1], const[234], temp[6].zzzz, temp[10]; 69: MOV temp[5], const[227].yyyy; 70: MAD temp[0], const[235], temp[5], temp[1]; 71: MOV temp[1], temp[0]; 72: MOV output[1], input[2]; 73: MOV output[2], const[0]; 74: MUL temp[3].xyz, const[237].xyz_, temp[9].yyy_; 75: MAD temp[4].xyz, const[236].xyz_, temp[9].xxx_, temp[3].xyz_; 76: MAD temp[3].xyz, const[238].xyz_, temp[9].zzz_, temp[4].xyz_; 77: DP4 temp[16].y, temp[3].xyz0, temp[3].xyz0; 78: RSQ temp[16].y, temp[16].y___; 79: MUL temp[10].xyz, temp[3].xyz_, temp[16].yyy_; 80: DP4 temp[16].z, temp[10].xyz0, const[1].xyz0; 81: MAX temp[16].y, temp[16]._z__, const[226]._x__; 82: MUL output[3].xyz, const[3].xyz_, temp[16].yyy_; 83: DP4 temp[14].w, temp[15].xyz0, temp[15].xyz0; 84: RSQ temp[2].w, temp[14].w___; 85: MUL temp[16].z, temp[14].__w_, temp[2].__w_; 86: MOV output[4].z, temp[16].__z_; 87: DP4 temp[0].w, temp[14].xyz0, temp[14].xyz0; 88: RSQ temp[14].w, temp[0].w___; 89: MUL temp[2].w, temp[0].___w, temp[14].___w; 90: MUL temp[0].w, -temp[2].___w, const[8].___x; 91: EX2 temp[14].w, temp[0].w___; 92: ADD temp[0].w, const[227].___y, -temp[14].___w; 93: MOV output[4].w, temp[0].___w; 94: MOV output[0], temp[1]; 95: MOV output[5], temp[1]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 1: op: 0x00100003 dst: 0t op: VE_ADD src0: 0x01ff0061 reg: 3i swiz: X/ U/ U/ U src1: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 src2: 0x01248061 reg: 3i swiz: 0/ 0/ 0/ 0 2: op: 0x00102003 dst: 1t op: VE_ADD src0: 0x01ff0081 reg: 4i swiz: X/ U/ U/ U src1: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 src2: 0x01248081 reg: 4i swiz: 0/ 0/ 0/ 0 3: op: 0x00304003 dst: 2t op: VE_ADD src0: 0x01f91c42 reg: 226c swiz: X/ Y/ U/ U src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 4: op: 0x00f06003 dst: 3t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 5: op: 0x00f08003 dst: 4t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 6: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00093c42 reg: 226c swiz: Y/ Y/ Y/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 7: op: 0x00f0c003 dst: 6t op: VE_ADD src0: 0x00491c42 reg: 226c swiz: X/ Y/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 8: op: 0x00f0e003 dst: 7t op: VE_ADD src0: 0x00483c42 reg: 226c swiz: Y/ X/ Y/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 9: op: 0x00f10003 dst: 8t op: VE_ADD src0: 0x00413c42 reg: 226c swiz: Y/ Y/ X/ Y src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 10: op: 0x00812003 dst: 9t op: VE_ADD src0: 0x003ffc42 reg: 226c swiz: U/ U/ U/ X src1: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 11: op: 0x0081400a dst: 10t op: VE_SET_LESS_THAN src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x003ffc62 reg: 227c swiz: U/ U/ U/ X src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 12: op: 0x008d8058 dst: 108t op: ME_PRED_SET_NEQ src0: 0x00db6140 reg: 10t swiz: W/ W/ W/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 13: op: 0x0c108003 dst: 4t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff1c42 reg: 226c swiz: X/ U/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 14: op: 0x0c216006 dst: 11t op: PRED 1 VE_FRACTION src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 15: op: 0x0c208003 dst: 4t op: PRED 1 VE_ADD src0: 0x01f8e080 reg: 4t swiz: U/ X/ U/ U src1: 0x1ff9e160 reg: 11t swiz: -U/-Y/-U/-U src2: 0x01248160 reg: 11t swiz: 0/ 0/ 0/ 0 16: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2080 reg: 4t swiz: Y/ U/ U/ U src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 17: op: 0x0cf06002 dst: 3t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 18: op: 0x0cf0c003 dst: 6t op: PRED 1 VE_ADD src0: 0x00d100c0 reg: 6t swiz: X/ Y/ Z/ W src1: 0x00d10060 reg: 3t swiz: X/ Y/ Z/ W src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 19: op: 0x0c10a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff3c62 reg: 227c swiz: Y/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 20: op: 0x0c218006 dst: 12t op: PRED 1 VE_FRACTION 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 21: op: 0x0c20a003 dst: 5t op: PRED 1 VE_ADD src0: 0x01f8e0a0 reg: 5t swiz: U/ X/ U/ U src1: 0x1ff9e180 reg: 12t swiz: -U/-Y/-U/-U src2: 0x01248180 reg: 12t swiz: 0/ 0/ 0/ 0 22: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff20a0 reg: 5t swiz: Y/ U/ U/ U src1: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 23: op: 0x0cf08002 dst: 4t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 24: op: 0x0cf0e003 dst: 7t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 25: op: 0x0cf06003 dst: 3t op: PRED 1 VE_ADD src0: 0x00d100e0 reg: 7t swiz: X/ Y/ Z/ W src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 26: op: 0x0c104003 dst: 2t op: PRED 1 VE_ADD src0: 0x01ff0000 reg: 0t swiz: X/ U/ U/ U src1: 0x01ff5c62 reg: 227c swiz: Z/ U/ U/ U src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 27: op: 0x0c21a006 dst: 13t op: PRED 1 VE_FRACTION 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 28: op: 0x0c204003 dst: 2t op: PRED 1 VE_ADD src0: 0x01f8e040 reg: 2t swiz: U/ X/ U/ U src1: 0x1ff9e1a0 reg: 13t swiz: -U/-Y/-U/-U src2: 0x012481a0 reg: 13t swiz: 0/ 0/ 0/ 0 29: op: 0x0c10010d dst: 0a0 op: PRED 1 VE_FLT2FIX_DX src0: 0x01ff2040 reg: 2t swiz: Y/ U/ U/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 30: op: 0x0cf0a002 dst: 5t op: PRED 1 VE_MULTIPLY src0: 0x00d10152 reg: 10c swiz: X/ Y/ Z/ W src1: 0x00000020 reg: 1t swiz: X/ X/ X/ X src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 31: op: 0x0cf10003 dst: 8t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x012480a0 reg: 5t swiz: 0/ 0/ 0/ 0 32: op: 0x0cf08003 dst: 4t op: PRED 1 VE_ADD src0: 0x00d10100 reg: 8t swiz: X/ Y/ Z/ W src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 33: op: 0x0c812003 dst: 9t op: PRED 1 VE_ADD src0: 0x00ffe120 reg: 9t swiz: U/ U/ U/ W src1: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 34: op: 0x008d805b dst: 108t op: ME_PRED_SET_POP src0: 0x00e48d80 reg: 108t swiz: 0/ 0/ 0/ W src1: 0x00000000 reg: 0t swiz: X/ X/ X/ X src2: 0x00000000 reg: 0t swiz: X/ X/ X/ X 35: op: 0x00704003 dst: 2t op: VE_ADD src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 36: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 37: op: 0x0071e003 dst: 15t 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 38: op: 0x00706003 dst: 3t op: VE_ADD src0: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U src1: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 39: op: 0x00708003 dst: 4t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 40: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 41: op: 0x00220003 dst: 16t op: VE_ADD src0: 0x01fbe0c0 reg: 6t swiz: U/ W/ U/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 42: op: 0x00420003 dst: 16t op: VE_ADD src0: 0x01dfe0e0 reg: 7t swiz: U/ U/ W/ U src1: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 src2: 0x012480e0 reg: 7t swiz: 0/ 0/ 0/ 0 43: op: 0x0011c003 dst: 14t op: VE_ADD src0: 0x01ff2200 reg: 16t swiz: Y/ U/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 44: op: 0x0021c003 dst: 14t op: VE_ADD src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 45: op: 0x0041c003 dst: 14t op: VE_ADD src0: 0x01dfe100 reg: 8t swiz: U/ U/ W/ U src1: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 src2: 0x01248100 reg: 8t swiz: 0/ 0/ 0/ 0 46: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70001 reg: 0i swiz: X/ U/ Z/ U src1: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 47: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 48: op: 0x00714080 dst: 10t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 49: op: 0x0071e080 dst: 15t op: PVS_MACRO_OP_2CLK_MADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d10140 reg: 10t swiz: X/ Y/ Z/ U 50: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 51: op: 0x0070c003 dst: 6t op: VE_ADD src0: 0x01d101c0 reg: 14t swiz: X/ Y/ Z/ U src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 52: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 53: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c00021 reg: 1i swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 54: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src1: 0x01d24021 reg: 1i swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 55: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 56: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 57: op: 0x00712002 dst: 9t op: VE_MULTIPLY src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 58: op: 0x00700002 dst: 0t op: VE_MULTIPLY src0: 0x01d11ca2 reg: 229c swiz: X/ Y/ Z/ U src1: 0x01c920c0 reg: 6t swiz: Y/ Y/ Y/ U src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 59: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d11c82 reg: 228c swiz: X/ Y/ Z/ U src1: 0x01c000c0 reg: 6t swiz: X/ X/ X/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 60: op: 0x00700004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x01d11cc2 reg: 230c swiz: X/ Y/ Z/ U src1: 0x01d240c0 reg: 6t swiz: Z/ Z/ Z/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 61: op: 0x0070a003 dst: 5t op: VE_ADD src0: 0x01c93c62 reg: 227c swiz: Y/ Y/ Y/ U src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 62: op: 0x0071e004 dst: 15t op: VE_MULTIPLY_ADD src0: 0x01d11ce2 reg: 231c swiz: X/ Y/ Z/ U src1: 0x01d100a0 reg: 5t swiz: X/ Y/ Z/ U src2: 0x01d10000 reg: 0t swiz: X/ Y/ Z/ U 63: op: 0x0071c003 dst: 14t op: VE_ADD src0: 0x01d101e0 reg: 15t swiz: X/ Y/ Z/ U src1: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 64: op: 0x00f02002 dst: 1t op: VE_MULTIPLY src0: 0x00d11d22 reg: 233c swiz: X/ Y/ Z/ W src1: 0x004920c0 reg: 6t swiz: Y/ Y/ Y/ Y src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 65: op: 0x00f14004 dst: 10t op: VE_MULTIPLY_ADD src0: 0x00d11d02 reg: 232c swiz: X/ Y/ Z/ W src1: 0x000000c0 reg: 6t swiz: X/ X/ X/ X src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 66: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d11d42 reg: 234c swiz: X/ Y/ Z/ W src1: 0x009240c0 reg: 6t swiz: Z/ Z/ Z/ Z src2: 0x00d10140 reg: 10t swiz: X/ Y/ Z/ W 67: op: 0x00f0a003 dst: 5t op: VE_ADD src0: 0x00493c62 reg: 227c swiz: Y/ Y/ Y/ Y src1: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 src2: 0x01249c62 reg: 227c swiz: 0/ 0/ 0/ 0 68: op: 0x00f00004 dst: 0t op: VE_MULTIPLY_ADD src0: 0x00d11d62 reg: 235c swiz: X/ Y/ Z/ W src1: 0x00d100a0 reg: 5t swiz: X/ Y/ Z/ W src2: 0x00d10020 reg: 1t swiz: X/ Y/ Z/ W 69: op: 0x00f02003 dst: 1t 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 70: op: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 71: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 72: op: 0x00706002 dst: 3t op: VE_MULTIPLY src0: 0x01d11da2 reg: 237c swiz: X/ Y/ Z/ U src1: 0x01c92120 reg: 9t swiz: Y/ Y/ Y/ U src2: 0x01248120 reg: 9t swiz: 0/ 0/ 0/ 0 73: op: 0x00708004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x01d11d82 reg: 236c swiz: X/ Y/ Z/ U src1: 0x01c00120 reg: 9t swiz: X/ X/ X/ U src2: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U 74: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d11dc2 reg: 238c swiz: X/ Y/ Z/ U src1: 0x01d24120 reg: 9t swiz: Z/ Z/ Z/ U src2: 0x01d10080 reg: 4t swiz: X/ Y/ Z/ U 75: op: 0x00220001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 76: op: 0x00220048 dst: 16t op: ME_RECIP_SQRT_DX src0: 0x00492200 reg: 16t swiz: Y/ Y/ Y/ Y src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 77: op: 0x00714002 dst: 10t op: VE_MULTIPLY src0: 0x01d10060 reg: 3t swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 78: op: 0x00420001 dst: 16t op: VE_DOT_PRODUCT src0: 0x01110140 reg: 10t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 79: op: 0x00220007 dst: 16t op: VE_MAXIMUM src0: 0x01fae200 reg: 16t swiz: U/ Z/ U/ U src1: 0x01f8fc42 reg: 226c swiz: U/ X/ U/ U src2: 0x01249c42 reg: 226c swiz: 0/ 0/ 0/ 0 80: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01c92200 reg: 16t swiz: Y/ Y/ Y/ U src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 81: op: 0x0081c001 dst: 14t op: VE_DOT_PRODUCT src0: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src1: 0x011101e0 reg: 15t swiz: X/ Y/ Z/ 0 src2: 0x012481e0 reg: 15t swiz: 0/ 0/ 0/ 0 82: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_DX src0: 0x00db61c0 reg: 14t swiz: W/ W/ W/ W src1: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 83: op: 0x00420002 dst: 16t op: VE_MULTIPLY src0: 0x01dfe1c0 reg: 14t swiz: U/ U/ W/ U src1: 0x01dfe040 reg: 2t swiz: U/ U/ W/ U src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 84: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01d7e200 reg: 16t swiz: U/ U/ Z/ U src1: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 src2: 0x01248200 reg: 16t swiz: 0/ 0/ 0/ 0 85: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src1: 0x011101c0 reg: 14t swiz: X/ Y/ Z/ 0 src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 86: op: 0x0081c048 dst: 14t op: ME_RECIP_SQRT_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 87: op: 0x00804002 dst: 2t op: VE_MULTIPLY src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x00ffe1c0 reg: 14t swiz: U/ U/ U/ W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 88: op: 0x00800002 dst: 0t op: VE_MULTIPLY src0: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 89: op: 0x0081c04b dst: 14t op: ME_EXP_BASE2_FULL_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 90: op: 0x00800003 dst: 0t op: VE_ADD src0: 0x007ffc62 reg: 227c swiz: U/ U/ U/ Y src1: 0x1effe1c0 reg: 14t swiz: -U/-U/-U/-W src2: 0x012481c0 reg: 14t swiz: 0/ 0/ 0/ 0 91: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe000 reg: 0t swiz: U/ U/ U/ W src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 92: 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 93: op: 0x00f0a203 dst: 5o 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: 0x00000002 LOOP: uw-> 0x000b0022 lw-> 0xffff000a Warning: CONST[0]: Register never used Warning: CONST[5]: Register never used Warning: CONST[3]: Register never used Warning: CONST[8]: Register never used Warning: CONST[6]: Register never used Warning: CONST[4]: Register never used Warning: CONST[2]: Register never used Warning: CONST[9]: Register never used 0 errors, 8 warnings Warning: CONST[9]: Register never used Warning: CONST[5]: Register never used Warning: CONST[22]: Register never used Warning: CONST[6]: Register never used Warning: CONST[2]: Register never used Warning: CONST[7]: Register never used Warning: CONST[4]: Register never used 0 errors, 7 warnings r300: Initial vertex program VERT DCL IN[0] DCL IN[1] DCL IN[2] DCL OUT[0], POSITION DCL OUT[1], GENERIC[0] DCL OUT[2], GENERIC[10] DCL OUT[3], GENERIC[11] DCL OUT[4], GENERIC[12] DCL CONST[0..9] DCL CONST[11..22] DCL TEMP[0..6] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: MOV OUT[4], IMM[0].xxxx 1: MOV TEMP[0].xz, IN[1] 2: MUL TEMP[1], CONST[12], IN[0].yyyy 3: MAD TEMP[2], CONST[11], IN[0].xxxx, TEMP[1] 4: MAD TEMP[1], CONST[13], IN[0].zzzz, TEMP[2] 5: MAD TEMP[3].xyz, CONST[14], IN[0].wwww, TEMP[1] 6: MUL TEMP[2], CONST[16], IN[0].yyyy 7: MAD TEMP[4], CONST[15], IN[0].xxxx, TEMP[2] 8: MAD TEMP[2], CONST[17], IN[0].zzzz, TEMP[4] 9: MAD TEMP[1], CONST[18], IN[0].wwww, TEMP[2] 10: MOV OUT[0], TEMP[1] 11: MOV OUT[1], IN[2] 12: MOV OUT[2], CONST[0] 13: MOV TEMP[1].xyz, CONST[1] 14: MUL TEMP[5].xyz, CONST[20], IN[1].yyyw 15: MAD TEMP[6].xyz, CONST[19], TEMP[0].xxxw, TEMP[5] 16: MAD TEMP[5].xyz, CONST[21], TEMP[0].zzzw, TEMP[6] 17: DP3 TEMP[0].w, TEMP[5], TEMP[5] 18: RSQ TEMP[0].w, TEMP[0].wwww 19: MUL TEMP[4].xyz, TEMP[5], TEMP[0].wwww 20: MOV TEMP[2].xyz, TEMP[4] 21: DP3 TEMP[5].w, TEMP[4], CONST[1] 22: MAX TEMP[0].w, TEMP[5].wwww, IMM[0].xxxx 23: MUL OUT[3].xyz, CONST[3], TEMP[0].wwww 24: DP3 TEMP[2].w, TEMP[3], TEMP[3] 25: RSQ TEMP[1].w, TEMP[2].wwww 26: MUL TEMP[5].w, TEMP[2].wwww, TEMP[1].wwww 27: MOV OUT[4].z, TEMP[5].wyww 28: DP3 TEMP[4].w, TEMP[3], TEMP[3] 29: RSQ TEMP[2].w, TEMP[4].wwww 30: MUL TEMP[1].w, TEMP[4].wwww, TEMP[2].wwww 31: MOV TEMP[2].w, -TEMP[1].wwww 32: MUL TEMP[4].w, -TEMP[1].wwww, CONST[8].xxxx 33: EX2 TEMP[2].w, TEMP[4].wwww 34: SUB TEMP[4].w, IMM[0].yyyy, TEMP[2].wwww 35: MOV OUT[4].w, TEMP[4].wyzw 36: END Vertex Program: before compilation # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after emulate loops # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP3 temp[0].w, temp[5], temp[5]; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP3 temp[5].w, temp[4], const[1]; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP3 temp[2].w, temp[3], temp[3]; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP3 temp[4].w, temp[3], temp[3]; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: SUB temp[4].w, temp[0].1111, temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after native rewrite # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after source conflict resolve # Radeon Compiler Program 0: MOV output[4], temp[0].0000; 1: MOV temp[0].xz, input[1]; 2: MUL temp[1], const[12], input[0].yyyy; 3: MAD temp[2], const[11], input[0].xxxx, temp[1]; 4: MAD temp[1], const[13], input[0].zzzz, temp[2]; 5: MAD temp[3].xyz, const[14], input[0].wwww, temp[1]; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MOV temp[1].xyz, const[1]; 14: MUL temp[5].xyz, const[20], input[1].yyyw; 15: MAD temp[6].xyz, const[19], temp[0].xxxw, temp[5]; 16: MAD temp[5].xyz, const[21], temp[0].zzzw, temp[6]; 17: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 18: RSQ temp[0].w, temp[0].wwww; 19: MUL temp[4].xyz, temp[5], temp[0].wwww; 20: MOV temp[2].xyz, temp[4]; 21: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 22: MAX temp[0].w, temp[5].wwww, temp[0].0000; 23: MUL output[3].xyz, const[3], temp[0].wwww; 24: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 25: RSQ temp[1].w, temp[2].wwww; 26: MUL temp[5].w, temp[2].wwww, temp[1].wwww; 27: MOV output[4].z, temp[5].wyww; 28: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 29: RSQ temp[2].w, temp[4].wwww; 30: MUL temp[1].w, temp[4].wwww, temp[2].wwww; 31: MOV temp[2].w, -temp[1].wwww; 32: MUL temp[4].w, -temp[1].wwww, const[8].xxxx; 33: EX2 temp[2].w, temp[4].wwww; 34: ADD temp[4].w, temp[0].1111, -temp[2].wwww; 35: MOV output[4].w, temp[4].wyzw; 36: MOV output[0], temp[7]; 37: MOV output[5], temp[7]; Vertex Program: after deadcode # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[7], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[5].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[6].xyz, const[19].xyz_, temp[0].xxx_, temp[5].xyz_; 15: MAD temp[5].xyz, const[21].xyz_, temp[0].zzz_, temp[6].xyz_; 16: DP4 temp[0].w, temp[5].xyz0, temp[5].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[5].xyz_, temp[0].www_; 19: DP4 temp[5].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[5].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[5].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[5].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[7]; 34: MOV output[5], temp[7]; Vertex Program: after dataflow # Radeon Compiler Program 0: MOV output[4].xy, temp[0].00__; 1: MOV temp[0].xz, input[1].x_z_; 2: MUL temp[1].xyz, const[12].xyz_, input[0].yyy_; 3: MAD temp[2].xyz, const[11].xyz_, input[0].xxx_, temp[1].xyz_; 4: MAD temp[1].xyz, const[13].xyz_, input[0].zzz_, temp[2].xyz_; 5: MAD temp[3].xyz, const[14].xyz_, input[0].www_, temp[1].xyz_; 6: MUL temp[2], const[16], input[0].yyyy; 7: MAD temp[4], const[15], input[0].xxxx, temp[2]; 8: MAD temp[2], const[17], input[0].zzzz, temp[4]; 9: MAD temp[1], const[18], input[0].wwww, temp[2]; 10: MOV temp[5], temp[1]; 11: MOV output[1], input[2]; 12: MOV output[2], const[0]; 13: MUL temp[6].xyz, const[20].xyz_, input[1].yyy_; 14: MAD temp[7].xyz, const[19].xyz_, temp[0].xxx_, temp[6].xyz_; 15: MAD temp[6].xyz, const[21].xyz_, temp[0].zzz_, temp[7].xyz_; 16: DP4 temp[0].w, temp[6].xyz0, temp[6].xyz0; 17: RSQ temp[0].w, temp[0].w___; 18: MUL temp[4].xyz, temp[6].xyz_, temp[0].www_; 19: DP4 temp[6].w, temp[4].xyz0, const[1].xyz0; 20: MAX temp[0].w, temp[6].___w, temp[0].___0; 21: MUL output[3].xyz, const[3].xyz_, temp[0].www_; 22: DP4 temp[2].w, temp[3].xyz0, temp[3].xyz0; 23: RSQ temp[1].w, temp[2].w___; 24: MUL temp[6].w, temp[2].___w, temp[1].___w; 25: MOV output[4].z, temp[6].__w_; 26: DP4 temp[4].w, temp[3].xyz0, temp[3].xyz0; 27: RSQ temp[2].w, temp[4].w___; 28: MUL temp[1].w, temp[4].___w, temp[2].___w; 29: MUL temp[4].w, -temp[1].___w, const[8].___x; 30: EX2 temp[2].w, temp[4].w___; 31: ADD temp[4].w, temp[0].___1, -temp[2].___w; 32: MOV output[4].w, temp[4].___w; 33: MOV output[0], temp[5]; 34: MOV output[5], temp[5]; Final vertex program code: 0: op: 0x00308203 dst: 4o op: VE_ADD src0: 0x01fc8000 reg: 0t swiz: 0/ 0/ U/ U src1: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 1: op: 0x00500003 dst: 0t op: VE_ADD src0: 0x01d70021 reg: 1i swiz: X/ U/ Z/ U src1: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 2: op: 0x00702002 dst: 1t op: VE_MULTIPLY src0: 0x01d10182 reg: 12c swiz: X/ Y/ Z/ U src1: 0x01c92001 reg: 0i swiz: Y/ Y/ Y/ U src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 3: op: 0x00704004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x01d10162 reg: 11c swiz: X/ Y/ Z/ U src1: 0x01c00001 reg: 0i swiz: X/ X/ X/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 4: op: 0x00702004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x01d101a2 reg: 13c swiz: X/ Y/ Z/ U src1: 0x01d24001 reg: 0i swiz: Z/ Z/ Z/ U src2: 0x01d10040 reg: 2t swiz: X/ Y/ Z/ U 5: op: 0x00706004 dst: 3t op: VE_MULTIPLY_ADD src0: 0x01d101c2 reg: 14c swiz: X/ Y/ Z/ U src1: 0x01db6001 reg: 0i swiz: W/ W/ W/ U src2: 0x01d10020 reg: 1t swiz: X/ Y/ Z/ U 6: op: 0x00f04002 dst: 2t op: VE_MULTIPLY src0: 0x00d10202 reg: 16c swiz: X/ Y/ Z/ W src1: 0x00492001 reg: 0i swiz: Y/ Y/ Y/ Y src2: 0x01248001 reg: 0i swiz: 0/ 0/ 0/ 0 7: op: 0x00f08004 dst: 4t op: VE_MULTIPLY_ADD src0: 0x00d101e2 reg: 15c swiz: X/ Y/ Z/ W src1: 0x00000001 reg: 0i swiz: X/ X/ X/ X src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 8: op: 0x00f04004 dst: 2t op: VE_MULTIPLY_ADD src0: 0x00d10222 reg: 17c swiz: X/ Y/ Z/ W src1: 0x00924001 reg: 0i swiz: Z/ Z/ Z/ Z src2: 0x00d10080 reg: 4t swiz: X/ Y/ Z/ W 9: op: 0x00f02004 dst: 1t op: VE_MULTIPLY_ADD src0: 0x00d10242 reg: 18c swiz: X/ Y/ Z/ W src1: 0x00db6001 reg: 0i swiz: W/ W/ W/ W src2: 0x00d10040 reg: 2t swiz: X/ Y/ Z/ W 10: op: 0x00f0a003 dst: 5t 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: 0x00f02203 dst: 1o op: VE_ADD src0: 0x00d10041 reg: 2i swiz: X/ Y/ Z/ W src1: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 src2: 0x01248041 reg: 2i swiz: 0/ 0/ 0/ 0 12: op: 0x00f04203 dst: 2o op: VE_ADD src0: 0x00d10002 reg: 0c swiz: X/ Y/ Z/ W src1: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 src2: 0x01248002 reg: 0c swiz: 0/ 0/ 0/ 0 13: op: 0x0070c002 dst: 6t op: VE_MULTIPLY src0: 0x01d10282 reg: 20c swiz: X/ Y/ Z/ U src1: 0x01c92021 reg: 1i swiz: Y/ Y/ Y/ U src2: 0x01248021 reg: 1i swiz: 0/ 0/ 0/ 0 14: op: 0x0070e004 dst: 7t op: VE_MULTIPLY_ADD src0: 0x01d10262 reg: 19c swiz: X/ Y/ Z/ U src1: 0x01c00000 reg: 0t swiz: X/ X/ X/ U src2: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U 15: op: 0x0070c004 dst: 6t op: VE_MULTIPLY_ADD src0: 0x01d102a2 reg: 21c swiz: X/ Y/ Z/ U src1: 0x01d24000 reg: 0t swiz: Z/ Z/ Z/ U src2: 0x01d100e0 reg: 7t swiz: X/ Y/ Z/ U 16: op: 0x00800001 dst: 0t op: VE_DOT_PRODUCT src0: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src1: 0x011100c0 reg: 6t swiz: X/ Y/ Z/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 17: op: 0x00800048 dst: 0t op: ME_RECIP_SQRT_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 18: op: 0x00708002 dst: 4t op: VE_MULTIPLY src0: 0x01d100c0 reg: 6t swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 19: op: 0x0080c001 dst: 6t op: VE_DOT_PRODUCT src0: 0x01110080 reg: 4t swiz: X/ Y/ Z/ 0 src1: 0x01110022 reg: 1c swiz: X/ Y/ Z/ 0 src2: 0x01248022 reg: 1c swiz: 0/ 0/ 0/ 0 20: op: 0x00800007 dst: 0t op: VE_MAXIMUM src0: 0x00ffe0c0 reg: 6t swiz: U/ U/ U/ W src1: 0x013fe000 reg: 0t swiz: U/ U/ U/ 0 src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 21: op: 0x00706202 dst: 3o op: VE_MULTIPLY src0: 0x01d10062 reg: 3c swiz: X/ Y/ Z/ U src1: 0x01db6000 reg: 0t swiz: W/ W/ W/ U src2: 0x01248000 reg: 0t swiz: 0/ 0/ 0/ 0 22: op: 0x00804001 dst: 2t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 23: op: 0x00802048 dst: 1t op: ME_RECIP_SQRT_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 24: op: 0x0080c002 dst: 6t op: VE_MULTIPLY src0: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src1: 0x00ffe020 reg: 1t swiz: U/ U/ U/ W src2: 0x01248020 reg: 1t swiz: 0/ 0/ 0/ 0 25: op: 0x00408203 dst: 4o op: VE_ADD src0: 0x01dfe0c0 reg: 6t swiz: U/ U/ W/ U src1: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 src2: 0x012480c0 reg: 6t swiz: 0/ 0/ 0/ 0 26: op: 0x00808001 dst: 4t op: VE_DOT_PRODUCT src0: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src1: 0x01110060 reg: 3t swiz: X/ Y/ Z/ 0 src2: 0x01248060 reg: 3t swiz: 0/ 0/ 0/ 0 27: op: 0x00804048 dst: 2t op: ME_RECIP_SQRT_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 28: op: 0x00802002 dst: 1t op: VE_MULTIPLY src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x00ffe040 reg: 2t swiz: U/ U/ U/ W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 29: op: 0x00808002 dst: 4t op: VE_MULTIPLY src0: 0x1effe020 reg: 1t swiz: -U/-U/-U/-W src1: 0x003fe102 reg: 8c swiz: U/ U/ U/ X src2: 0x01248102 reg: 8c swiz: 0/ 0/ 0/ 0 30: op: 0x0080404b dst: 2t op: ME_EXP_BASE2_FULL_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 31: op: 0x00808003 dst: 4t op: VE_ADD src0: 0x017fe000 reg: 0t swiz: U/ U/ U/ 1 src1: 0x1effe040 reg: 2t swiz: -U/-U/-U/-W src2: 0x01248040 reg: 2t swiz: 0/ 0/ 0/ 0 32: op: 0x00808203 dst: 4o op: VE_ADD src0: 0x00ffe080 reg: 4t swiz: U/ U/ U/ W src1: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 src2: 0x01248080 reg: 4t swiz: 0/ 0/ 0/ 0 33: 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 34: op: 0x00f0a203 dst: 5o 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