r300: Initial fragment program Using home directory: /home/jeff/.config/sauerbraten init: sdl init: net init: game init: video: mode init: video: misc init: gl Renderer: Gallium 0.4 on RV530 (X.Org R300 Project) Driver: 2.1 Mesa 7.10-devel Rendering using the OpenGL assembly/GLSL shader path. FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program init: console FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], 2D 1: MUL OUT[0].xyz, TEMP[0], CONST[0] 2: MOV OUT[0].w, CONST[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0].xyz, temp[0], const[0]; 2: MOV output[0].w, const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL output[0].xyz, temp[0].xyz_, const[0].xyz_; 2: MOV output[0].w, const[0].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: src0.xyz = temp[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 2: src0.w = const[0] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 2: src0.xyz = temp[0], src0.w = const[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].xyz, temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[0], src0.w = const[0], src1.xyz = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06c00000: id: 0 op:PROJ, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00040000:Addr0: 0t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000100:Addr0: 0c, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TXP TEMP[0], IN[0], SAMP[0], 2D 1: MUL OUT[0], TEMP[0], CONST[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0], 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL output[0], temp[0], const[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[0].xy_w, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], temp[0].xy_w, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06c00000: id: 0 op:PROJ, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00040000:Addr0: 0t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040000:Addr0: 0t, Addr1: 0c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program init: gl: effects FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: MUL OUT[0], IN[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL output[0], input[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: src0.xyz = input[0], src0.w = input[0], src1.xyz = temp[0], src1.w = temp[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: src0.xyz = input[0], src0.w = input[0], src1.xyz = temp[0], src1.w = temp[0] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], temp[1].xy__, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src1.w, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program init: world init: sound init: cfg init: mainloop FRAG DCL IN[0], COLOR, LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program attempting to connect to 109.73.51.58:10040 connected to server read map packages/base/venice.ogz (0.9 seconds) My own Venice - from GARCiA game mode is instagib team Instagib Team: You spawn with full rifle ammo and die instantly from one shot. There are no items. Frag the enemy team to score points for your team. connected: murdog connected: lucas connected: morgo connected: rapide connected: n00b|cheese connected: Earathon connected: poopsandwitch connected: 1400959 connected: S1rStoop1d connected: zlyons connected: DaBesTwIZARD connected: bozco connected: NOStyle connected: Joseph connected: sniperkilla connected: RrYaAnN Info: RrYaAnN team killed (1) lucas Notice: Team-kill limit is enabled RrYaAnN fragged a teammate (lucas) n00b|cheese fragged RrYaAnN Welcome to vaQ clanserver Info: unnamed connected from United States n00b|cheese fragged murdog rapide fragged NOStyle 1400959 fragged Earathon S1rStoop1d: lolw RrYaAnN fragged morgo Earathon fragged rapide murdog fragged n00b|cheese Joseph fragged murdog rapide fragged sniperkilla S1rStoop1d fragged Joseph FRAG DCL IN[0], COLOR, PERSPECTIVE DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG 0: END Fragment Program: before compilation # Radeon Compiler Program Fragment Program: after 'rewrite depth out' # Radeon Compiler Program Fragment Program: after 'transform KILP' # Radeon Compiler Program Fragment Program: after 'unroll loops' # Radeon Compiler Program Fragment Program: after 'transform TEX' # Radeon Compiler Program Fragment Program: after 'native rewrite' # Radeon Compiler Program Fragment Program: after 'deadcode' # Radeon Compiler Program Fragment Program: after 'dataflow optimize' # Radeon Compiler Program Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program Fragment Program: after 'dead constants' # Radeon Compiler Program Fragment Program: after 'pair translate' # Radeon Compiler Program Fragment Program: after 'pair scheduling' # Radeon Compiler Program Fragment Program: after 'register allocation' # Radeon Compiler Program R500 Fragment Program: -------- 0 0:CMN_INST 0x00000005:OUT TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..2] DCL TEMP[0..3] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: MUL TEMP[0], TEMP[0], CONST[0] 3: MUL_SAT TEMP[2], TEMP[0], TEMP[1] 4: MAD_SAT TEMP[3].x, IN[0].xxxx, CONST[1].xxxx, CONST[1].yyyy 5: LRP OUT[0].xyz, TEMP[3].xxxx, TEMP[2], CONST[2] 6: MOV OUT[0].w, TEMP[2] 7: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: ADD temp[4], temp[2], -const[2]; 6: MAD output[0].xyz, temp[3].xxxx, temp[4], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[2].w, src0.w, src1.w, src0.0 4: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz 6: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 7: src0.w = temp[2] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: TEX temp[1], input[2].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[2].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 6: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: TEX temp[1], temp[1].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = const[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 6: src0.xyz = temp[2], src1.xyz = const[1] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040000:Addr0: 0t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040000:Addr0: 0t, Addr1: 0c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 4 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040800:Addr0: 0t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 5 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10200400:Addr0: 0t, Addr1: 1t, Addr2: 2c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL CONST[2] DCL CONST[4..7] DCL TEMP[0..9] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: MUL_SAT TEMP[1].xyz, TEMP[6], TEMP[0] 26: MAD_SAT TEMP[9].x, IN[0].xxxx, CONST[6].xxxx, CONST[6].yyyy 27: LRP OUT[0].xyz, TEMP[9].xxxx, TEMP[1], CONST[7] 28: MOV OUT[0].w, TEMP[1] 29: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 27: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 28: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 27: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 28: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 27: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 28: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 27: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 28: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 27: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 28: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[10].w, temp[8].wwww; 20: MUL temp[10].w, temp[10].wwww, const[8].zzzz; 21: EX2 temp[8].w, temp[10].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 29: ADD temp[11], temp[1], -const[7]; 30: MAD output[0].xyz, temp[9].xxxx, temp[11], const[7]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -const[8].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -const[8].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[10].w, temp[8].w___; 20: MUL temp[10].w, temp[10].___w, const[8].___z; 21: EX2 temp[8].w, temp[10].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 28: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 29: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 30: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 31: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[10].w, temp[8].w___; 19: MUL temp[10].w, temp[10].___w, const[8].___z; 20: EX2 temp[8].w, temp[10].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 27: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 30: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[10].w, temp[8].w___; 19: MUL temp[10].w, temp[10].___w, const[8].___z; 20: EX2 temp[8].w, temp[10].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 27: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 30: MOV output[0].w, temp[1].___w; CONST[6] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[6].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[6].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[10].w, temp[8].w___; 19: MUL temp[10].w, temp[10].___w, const[6].___z; 20: EX2 temp[8].w, temp[10].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 27: MAD_SAT temp[9].x, input[0].x___, const[4].x___, const[4].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[5].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[5].xyz_; 30: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[6] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[6] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[10].w, src0.w 19: src0.xyz = const[6], src0.w = temp[10] MAD temp[10].w, src0.w, src0.z, src0.0 20: src0.w = temp[10] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 27: src0.xyz = input[0], src1.xyz = const[4] MAD_SAT temp[9].x, src0.x__, src1.x__, src1.y__ 28: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[9], src1.xyz = temp[11], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 30: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[6] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 10: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[4] MAD_SAT temp[9].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: TEX temp[6], temp[5].xy__, 2D[0]; 14: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[7], src1.xyz = const[6] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 16: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 17: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[10].w, src0.w 18: src0.xyz = temp[0], src0.w = temp[10], src1.xyz = temp[2], src2.xyz = const[6] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[10].w, src0.w, src2.z, src0.0 19: src0.xyz = temp[0], src0.w = temp[10], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 20: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[9], src1.xyz = temp[11], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[5].w, src0._, src0._ 5: src0.xyz = temp[1], src0.w = temp[5], src1.xyz = const[6] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[5].w, |src0.w| 6: src0.xyz = temp[2], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[6] MAD temp[5].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[5], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 8: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 9: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = temp[1], src1.w = temp[4], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 10: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = const[4] MAD_SAT temp[5].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 13: TEX temp[2], temp[2].xy__, 2D[0]; 14: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[3], src1.xyz = const[6] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 16: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 17: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 18: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[6] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 19: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = const[3] MAX temp[4].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 20: src0.w = temp[7], src1.w = temp[2] MAD temp[7].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[2], src1.xyz = temp[4] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[0], src1.xyz = const[5] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[5], src1.xyz = temp[0], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe404f401: src: 1 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810051:DP dest:5 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041801:Addr0: 1t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c05b:RSQ dest:5 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001805:Addr0: 5t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 6 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001007:Addr0: 7t, Addr1: 4t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041003:Addr0: 3t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485050:MAD dest:5 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 11 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041803:Addr0: 3t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 14 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10600404:Addr0: 4t, Addr1: 1t, Addr2: 6c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c04:Addr0: 4t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000045:MAX dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 19 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001002:Addr0: 2t, Addr1: 4t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041400:Addr0: 0t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 22 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10500005:Addr0: 5t, Addr1: 0t, Addr2: 5c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..3] DCL TEMP[0..4] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: DPH_SAT TEMP[2].x, -IN[3], IN[3] 3: MAD TEMP[1].xyz, CONST[0], TEMP[2].xxxx, TEMP[1] 4: MUL TEMP[0], TEMP[0], CONST[1] 5: MUL_SAT TEMP[3], TEMP[0], TEMP[1] 6: MAD_SAT TEMP[4].x, IN[0].xxxx, CONST[2].xxxx, CONST[2].yyyy 7: LRP OUT[0].xyz, TEMP[4].xxxx, TEMP[3], CONST[3] 8: MOV OUT[0].w, TEMP[3] 9: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: LRP output[0].xyz, temp[4].xxxx, temp[3], const[3]; 8: MOV output[0].w, temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: LRP output[0].xyz, temp[4].xxxx, temp[3], const[3]; 8: MOV output[0].w, temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: LRP output[0].xyz, temp[4].xxxx, temp[3], const[3]; 8: MOV output[0].w, temp[3]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: LRP output[0].xyz, temp[4].xxxx, temp[3], const[3]; 8: MOV output[0].w, temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: LRP output[0].xyz, temp[4].xxxx, temp[3], const[3]; 8: MOV output[0].w, temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].xxxx, const[2].xxxx, const[2].yyyy; 7: ADD temp[5], temp[3], -const[3]; 8: MAD output[0].xyz, temp[4].xxxx, temp[5], const[3]; 9: MOV output[0].w, temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].x___, const[2].x___, const[2].y___; 7: ADD temp[5].xyz, temp[3].xyz_, -const[3].xyz_; 8: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[3].xyz_; 9: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].x___, const[2].x___, const[2].y___; 7: ADD temp[5].xyz, temp[3].xyz_, -const[3].xyz_; 8: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[3].xyz_; 9: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].x___, const[2].x___, const[2].y___; 7: ADD temp[5].xyz, temp[3].xyz_, -const[3].xyz_; 8: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[3].xyz_; 9: MOV output[0].w, temp[3].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: MUL temp[0], temp[0], const[1]; 5: MUL_SAT temp[3], temp[0], temp[1]; 6: MAD_SAT temp[4].x, input[0].x___, const[2].x___, const[2].y___; 7: ADD temp[5].xyz, temp[3].xyz_, -const[3].xyz_; 8: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[3].xyz_; 9: MOV output[0].w, temp[3].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 3: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 6: src0.xyz = input[0], src1.xyz = const[2] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[3], src1.xyz = const[3] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz 8: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 9: src0.w = temp[3] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: TEX temp[1], input[2].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[3] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 8: src0.xyz = input[0], src1.xyz = const[2] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 9: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: TEX temp[1], temp[1].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[2], src0.w = temp[2] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[3] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[3], src1.xyz = const[2] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 9: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040400:Addr0: 0t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040400:Addr0: 0t, Addr1: 1c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100900:Addr0: 0c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 6 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040c00:Addr0: 0t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 7 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040803:Addr0: 3t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10300400:Addr0: 0t, Addr1: 1t, Addr2: 3c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..4] DCL TEMP[0..4] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: DPH_SAT TEMP[2].x, -IN[3], IN[3] 3: MAD TEMP[1].xyz, CONST[0], TEMP[2].xxxx, TEMP[1] 4: DPH_SAT TEMP[2].x, -IN[4], IN[4] 5: MAD TEMP[1].xyz, CONST[1], TEMP[2].xxxx, TEMP[1] 6: MUL TEMP[0], TEMP[0], CONST[2] 7: MUL_SAT TEMP[3], TEMP[0], TEMP[1] 8: MAD_SAT TEMP[4].x, IN[0].xxxx, CONST[3].xxxx, CONST[3].yyyy 9: LRP OUT[0].xyz, TEMP[4].xxxx, TEMP[3], CONST[4] 10: MOV OUT[0].w, TEMP[3] 11: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: LRP output[0].xyz, temp[4].xxxx, temp[3], const[4]; 10: MOV output[0].w, temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: LRP output[0].xyz, temp[4].xxxx, temp[3], const[4]; 10: MOV output[0].w, temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: LRP output[0].xyz, temp[4].xxxx, temp[3], const[4]; 10: MOV output[0].w, temp[3]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: LRP output[0].xyz, temp[4].xxxx, temp[3], const[4]; 10: MOV output[0].w, temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: LRP output[0].xyz, temp[4].xxxx, temp[3], const[4]; 10: MOV output[0].w, temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].xxxx, const[3].xxxx, const[3].yyyy; 9: ADD temp[5], temp[3], -const[4]; 10: MAD output[0].xyz, temp[4].xxxx, temp[5], const[4]; 11: MOV output[0].w, temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].x___, const[3].x___, const[3].y___; 9: ADD temp[5].xyz, temp[3].xyz_, -const[4].xyz_; 10: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[4].xyz_; 11: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].x___, const[3].x___, const[3].y___; 9: ADD temp[5].xyz, temp[3].xyz_, -const[4].xyz_; 10: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[4].xyz_; 11: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].x___, const[3].x___, const[3].y___; 9: ADD temp[5].xyz, temp[3].xyz_, -const[4].xyz_; 10: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[4].xyz_; 11: MOV output[0].w, temp[3].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: MUL temp[0], temp[0], const[2]; 7: MUL_SAT temp[3], temp[0], temp[1]; 8: MAD_SAT temp[4].x, input[0].x___, const[3].x___, const[3].y___; 9: ADD temp[5].xyz, temp[3].xyz_, -const[4].xyz_; 10: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[4].xyz_; 11: MOV output[0].w, temp[3].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 3: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2], src1.w = const[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 8: src0.xyz = input[0], src1.xyz = const[3] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 9: src0.xyz = temp[3], src1.xyz = const[4] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz 10: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 11: src0.w = temp[3] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: TEX temp[1], input[2].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2], src1.w = const[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 7: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[4] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = input[0], src1.xyz = const[3] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 11: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: TEX temp[1], temp[1].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2], src1.w = const[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[2], src0.w = temp[2] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 7: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = temp[4], src1.xyz = const[3] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 11: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040800:Addr0: 0t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040800:Addr0: 0t, Addr1: 2c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100900:Addr0: 0c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100901:Addr0: 1c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 8 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00041000:Addr0: 0t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 9 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040c04:Addr0: 4t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10400400:Addr0: 0t, Addr1: 1t, Addr2: 4c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL IN[5], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..5] DCL TEMP[0..4] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: DPH_SAT TEMP[2].x, -IN[3], IN[3] 3: MAD TEMP[1].xyz, CONST[0], TEMP[2].xxxx, TEMP[1] 4: DPH_SAT TEMP[2].x, -IN[4], IN[4] 5: MAD TEMP[1].xyz, CONST[1], TEMP[2].xxxx, TEMP[1] 6: DPH_SAT TEMP[2].x, -IN[5], IN[5] 7: MAD TEMP[1].xyz, CONST[2], TEMP[2].xxxx, TEMP[1] 8: MUL TEMP[0], TEMP[0], CONST[3] 9: MUL_SAT TEMP[3], TEMP[0], TEMP[1] 10: MAD_SAT TEMP[4].x, IN[0].xxxx, CONST[4].xxxx, CONST[4].yyyy 11: LRP OUT[0].xyz, TEMP[4].xxxx, TEMP[3], CONST[5] 12: MOV OUT[0].w, TEMP[3] 13: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DPH_SAT temp[2].x, -input[5], input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: LRP output[0].xyz, temp[4].xxxx, temp[3], const[5]; 12: MOV output[0].w, temp[3]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DPH_SAT temp[2].x, -input[5], input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: LRP output[0].xyz, temp[4].xxxx, temp[3], const[5]; 12: MOV output[0].w, temp[3]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DPH_SAT temp[2].x, -input[5], input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: LRP output[0].xyz, temp[4].xxxx, temp[3], const[5]; 12: MOV output[0].w, temp[3]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DPH_SAT temp[2].x, -input[5], input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: LRP output[0].xyz, temp[4].xxxx, temp[3], const[5]; 12: MOV output[0].w, temp[3]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DPH_SAT temp[2].x, -input[3], input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DPH_SAT temp[2].x, -input[4], input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DPH_SAT temp[2].x, -input[5], input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: LRP output[0].xyz, temp[4].xxxx, temp[3], const[5]; 12: MOV output[0].w, temp[3]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0], temp[2].xxxx, temp[1]; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1], temp[2].xxxx, temp[1]; 6: DP4_SAT temp[2].x, input[5].-x-y-z1, input[5]; 7: MAD temp[1].xyz, const[2], temp[2].xxxx, temp[1]; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].xxxx, const[4].xxxx, const[4].yyyy; 11: ADD temp[5], temp[3], -const[5]; 12: MAD output[0].xyz, temp[4].xxxx, temp[5], const[5]; 13: MOV output[0].w, temp[3]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: DP4_SAT temp[2].x, input[5].-x-y-z1, input[5]; 7: MAD temp[1].xyz, const[2].xyz_, temp[2].xxx_, temp[1].xyz_; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].x___, const[4].x___, const[4].y___; 11: ADD temp[5].xyz, temp[3].xyz_, -const[5].xyz_; 12: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[5].xyz_; 13: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: DP4_SAT temp[2].x, input[5].-x-y-z1, input[5]; 7: MAD temp[1].xyz, const[2].xyz_, temp[2].xxx_, temp[1].xyz_; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].x___, const[4].x___, const[4].y___; 11: ADD temp[5].xyz, temp[3].xyz_, -const[5].xyz_; 12: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[5].xyz_; 13: MOV output[0].w, temp[3].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: DP4_SAT temp[2].x, input[5].-x-y-z1, input[5]; 7: MAD temp[1].xyz, const[2].xyz_, temp[2].xxx_, temp[1].xyz_; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].x___, const[4].x___, const[4].y___; 11: ADD temp[5].xyz, temp[3].xyz_, -const[5].xyz_; 12: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[5].xyz_; 13: MOV output[0].w, temp[3].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: DP4_SAT temp[2].x, input[3].-x-y-z1, input[3]; 3: MAD temp[1].xyz, const[0].xyz_, temp[2].xxx_, temp[1].xyz_; 4: DP4_SAT temp[2].x, input[4].-x-y-z1, input[4]; 5: MAD temp[1].xyz, const[1].xyz_, temp[2].xxx_, temp[1].xyz_; 6: DP4_SAT temp[2].x, input[5].-x-y-z1, input[5]; 7: MAD temp[1].xyz, const[2].xyz_, temp[2].xxx_, temp[1].xyz_; 8: MUL temp[0], temp[0], const[3]; 9: MUL_SAT temp[3], temp[0], temp[1]; 10: MAD_SAT temp[4].x, input[0].x___, const[4].x___, const[4].y___; 11: ADD temp[5].xyz, temp[3].xyz_, -const[5].xyz_; 12: MAD output[0].xyz, temp[4].xxx_, temp[5].xyz_, const[5].xyz_; 13: MOV output[0].w, temp[3].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[2].xy__, 2D[1]; 2: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 3: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 7: src0.xyz = const[2], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[3], src1.w = const[3] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 10: src0.xyz = input[0], src1.xyz = const[4] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 11: src0.xyz = temp[3], src1.xyz = const[5] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz 12: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 13: src0.w = temp[3] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: TEX temp[1], input[2].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[3], src1.w = const[3] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = input[3], src0.w = input[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 7: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 9: src0.xyz = const[2], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[3].w, src0.w, src1.w, src0.0 11: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[5] MAD temp[5].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 12: src0.xyz = input[0], src1.xyz = const[4] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ 13: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: TEX temp[1], temp[1].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[3], src1.w = const[3] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[2], src0.w = temp[2] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = const[0], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 6: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 7: src0.xyz = const[1], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[4], src0.w = temp[4] DP4_SAT temp[2].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 9: src0.xyz = const[2], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 11: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[5] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 12: src0.xyz = temp[5], src1.xyz = const[4] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 13: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c00:Addr0: 0t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040c00:Addr0: 0t, Addr1: 3c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100900:Addr0: 0c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100901:Addr0: 1c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618021:DP dest:2 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000022:DP4 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100902:Addr0: 2c, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00041400:Addr0: 0t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 11 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00041005:Addr0: 5t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10500400:Addr0: 0t, Addr1: 1t, Addr2: 5c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0] DCL CONST[2] DCL CONST[4..8] DCL TEMP[0..10] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: MUL TEMP[6].xyz, TEMP[6], TEMP[0] 26: TEX TEMP[9], TEMP[5], SAMP[4], 2D 27: MAD_SAT TEMP[1].xyz, TEMP[9], CONST[6], TEMP[6] 28: MAD_SAT TEMP[10].x, IN[0].xxxx, CONST[7].xxxx, CONST[7].yyyy 29: LRP OUT[0].xyz, TEMP[10].xxxx, TEMP[1], CONST[8] 30: MOV OUT[0].w, TEMP[1] 31: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[11].w, temp[8].wwww; 20: MUL temp[11].w, temp[11].wwww, const[9].zzzz; 21: EX2 temp[8].w, temp[11].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[9], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 30: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 31: ADD temp[12], temp[1], -const[8]; 32: MAD output[0].xyz, temp[10].xxxx, temp[12], const[8]; 33: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -const[9].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -const[9].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[11].w, temp[8].w___; 20: MUL temp[11].w, temp[11].___w, const[9].___z; 21: EX2 temp[8].w, temp[11].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 28: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 29: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 30: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 31: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 32: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 33: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 27: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 28: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 27: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 28: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; CONST[7] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[7].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[7].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[7].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 27: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 28: MAD_SAT temp[1].xyz, temp[9].xyz_, const[4].xyz_, temp[6].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[5].x___, const[5].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[6].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[6].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[11].w, src0.w 19: src0.xyz = const[7], src0.w = temp[11] MAD temp[11].w, src0.w, src0.z, src0.0 20: src0.w = temp[11] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 27: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 28: src0.xyz = temp[9], src1.xyz = const[4], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 29: src0.xyz = input[0], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ 30: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 32: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 10: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 13: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 14: TEX temp[6], temp[5].xy__, 2D[0]; 15: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[11].w, src0.w 19: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = temp[2], src2.xyz = const[7] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[11].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[9], src1.xyz = const[4], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 25: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 26: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[5].w, src0._, src0._ 5: src0.xyz = temp[1], src0.w = temp[5], src1.xyz = const[7] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[5].w, |src0.w| 6: src0.xyz = temp[2], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[6] MAD temp[5].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[5], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 8: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 9: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = temp[1], src1.w = temp[4], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 10: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = const[5] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[5].xyz, temp[2].xy__, 2D[4]; 13: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 14: TEX temp[2], temp[2].xy__, 2D[0]; 15: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[3], src1.xyz = const[7] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 18: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 19: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[7] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = const[3] MAX temp[4].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 21: src0.w = temp[7], src1.w = temp[2] MAD temp[7].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[5], src1.xyz = const[4], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 25: src0.xyz = temp[0], src1.xyz = const[6] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 26: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe404f401: src: 1 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810051:DP dest:5 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041c01:Addr0: 1t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c05b:RSQ dest:5 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001805:Addr0: 5t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 6 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001007:Addr0: 7t, Addr1: 4t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041403:Addr0: 3t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485060:MAD dest:6 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06440000: id: 4 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f402: src: 2 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041c03:Addr0: 3t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 15 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10700404:Addr0: 4t, Addr1: 1t, Addr2: 7c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c04:Addr0: 4t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000045:MAX dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 20 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001002:Addr0: 2t, Addr1: 4t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00241005:Addr0: 5t, Addr1: 4c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041800:Addr0: 0t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 24 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10600006:Addr0: 6t, Addr1: 0t, Addr2: 6c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL IN[5], GENERIC[4], PERSPECTIVE DCL IN[6], GENERIC[5], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0] DCL CONST[2] DCL CONST[4..11] DCL TEMP[0..11] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: DPH_SAT TEMP[9].x, -IN[4], IN[4] 26: MAD TEMP[0].xyz, CONST[6], TEMP[9].xxxx, TEMP[0] 27: DPH_SAT TEMP[9].x, -IN[5], IN[5] 28: MAD TEMP[0].xyz, CONST[7], TEMP[9].xxxx, TEMP[0] 29: DPH_SAT TEMP[9].x, -IN[6], IN[6] 30: MAD TEMP[0].xyz, CONST[8], TEMP[9].xxxx, TEMP[0] 31: MUL TEMP[6].xyz, TEMP[6], TEMP[0] 32: TEX TEMP[10], TEMP[5], SAMP[4], 2D 33: MAD_SAT TEMP[1].xyz, TEMP[10], CONST[9], TEMP[6] 34: MAD_SAT TEMP[11].x, IN[0].xxxx, CONST[10].xxxx, CONST[10].yyyy 35: LRP OUT[0].xyz, TEMP[11].xxxx, TEMP[1], CONST[11] 36: MOV OUT[0].w, TEMP[1] 37: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[12].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 35: LRP output[0].xyz, temp[11].xxxx, temp[1], const[11]; 36: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[12].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 35: LRP output[0].xyz, temp[11].xxxx, temp[1], const[11]; 36: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[12].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 35: LRP output[0].xyz, temp[11].xxxx, temp[1], const[11]; 36: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[12].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 35: LRP output[0].xyz, temp[11].xxxx, temp[1], const[11]; 36: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[12].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 35: LRP output[0].xyz, temp[11].xxxx, temp[1], const[11]; 36: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[12].xxxx, -const[12].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[12].xxxx, -const[12].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[12].w, temp[8].wwww; 20: MUL temp[12].w, temp[12].wwww, const[12].zzzz; 21: EX2 temp[8].w, temp[12].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 31: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 32: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 33: MUL temp[6].xyz, temp[6], temp[0]; 34: TEX temp[10], temp[5], 2D[4]; 35: MAD_SAT temp[1].xyz, temp[10], const[9], temp[6]; 36: MAD_SAT temp[11].x, input[0].xxxx, const[10].xxxx, const[10].yyyy; 37: ADD temp[13], temp[1], -const[11]; 38: MAD output[0].xyz, temp[11].xxxx, temp[13], const[11]; 39: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[12].xxx_, -const[12].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[12].xxx_, -const[12].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[12].w, temp[8].w___; 20: MUL temp[12].w, temp[12].___w, const[12].___z; 21: EX2 temp[8].w, temp[12].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 31: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 32: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 33: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 34: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 35: MAD_SAT temp[1].xyz, temp[10].xyz_, const[9].xyz_, temp[6].xyz_; 36: MAD_SAT temp[11].x, input[0].x___, const[10].x___, const[10].y___; 37: ADD temp[13].xyz, temp[1].xyz_, -const[11].xyz_; 38: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[11].xyz_; 39: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[12].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[12].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[12].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 33: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 34: MAD_SAT temp[1].xyz, temp[10].xyz_, const[9].xyz_, temp[6].xyz_; 35: MAD_SAT temp[11].x, input[0].x___, const[10].x___, const[10].y___; 36: ADD temp[13].xyz, temp[1].xyz_, -const[11].xyz_; 37: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[11].xyz_; 38: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[12].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[12].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[12].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 33: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 34: MAD_SAT temp[1].xyz, temp[10].xyz_, const[9].xyz_, temp[6].xyz_; 35: MAD_SAT temp[11].x, input[0].x___, const[10].x___, const[10].y___; 36: ADD temp[13].xyz, temp[1].xyz_, -const[11].xyz_; 37: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[11].xyz_; 38: MOV output[0].w, temp[1].___w; CONST[10] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[10].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[10].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[10].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[4].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[5].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 33: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 34: MAD_SAT temp[1].xyz, temp[10].xyz_, const[7].xyz_, temp[6].xyz_; 35: MAD_SAT temp[11].x, input[0].x___, const[8].x___, const[8].y___; 36: ADD temp[13].xyz, temp[1].xyz_, -const[9].xyz_; 37: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[9].xyz_; 38: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[10] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[10] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[12].w, src0.w 19: src0.xyz = const[10], src0.w = temp[12] MAD temp[12].w, src0.w, src0.z, src0.0 20: src0.w = temp[12] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 27: src0.xyz = const[4], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 28: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 29: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 30: src0.xyz = input[6], src0.w = input[6] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 31: src0.xyz = const[6], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 32: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 33: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 34: src0.xyz = temp[10], src1.xyz = const[7], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 35: src0.xyz = input[0], src1.xyz = const[8] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ 36: src0.xyz = temp[1], src1.xyz = const[9] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 37: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[9] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 38: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[10] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 11: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[8] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 14: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 15: TEX temp[6], temp[5].xy__, 2D[0]; 16: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[7], src1.xyz = const[10] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 19: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[12].w, src0.w 20: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = temp[2], src2.xyz = const[10] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[12].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 22: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[6], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 23: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 24: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = input[6], src0.w = input[6] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 26: src0.xyz = const[6], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 27: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 28: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 29: src0.xyz = temp[10], src1.xyz = const[7], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 30: src0.xyz = temp[1], src1.xyz = const[9] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[9] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[8].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[10] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[8] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[8].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[9].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[0], src1.w = temp[9] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[9].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[9], src1.xyz = temp[1], src1.w = temp[7], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[9].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[6], src0.w = temp[0], src1.xyz = const[8] MAD_SAT temp[8].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[6].xyz, temp[2].xy__, 2D[4]; 14: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 15: TEX temp[2], temp[2].xy__, 2D[0]; 16: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[3], src1.xyz = const[10] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[9], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[9].w, src0._, src0._ 19: src0.xyz = temp[3], src0.w = temp[9], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 20: src0.xyz = temp[7], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[10] MAD temp[7].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[7], src0.w = temp[3], src1.xyz = const[3] MAX temp[7].xyz, src0.xyz, src1.xyz EX2 temp[9].w, src0.w 22: src0.xyz = const[4], src0.w = temp[9], src1.xyz = temp[10], src1.w = temp[2], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[9].w, src0.w, src1.w, src0.0 23: src0.xyz = temp[4], src0.w = temp[4] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 24: src0.xyz = const[5], src1.xyz = temp[10], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[5], src0.w = temp[5] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 26: src0.xyz = const[6], src1.xyz = temp[10], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz 27: src0.xyz = const[2], src0.w = temp[9], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 28: src0.xyz = temp[2], src1.xyz = temp[7] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 29: src0.xyz = temp[6], src1.xyz = const[7], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 30: src0.xyz = temp[0], src1.xyz = const[9] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[8], src1.xyz = temp[0], src2.xyz = const[9] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe407f401: src: 1 R/G/A/A dst: 7 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe408f400: src: 0 R/G/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00042801:Addr0: 1t, Addr1: 10c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002003:Addr0: 3t, Addr1: 8t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d080:MAD dest:8 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 7 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810091:DP dest:9 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002408:Addr0: 8t, Addr1: 9t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d09b:RSQ dest:9 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001c09:Addr0: 9t, Addr1: 7t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490090:MAD dest:9 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00042006:Addr0: 6t, Addr1: 8c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485080:MAD dest:8 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06440000: id: 4 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f402: src: 2 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042803:Addr0: 3t, Addr1: 10c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 16 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c09:Addr0: 9t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810091:DP dest:9 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10a00407:Addr0: 7t, Addr1: 1t, Addr2: 10c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c07:Addr0: 7t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c098:EX2 dest:9 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000075:MAX dest:7 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00702904:Addr0: 4c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000809:Addr0: 9t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c090:MAD dest:9 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 21 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00702905:Addr0: 5c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 24 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00702906:Addr0: 6c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001c02:Addr0: 2t, Addr1: 7t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 27 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00241c06:Addr0: 6t, Addr1: 7c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 28 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042400:Addr0: 0t, Addr1: 9c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 29 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10900008:Addr0: 8t, Addr1: 0t, Addr2: 9c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL IN[5], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0] DCL CONST[2] DCL CONST[4..10] DCL TEMP[0..11] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: DPH_SAT TEMP[9].x, -IN[4], IN[4] 26: MAD TEMP[0].xyz, CONST[6], TEMP[9].xxxx, TEMP[0] 27: DPH_SAT TEMP[9].x, -IN[5], IN[5] 28: MAD TEMP[0].xyz, CONST[7], TEMP[9].xxxx, TEMP[0] 29: MUL TEMP[6].xyz, TEMP[6], TEMP[0] 30: TEX TEMP[10], TEMP[5], SAMP[4], 2D 31: MAD_SAT TEMP[1].xyz, TEMP[10], CONST[8], TEMP[6] 32: MAD_SAT TEMP[11].x, IN[0].xxxx, CONST[9].xxxx, CONST[9].yyyy 33: LRP OUT[0].xyz, TEMP[11].xxxx, TEMP[1], CONST[10] 34: MOV OUT[0].w, TEMP[1] 35: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[11].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[11].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[11].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[11].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[11].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[12].w, temp[8].wwww; 20: MUL temp[12].w, temp[12].wwww, const[11].zzzz; 21: EX2 temp[8].w, temp[12].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 31: MUL temp[6].xyz, temp[6], temp[0]; 32: TEX temp[10], temp[5], 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10], const[8], temp[6]; 34: MAD_SAT temp[11].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 35: ADD temp[13], temp[1], -const[10]; 36: MAD output[0].xyz, temp[11].xxxx, temp[13], const[10]; 37: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -const[11].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -const[11].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[12].w, temp[8].w___; 20: MUL temp[12].w, temp[12].___w, const[11].___z; 21: EX2 temp[8].w, temp[12].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 31: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 32: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 33: MAD_SAT temp[1].xyz, temp[10].xyz_, const[8].xyz_, temp[6].xyz_; 34: MAD_SAT temp[11].x, input[0].x___, const[9].x___, const[9].y___; 35: ADD temp[13].xyz, temp[1].xyz_, -const[10].xyz_; 36: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[10].xyz_; 37: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[11].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 31: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 32: MAD_SAT temp[1].xyz, temp[10].xyz_, const[8].xyz_, temp[6].xyz_; 33: MAD_SAT temp[11].x, input[0].x___, const[9].x___, const[9].y___; 34: ADD temp[13].xyz, temp[1].xyz_, -const[10].xyz_; 35: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[10].xyz_; 36: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[11].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 31: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 32: MAD_SAT temp[1].xyz, temp[10].xyz_, const[8].xyz_, temp[6].xyz_; 33: MAD_SAT temp[11].x, input[0].x___, const[9].x___, const[9].y___; 34: ADD temp[13].xyz, temp[1].xyz_, -const[10].xyz_; 35: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[10].xyz_; 36: MOV output[0].w, temp[1].___w; CONST[9] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[9].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[4].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[5].xyz_, temp[9].xxx_, temp[0].xyz_; 30: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 31: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 32: MAD_SAT temp[1].xyz, temp[10].xyz_, const[6].xyz_, temp[6].xyz_; 33: MAD_SAT temp[11].x, input[0].x___, const[7].x___, const[7].y___; 34: ADD temp[13].xyz, temp[1].xyz_, -const[8].xyz_; 35: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[8].xyz_; 36: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[9] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[9] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[12].w, src0.w 19: src0.xyz = const[9], src0.w = temp[12] MAD temp[12].w, src0.w, src0.z, src0.0 20: src0.w = temp[12] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 27: src0.xyz = const[4], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 28: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 29: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 30: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 31: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 32: src0.xyz = temp[10], src1.xyz = const[6], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 33: src0.xyz = input[0], src1.xyz = const[7] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ 34: src0.xyz = temp[1], src1.xyz = const[8] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 35: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 36: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[9] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 11: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[7] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 14: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 15: TEX temp[6], temp[5].xy__, 2D[0]; 16: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[7], src1.xyz = const[9] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 19: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[12].w, src0.w 20: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = temp[2], src2.xyz = const[9] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[12].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 22: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[6], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 23: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 24: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 26: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 27: src0.xyz = temp[10], src1.xyz = const[6], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 28: src0.xyz = temp[1], src1.xyz = const[8] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[7].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[9] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[7] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[7].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[0], src1.w = temp[8] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[1], src1.w = temp[6], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[5], src0.w = temp[0], src1.xyz = const[7] MAD_SAT temp[7].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[5].xyz, temp[2].xy__, 2D[4]; 14: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 15: TEX temp[2], temp[2].xy__, 2D[0]; 16: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[3], src1.xyz = const[9] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[8], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 19: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 20: src0.xyz = temp[6], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[9] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[6], src0.w = temp[3], src1.xyz = const[3] MAX temp[6].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 22: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[2], src2.xyz = temp[6] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 23: src0.xyz = temp[4], src0.w = temp[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 24: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[6] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 26: src0.xyz = temp[2], src1.xyz = temp[6] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 27: src0.xyz = temp[5], src1.xyz = const[6], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 28: src0.xyz = temp[0], src1.xyz = const[8] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[7], src1.xyz = temp[0], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f401: src: 1 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe407f400: src: 0 R/G/A/A dst: 7 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000092:DP4 dest:9 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00042401:Addr0: 1t, Addr1: 9c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c03:Addr0: 3t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d070:MAD dest:7 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 7 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810081:DP dest:8 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002007:Addr0: 7t, Addr1: 8t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d08b:RSQ dest:8 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001808:Addr0: 8t, Addr1: 6t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490080:MAD dest:8 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041c05:Addr0: 5t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485070:MAD dest:7 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06440000: id: 4 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f402: src: 2 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042403:Addr0: 3t, Addr1: 9c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 16 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c08:Addr0: 8t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810081:DP dest:8 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000008:Addr0: 8t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10900406:Addr0: 6t, Addr1: 1t, Addr2: 9c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c06:Addr0: 6t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c088:EX2 dest:8 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000065:MAX dest:6 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00602504:Addr0: 4c, Addr1: 9t, Addr2: 6t, srcp:0 2:ALPHA_ADDR 0x00000808:Addr0: 8t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c080:MAD dest:8 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20222060:MAD dest:6 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 21 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000092:DP4 dest:9 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00602505:Addr0: 5c, Addr1: 9t, Addr2: 6t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222060:MAD dest:6 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000008:Addr0: 8t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 24 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001802:Addr0: 2t, Addr1: 6t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00241805:Addr0: 5t, Addr1: 6c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042000:Addr0: 0t, Addr1: 8c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 27 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10800007:Addr0: 7t, Addr1: 0t, Addr2: 8c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL IN[5], GENERIC[4], PERSPECTIVE DCL IN[6], GENERIC[5], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL CONST[2] DCL CONST[4..10] DCL TEMP[0..10] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: DPH_SAT TEMP[9].x, -IN[4], IN[4] 26: MAD TEMP[0].xyz, CONST[6], TEMP[9].xxxx, TEMP[0] 27: DPH_SAT TEMP[9].x, -IN[5], IN[5] 28: MAD TEMP[0].xyz, CONST[7], TEMP[9].xxxx, TEMP[0] 29: DPH_SAT TEMP[9].x, -IN[6], IN[6] 30: MAD TEMP[0].xyz, CONST[8], TEMP[9].xxxx, TEMP[0] 31: MUL_SAT TEMP[1].xyz, TEMP[6], TEMP[0] 32: MAD_SAT TEMP[10].x, IN[0].xxxx, CONST[9].xxxx, CONST[9].yyyy 33: LRP OUT[0].xyz, TEMP[10].xxxx, TEMP[1], CONST[10] 34: MOV OUT[0].w, TEMP[1] 35: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL_SAT temp[1].xyz, temp[6], temp[0]; 32: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[10].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL_SAT temp[1].xyz, temp[6], temp[0]; 32: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[10].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL_SAT temp[1].xyz, temp[6], temp[0]; 32: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[10].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL_SAT temp[1].xyz, temp[6], temp[0]; 32: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[10].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[11].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: DPH_SAT temp[9].x, -input[5], input[5]; 28: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 29: DPH_SAT temp[9].x, -input[6], input[6]; 30: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 31: MUL_SAT temp[1].xyz, temp[6], temp[0]; 32: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 33: LRP output[0].xyz, temp[10].xxxx, temp[1], const[10]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[11].xxxx, -const[11].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[11].xxxx, -const[11].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[11].w, temp[8].wwww; 20: MUL temp[11].w, temp[11].wwww, const[11].zzzz; 21: EX2 temp[8].w, temp[11].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7], temp[9].xxxx, temp[0]; 31: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 32: MAD temp[0].xyz, const[8], temp[9].xxxx, temp[0]; 33: MUL_SAT temp[1].xyz, temp[6], temp[0]; 34: MAD_SAT temp[10].x, input[0].xxxx, const[9].xxxx, const[9].yyyy; 35: ADD temp[12], temp[1], -const[10]; 36: MAD output[0].xyz, temp[10].xxxx, temp[12], const[10]; 37: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -const[11].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -const[11].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[11].w, temp[8].w___; 20: MUL temp[11].w, temp[11].___w, const[11].___z; 21: EX2 temp[8].w, temp[11].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 29: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 30: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 31: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 32: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 33: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 34: MAD_SAT temp[10].x, input[0].x___, const[9].x___, const[9].y___; 35: ADD temp[12].xyz, temp[1].xyz_, -const[10].xyz_; 36: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[10].xyz_; 37: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[11].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 33: MAD_SAT temp[10].x, input[0].x___, const[9].x___, const[9].y___; 34: ADD temp[12].xyz, temp[1].xyz_, -const[10].xyz_; 35: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[10].xyz_; 36: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[11].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[11].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[11].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[7].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[8].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 33: MAD_SAT temp[10].x, input[0].x___, const[9].x___, const[9].y___; 34: ADD temp[12].xyz, temp[1].xyz_, -const[10].xyz_; 35: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[10].xyz_; 36: MOV output[0].w, temp[1].___w; CONST[9] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[4].xyz_, temp[9].xxx_, temp[0].xyz_; 28: DP4_SAT temp[9].x, input[5].-x-y-z1, input[5]; 29: MAD temp[0].xyz, const[5].xyz_, temp[9].xxx_, temp[0].xyz_; 30: DP4_SAT temp[9].x, input[6].-x-y-z1, input[6]; 31: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 32: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 33: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 34: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 35: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 36: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[9] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[9] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[11].w, src0.w 19: src0.xyz = const[9], src0.w = temp[11] MAD temp[11].w, src0.w, src0.z, src0.0 20: src0.w = temp[11] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 27: src0.xyz = const[4], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 28: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 29: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 30: src0.xyz = input[6], src0.w = input[6] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 31: src0.xyz = const[6], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 32: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 33: src0.xyz = input[0], src1.xyz = const[7] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ 34: src0.xyz = temp[1], src1.xyz = const[8] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 35: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 36: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[9] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 11: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[7] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 14: TEX temp[6], temp[5].xy__, 2D[0]; 15: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[7], src1.xyz = const[9] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[11].w, src0.w 19: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = temp[2], src2.xyz = const[9] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[11].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 21: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[6], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = input[5], src0.w = input[5] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 23: src0.xyz = const[5], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 24: src0.xyz = input[6], src0.w = input[6] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 25: src0.xyz = const[6], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 26: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 27: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 28: src0.xyz = temp[1], src1.xyz = const[8] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[8].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[9] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[8] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[8].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[9].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[0], src1.w = temp[9] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[9].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[9], src1.xyz = temp[1], src1.w = temp[7], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[9].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[6], src0.w = temp[0], src1.xyz = const[7] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 14: TEX temp[2], temp[2].xy__, 2D[0]; 15: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[3], src1.xyz = const[9] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[9], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[9].w, src0._, src0._ 18: src0.xyz = temp[3], src0.w = temp[9], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 19: src0.xyz = temp[7], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[9] MAD temp[7].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[7], src0.w = temp[3], src1.xyz = const[3] MAX temp[7].xyz, src0.xyz, src1.xyz EX2 temp[9].w, src0.w 21: src0.xyz = const[4], src0.w = temp[9], src1.xyz = temp[10], src1.w = temp[2], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[9].w, src0.w, src1.w, src0.0 22: src0.xyz = temp[4], src0.w = temp[4] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 23: src0.xyz = const[5], src1.xyz = temp[10], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz 24: src0.xyz = temp[5], src0.w = temp[5] DP4_SAT temp[10].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 25: src0.xyz = const[6], src1.xyz = temp[10], src2.xyz = temp[7] MAD temp[7].xyz, src0.xyz, src1.xxx, src2.xyz 26: src0.xyz = const[2], src0.w = temp[9], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 27: src0.xyz = temp[2], src1.xyz = temp[7] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 28: src0.xyz = temp[0], src1.xyz = const[8] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = const[8] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe407f401: src: 1 R/G/A/A dst: 7 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe408f400: src: 0 R/G/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00042401:Addr0: 1t, Addr1: 9c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002003:Addr0: 3t, Addr1: 8t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d080:MAD dest:8 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 7 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810091:DP dest:9 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002408:Addr0: 8t, Addr1: 9t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d09b:RSQ dest:9 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001c09:Addr0: 9t, Addr1: 7t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490090:MAD dest:9 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041c06:Addr0: 6t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485060:MAD dest:6 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042403:Addr0: 3t, Addr1: 9c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 15 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c09:Addr0: 9t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810091:DP dest:9 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10900407:Addr0: 7t, Addr1: 1t, Addr2: 9c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c07:Addr0: 7t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c098:EX2 dest:9 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000075:MAX dest:7 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00702904:Addr0: 4c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000809:Addr0: 9t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c090:MAD dest:9 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 20 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00702905:Addr0: 5c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x000000a2:DP4 dest:10 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00702906:Addr0: 6c, Addr1: 10t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 24 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001c02:Addr0: 2t, Addr1: 7t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042000:Addr0: 0t, Addr1: 8c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 27 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10800006:Addr0: 6t, Addr1: 0t, Addr2: 8c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0..2] 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: LRP_SAT TEMP[1], IN[0].wwww, TEMP[0], IN[0] 2: MAD_SAT TEMP[2].x, IN[1].xxxx, CONST[0].xxxx, CONST[0].yyyy 3: LRP OUT[0].xyz, TEMP[2].xxxx, TEMP[1], CONST[1] 4: MOV OUT[0].w, TEMP[1] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: LRP_SAT temp[1], input[0].wwww, temp[0], input[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: LRP_SAT temp[1], input[0].wwww, temp[0], input[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: LRP_SAT temp[1], input[0].wwww, temp[0], input[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: LRP_SAT temp[1], input[0].wwww, temp[0], input[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: LRP_SAT temp[1], input[0].wwww, temp[0], input[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: ADD temp[3], temp[0], -input[0]; 2: MAD_SAT temp[1], input[0].wwww, temp[3], input[0]; 3: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 4: ADD temp[4], temp[1], -const[1]; 5: MAD output[0].xyz, temp[2].xxxx, temp[4], const[1]; 6: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: ADD temp[3], temp[0], -input[0]; 2: MAD_SAT temp[1], input[0].wwww, temp[3], input[0]; 3: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 4: ADD temp[4].xyz, temp[1].xyz_, -const[1].xyz_; 5: MAD output[0].xyz, temp[2].xxx_, temp[4].xyz_, const[1].xyz_; 6: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: ADD temp[3], temp[0], -input[0]; 2: MAD_SAT temp[1], input[0].wwww, temp[3], input[0]; 3: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 4: ADD temp[4].xyz, temp[1].xyz_, -const[1].xyz_; 5: MAD output[0].xyz, temp[2].xxx_, temp[4].xyz_, const[1].xyz_; 6: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: ADD temp[3], temp[0], -input[0]; 2: MAD_SAT temp[1], input[0].wwww, temp[3], input[0]; 3: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 4: ADD temp[4].xyz, temp[1].xyz_, -const[1].xyz_; 5: MAD output[0].xyz, temp[2].xxx_, temp[4].xyz_, const[1].xyz_; 6: MOV output[0].w, temp[1].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: ADD temp[3], temp[0], -input[0]; 2: MAD_SAT temp[1], input[0].wwww, temp[3], input[0]; 3: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 4: ADD temp[4].xyz, temp[1].xyz_, -const[1].xyz_; 5: MAD output[0].xyz, temp[2].xxx_, temp[4].xyz_, const[1].xyz_; 6: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[3].w, src0.w, src0.1, -src1.w 2: src0.xyz = temp[3], src0.w = input[0], src1.xyz = input[0], src1.w = temp[3] MAD_SAT temp[1].xyz, src0.www, src0.xyz, src1.xyz MAD_SAT temp[1].w, src0.w, src1.w, src0.w 3: src0.xyz = input[1], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 4: src0.xyz = temp[1], src1.xyz = const[1] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz 5: src0.xyz = temp[2], src1.xyz = temp[4], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 6: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[3].w, src0.w, src0.1, -src1.w 3: src0.xyz = temp[3], src0.w = input[0], src1.xyz = input[0], src1.w = temp[3] MAD_SAT temp[1].xyz, src0.www, src0.xyz, src1.xyz MAD_SAT temp[1].w, src0.w, src1.w, src0.w 4: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[1] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 5: src0.xyz = input[1], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 6: src0.xyz = temp[2], src1.xyz = temp[4], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], temp[1].xy__, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD temp[1].w, src0.w, src0.1, -src1.w 3: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[0], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.www, src0.xyz, src1.xyz MAD_SAT temp[0].w, src0.w, src1.w, src0.w 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[2], src1.xyz = const[0] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 6: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x5aa21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:1 A 1 2 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x18221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 A 0 3 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040400:Addr0: 0t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 4 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10100400:Addr0: 0t, Addr1: 1t, Addr2: 1c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL IN[3], GENERIC[1], PERSPECTIVE DCL IN[4], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[2] DCL CONST[4..5] DCL TEMP[0..8] IMM FLT32 { 128.0000, 0.5000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: MUL TEMP[2].xyz, TEMP[0], CONST[0].zzzz 3: DP3 TEMP[3].w, IN[3], IN[3] 4: RSQ TEMP[3].w, TEMP[3].wwww 5: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 6: DP3 TEMP[4].w, IN[4], IN[4] 7: RSQ TEMP[4].w, TEMP[4].wwww 8: MUL TEMP[4].xyz, TEMP[4].wwww, IN[4] 9: DP3_SAT TEMP[5].x, TEMP[4], TEMP[3] 10: POW TEMP[5].x, TEMP[5].xxxx, IMM[0].xxxx 11: MUL TEMP[5].x, TEMP[5].xxxx, CONST[0].xxxx 12: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[1].xxxx 13: DP3 TEMP[6].x, TEMP[3], CONST[2] 14: ADD TEMP[6].x, TEMP[6].xxxx, IMM[0].yyyy 15: MAX TEMP[6].x, TEMP[6].xxxx, CONST[0].yyyy 16: MAD TEMP[0].xyz, TEMP[6].xxxx, TEMP[0], TEMP[5].xxxx 17: MUL TEMP[0].xyz, TEMP[0], IN[0] 18: LRP_SAT TEMP[7].xyz, TEMP[1].yyyy, TEMP[2], TEMP[0] 19: MUL_SAT TEMP[7].w, TEMP[0].wwww, IN[0].wwww 20: MAD_SAT TEMP[8].x, IN[1].xxxx, CONST[4].xxxx, CONST[4].yyyy 21: LRP OUT[0].xyz, TEMP[8].xxxx, TEMP[7], CONST[5] 22: MOV OUT[0].w, TEMP[7] 23: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, temp[3].wwww; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, temp[4].wwww; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: POW temp[5].x, temp[5].xxxx, const[6].xxxx; 11: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 12: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 13: DP3 temp[6].x, temp[3], const[2]; 14: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 15: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 16: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 17: MUL temp[0].xyz, temp[0], input[0]; 18: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 19: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 20: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 21: LRP output[0].xyz, temp[8].xxxx, temp[7], const[5]; 22: MOV output[0].w, temp[7]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, temp[3].wwww; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, temp[4].wwww; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: POW temp[5].x, temp[5].xxxx, const[6].xxxx; 11: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 12: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 13: DP3 temp[6].x, temp[3], const[2]; 14: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 15: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 16: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 17: MUL temp[0].xyz, temp[0], input[0]; 18: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 19: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 20: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 21: LRP output[0].xyz, temp[8].xxxx, temp[7], const[5]; 22: MOV output[0].w, temp[7]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, temp[3].wwww; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, temp[4].wwww; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: POW temp[5].x, temp[5].xxxx, const[6].xxxx; 11: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 12: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 13: DP3 temp[6].x, temp[3], const[2]; 14: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 15: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 16: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 17: MUL temp[0].xyz, temp[0], input[0]; 18: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 19: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 20: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 21: LRP output[0].xyz, temp[8].xxxx, temp[7], const[5]; 22: MOV output[0].w, temp[7]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, temp[3].wwww; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, temp[4].wwww; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: POW temp[5].x, temp[5].xxxx, const[6].xxxx; 11: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 12: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 13: DP3 temp[6].x, temp[3], const[2]; 14: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 15: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 16: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 17: MUL temp[0].xyz, temp[0], input[0]; 18: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 19: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 20: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 21: LRP output[0].xyz, temp[8].xxxx, temp[7], const[5]; 22: MOV output[0].w, temp[7]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, temp[3].wwww; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, temp[4].wwww; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: POW temp[5].x, temp[5].xxxx, const[6].xxxx; 11: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 12: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 13: DP3 temp[6].x, temp[3], const[2]; 14: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 15: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 16: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 17: MUL temp[0].xyz, temp[0], input[0]; 18: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 19: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 20: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 21: LRP output[0].xyz, temp[8].xxxx, temp[7], const[5]; 22: MOV output[0].w, temp[7]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: DP3 temp[3].w, input[3], input[3]; 4: RSQ temp[3].w, |temp[3].wwww|; 5: MUL temp[3].xyz, temp[3].wwww, input[3]; 6: DP3 temp[4].w, input[4], input[4]; 7: RSQ temp[4].w, |temp[4].wwww|; 8: MUL temp[4].xyz, temp[4].wwww, input[4]; 9: DP3_SAT temp[5].x, temp[4], temp[3]; 10: LG2 temp[9].w, temp[5].xxxx; 11: MUL temp[9].w, temp[9].wwww, const[6].xxxx; 12: EX2 temp[5].x, temp[9].wwww; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], const[2]; 16: ADD temp[6].x, temp[6].xxxx, const[6].yyyy; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: ADD temp[10], temp[2], -temp[0]; 21: MAD_SAT temp[7].xyz, temp[1].yyyy, temp[10], temp[0]; 22: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 23: MAD_SAT temp[8].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 24: ADD temp[11], temp[7], -const[5]; 25: MAD output[0].xyz, temp[8].xxxx, temp[11], const[5]; 26: MOV output[0].w, temp[7]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 7: RSQ temp[4].w, |temp[4].w___|; 8: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 9: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 10: LG2 temp[9].w, temp[5].x___; 11: MUL temp[9].w, temp[9].___w, const[6].___x; 12: EX2 temp[5].x, temp[9].w___; 13: MUL temp[5].x, temp[5].x___, const[0].x___; 14: MUL temp[5].x, temp[5].x___, temp[1].x___; 15: DP3 temp[6].x, temp[3].xyz_, const[2].xyz_; 16: ADD temp[6].x, temp[6].x___, const[6].y___; 17: MAX temp[6].x, temp[6].x___, const[0].y___; 18: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 19: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 20: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 21: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 22: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 23: MAD_SAT temp[8].x, input[1].x___, const[4].x___, const[4].y___; 24: ADD temp[11].xyz, temp[7].xyz_, -const[5].xyz_; 25: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[5].xyz_; 26: MOV output[0].w, temp[7].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 7: RSQ temp[4].w, |temp[4].w___|; 8: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 9: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 10: LG2 temp[9].w, temp[5].x___; 11: MUL temp[9].w, temp[9].___w, const[6].___x; 12: EX2 temp[5].x, temp[9].w___; 13: MUL temp[5].x, temp[5].x___, const[0].x___; 14: MUL temp[5].x, temp[5].x___, temp[1].x___; 15: DP3 temp[6].x, temp[3].xyz_, const[2].xyz_; 16: ADD temp[6].x, temp[6].x___, none.H___; 17: MAX temp[6].x, temp[6].x___, const[0].y___; 18: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 19: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 20: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 21: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 22: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 23: MAD_SAT temp[8].x, input[1].x___, const[4].x___, const[4].y___; 24: ADD temp[11].xyz, temp[7].xyz_, -const[5].xyz_; 25: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[5].xyz_; 26: MOV output[0].w, temp[7].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 7: RSQ temp[4].w, |temp[4].w___|; 8: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 9: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 10: LG2 temp[9].w, temp[5].x___; 11: MUL temp[9].w, temp[9].___w, const[6].___x; 12: EX2 temp[5].x, temp[9].w___; 13: MUL temp[5].x, temp[5].x___, const[0].x___; 14: MUL temp[5].x, temp[5].x___, temp[1].x___; 15: DP3 temp[6].x, temp[3].xyz_, const[2].xyz_; 16: ADD temp[6].x, temp[6].x___, none.H___; 17: MAX temp[6].x, temp[6].x___, const[0].y___; 18: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 19: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 20: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 21: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 22: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 23: MAD_SAT temp[8].x, input[1].x___, const[4].x___, const[4].y___; 24: ADD temp[11].xyz, temp[7].xyz_, -const[5].xyz_; 25: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[5].xyz_; 26: MOV output[0].w, temp[7].___w; CONST[4] = { 128.0000 0.5000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 7: RSQ temp[4].w, |temp[4].w___|; 8: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 9: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 10: LG2 temp[9].w, temp[5].x___; 11: MUL temp[9].w, temp[9].___w, const[4].___x; 12: EX2 temp[5].x, temp[9].w___; 13: MUL temp[5].x, temp[5].x___, const[0].x___; 14: MUL temp[5].x, temp[5].x___, temp[1].x___; 15: DP3 temp[6].x, temp[3].xyz_, const[1].xyz_; 16: ADD temp[6].x, temp[6].x___, none.H___; 17: MAX temp[6].x, temp[6].x___, const[0].y___; 18: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 19: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 20: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 21: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 22: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 23: MAD_SAT temp[8].x, input[1].x___, const[2].x___, const[2].y___; 24: ADD temp[11].xyz, temp[7].xyz_, -const[3].xyz_; 25: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[3].xyz_; 26: MOV output[0].w, temp[7].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 3: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 4: src0.w = temp[3] RSQ temp[3].w, |src0.w| 5: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 6: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 7: src0.w = temp[4] RSQ temp[4].w, |src0.w| 8: src0.xyz = input[4], src0.w = temp[4] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 9: src0.xyz = temp[4], src1.xyz = temp[3] DP3_SAT temp[5].x, src0.xyz, src1.xyz 10: src0.xyz = temp[5] LG2 temp[9].w, src0.x 11: src0.xyz = const[4], src0.w = temp[9] MAD temp[9].w, src0.w, src0.x, src0.0 12: src0.w = temp[9] REPL_ALPHA temp[5].x EX2, src0.w 13: src0.xyz = temp[5], src1.xyz = const[0] MAD temp[5].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[5], src1.xyz = temp[1] MAD temp[5].x, src0.x__, src1.x__, src0.000 15: src0.xyz = temp[3], src1.xyz = const[1] DP3 temp[6].x, src0.xyz, src1.xyz 16: src0.xyz = temp[6] MAD temp[6].x, src0.x__, src0.111, src0.H__ 17: src0.xyz = temp[6], src1.xyz = const[0] MAX temp[6].x, src0.x__, src1.y__ 18: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = temp[5] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 19: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 20: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[10].xyz, src0.xyz, src0.111, -src1.xyz 21: src0.xyz = temp[1], src1.xyz = temp[10], src2.xyz = temp[0] MAD_SAT temp[7].xyz, src0.yyy, src1.xyz, src2.xyz 22: src0.w = temp[0], src1.w = input[0] MAD_SAT temp[7].w, src0.w, src1.w, src0.0 23: src0.xyz = input[1], src1.xyz = const[2] MAD_SAT temp[8].x, src0.x__, src1.x__, src1.y__ 24: src0.xyz = temp[7], src1.xyz = const[3] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 25: src0.xyz = temp[8], src1.xyz = temp[11], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 26: src0.w = temp[7] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: TEX temp[1].xy, input[2].xy__, 2D[1]; 3: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.xyz = temp[0], src0.w = temp[3], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 RSQ temp[4].w, |src1.w| 7: src0.xyz = input[4], src0.w = temp[4], src1.w = temp[0], src2.w = input[0] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[7].w, src1.w, src2.w, src0.0 8: src0.xyz = temp[4], src0.w = temp[7], src1.xyz = temp[3] DP3_SAT temp[5].x, src0.xyz, src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 9: src0.xyz = temp[3], src1.xyz = const[1], src2.xyz = temp[5] DP3 temp[6].x, src0.xyz, src1.xyz LG2 temp[9].w, src2.x 10: src0.xyz = temp[6], src0.w = temp[9], src1.xyz = const[4] MAD temp[6].x, src0.x__, src0.111, src0.H__ MAD temp[9].w, src0.w, src1.x, src0.0 11: src0.w = temp[9] REPL_ALPHA temp[5].x EX2, src0.w 12: src0.xyz = temp[5], src1.xyz = const[0] MAD temp[5].x, src0.x__, src1.x__, src0.000 13: src0.xyz = temp[5], src1.xyz = temp[1] MAD temp[5].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[6], src1.xyz = const[0] MAX temp[6].x, src0.x__, src1.y__ 15: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = temp[5] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 16: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[10].xyz, src0.xyz, src0.111, -src1.xyz 18: src0.xyz = temp[1], src1.xyz = temp[10], src2.xyz = temp[0] MAD_SAT temp[7].xyz, src0.yyy, src1.xyz, src2.xyz 19: src0.xyz = temp[7], src1.xyz = const[3] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 20: src0.xyz = input[1], src1.xyz = const[2] MAD_SAT temp[8].x, src0.x__, src1.x__, src1.y__ 21: src0.xyz = temp[8], src1.xyz = temp[11], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], temp[1].xy__, 2D[0]; 2: TEX temp[1].xy, temp[1].xy__, 2D[1]; 3: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[8].w, src0._, src0._ 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[7].w, src0._, src0._ 5: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.zzz, src0.000 RSQ temp[7].w, |src0.w| 6: src0.xyz = temp[2], src0.w = temp[7], src1.w = temp[8] MAD temp[7].xyz, src0.www, src0.xyz, src0.000 RSQ temp[8].w, |src1.w| 7: src0.xyz = temp[3], src0.w = temp[8], src1.w = temp[5], src2.w = temp[0] MAD temp[8].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[9].w, src1.w, src2.w, src0.0 8: src0.xyz = temp[8], src0.w = temp[9], src1.xyz = temp[7] DP3_SAT temp[2].x, src0.xyz, src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 9: src0.xyz = temp[7], src1.xyz = const[1], src2.xyz = temp[2] DP3 temp[3].x, src0.xyz, src1.xyz LG2 temp[7].w, src2.x 10: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = const[4] MAD temp[3].x, src0.x__, src0.111, src0.H__ MAD temp[7].w, src0.w, src1.x, src0.0 11: src0.w = temp[7] REPL_ALPHA temp[2].x EX2, src0.w 12: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].x, src0.x__, src1.x__, src0.000 13: src0.xyz = temp[2], src1.xyz = temp[1] MAD temp[2].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[3], src1.xyz = const[0] MAX temp[3].x, src0.x__, src1.y__ 15: src0.xyz = temp[3], src1.xyz = temp[5], src2.xyz = temp[2] MAD temp[5].xyz, src0.xxx, src1.xyz, src2.xxx 16: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[6], src1.xyz = temp[5] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 18: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = temp[5] MAD_SAT temp[9].xyz, src0.yyy, src1.xyz, src2.xyz 19: src0.xyz = temp[9], src1.xyz = const[3] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz 20: src0.xyz = temp[4], src1.xyz = const[2] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 21: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f401: src: 1 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00001807:TEX TEX_WAIT wmask: RG omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810081:DP dest:8 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000041:DP3 dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040005:Addr0: 5t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0 4 ALPHA_INST:0x0004c07b:RSQ dest:7 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00002007:Addr0: 7t, Addr1: 8t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0004d08b:RSQ dest:8 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001408:Addr0: 8t, Addr1: 5t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d090:MAD dest:9 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490080:MAD dest:8 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 7 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00001c08:Addr0: 8t, Addr1: 7t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 8 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00240407:Addr0: 7t, Addr1: 1c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00002079:LN2 dest:7 alp_A_src:2 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00041003:Addr0: 3t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0008c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x20494030:MAD dest:3 rgb_C_src:0 H/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c058:EX2 dest:5 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000402:Addr0: 2t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040003:Addr0: 3t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0090a480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 G/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000035:MAX dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00201403:Addr0: 3t, Addr1: 5t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00002050:MAD dest:5 rgb_C_src:2 R/R/R 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001406:Addr0: 6t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 17 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00500001:Addr0: 1t, Addr1: 0t, Addr2: 5t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442124:rgb_A_src:0 G/G/G 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222090:MAD dest:9 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040c09:Addr0: 9t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 19 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040804:Addr0: 4t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10300400:Addr0: 0t, Addr1: 1t, Addr2: 3c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0..2] 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: MUL_SAT TEMP[1], IN[0], TEMP[0] 2: MAD_SAT TEMP[2].x, IN[1].xxxx, CONST[0].xxxx, CONST[0].yyyy 3: LRP OUT[0].xyz, TEMP[2].xxxx, TEMP[1], CONST[1] 4: MOV OUT[0].w, TEMP[1] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].xxxx, const[0].xxxx, const[0].yyyy; 3: ADD temp[3], temp[1], -const[1]; 4: MAD output[0].xyz, temp[2].xxxx, temp[3], const[1]; 5: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MUL_SAT temp[1], input[0], temp[0]; 2: MAD_SAT temp[2].x, input[1].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: src0.xyz = input[0], src0.w = input[0], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: src0.xyz = input[1], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 3: src0.xyz = temp[1], src1.xyz = const[1] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz 4: src0.xyz = temp[2], src1.xyz = temp[3], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 5: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: src0.xyz = input[0], src0.w = input[0], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[1].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[1] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 4: src0.xyz = input[1], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[2], src1.xyz = temp[3], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], temp[1].xy__, 2D[0]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[2], src1.xyz = const[0] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000400:Addr0: 0t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040400:Addr0: 0t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 3 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10100400:Addr0: 0t, Addr1: 1t, Addr2: 1c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL IN[3], GENERIC[1], PERSPECTIVE DCL IN[4], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[3] DCL CONST[0] DCL CONST[3..4] DCL TEMP[0..8] IMM FLT32 { 0.5000, 128.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: MUL TEMP[2].xyz, TEMP[0], CONST[0].zzzz 3: TEX TEMP[3], IN[2], SAMP[3], 2D 4: SUB TEMP[3].xyz, TEMP[3], IMM[0].xxxx 5: DP3 TEMP[3].w, TEMP[3], TEMP[3] 6: RSQ TEMP[3].w, TEMP[3].wwww 7: MUL TEMP[3].xyz, TEMP[3].wwww, TEMP[3] 8: DP3 TEMP[4].w, IN[4], IN[4] 9: RSQ TEMP[4].w, TEMP[4].wwww 10: MUL TEMP[4].xyz, TEMP[4].wwww, IN[4] 11: DP3_SAT TEMP[5].x, TEMP[4], TEMP[3] 12: POW TEMP[5].x, TEMP[5].xxxx, IMM[0].yyyy 13: MUL TEMP[5].x, TEMP[5].xxxx, CONST[0].xxxx 14: MUL TEMP[5].x, TEMP[5].xxxx, TEMP[1].xxxx 15: DP3 TEMP[6].x, TEMP[3], IN[3] 16: ADD TEMP[6].x, TEMP[6].xxxx, IMM[0].xxxx 17: MAX TEMP[6].x, TEMP[6].xxxx, CONST[0].yyyy 18: MAD TEMP[0].xyz, TEMP[6].xxxx, TEMP[0], TEMP[5].xxxx 19: MUL TEMP[0].xyz, TEMP[0], IN[0] 20: LRP_SAT TEMP[7].xyz, TEMP[1].yyyy, TEMP[2], TEMP[0] 21: MUL_SAT TEMP[7].w, TEMP[0].wwww, IN[0].wwww 22: MAD_SAT TEMP[8].x, IN[1].xxxx, CONST[3].xxxx, CONST[3].yyyy 23: LRP OUT[0].xyz, TEMP[8].xxxx, TEMP[7], CONST[4] 24: MOV OUT[0].w, TEMP[7] 25: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, temp[3].wwww; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: POW temp[5].x, temp[5].xxxx, const[5].yyyy; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], input[3]; 16: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 21: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 22: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 23: LRP output[0].xyz, temp[8].xxxx, temp[7], const[4]; 24: MOV output[0].w, temp[7]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, temp[3].wwww; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: POW temp[5].x, temp[5].xxxx, const[5].yyyy; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], input[3]; 16: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 21: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 22: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 23: LRP output[0].xyz, temp[8].xxxx, temp[7], const[4]; 24: MOV output[0].w, temp[7]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, temp[3].wwww; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: POW temp[5].x, temp[5].xxxx, const[5].yyyy; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], input[3]; 16: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 21: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 22: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 23: LRP output[0].xyz, temp[8].xxxx, temp[7], const[4]; 24: MOV output[0].w, temp[7]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, temp[3].wwww; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: POW temp[5].x, temp[5].xxxx, const[5].yyyy; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], input[3]; 16: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 21: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 22: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 23: LRP output[0].xyz, temp[8].xxxx, temp[7], const[4]; 24: MOV output[0].w, temp[7]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, temp[3].wwww; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: POW temp[5].x, temp[5].xxxx, const[5].yyyy; 13: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 14: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 15: DP3 temp[6].x, temp[3], input[3]; 16: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 17: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 18: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 19: MUL temp[0].xyz, temp[0], input[0]; 20: LRP_SAT temp[7].xyz, temp[1].yyyy, temp[2], temp[0]; 21: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 22: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 23: LRP output[0].xyz, temp[8].xxxx, temp[7], const[4]; 24: MOV output[0].w, temp[7]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: ADD temp[3].xyz, temp[3], -const[5].xxxx; 5: DP3 temp[3].w, temp[3], temp[3]; 6: RSQ temp[3].w, |temp[3].wwww|; 7: MUL temp[3].xyz, temp[3].wwww, temp[3]; 8: DP3 temp[4].w, input[4], input[4]; 9: RSQ temp[4].w, |temp[4].wwww|; 10: MUL temp[4].xyz, temp[4].wwww, input[4]; 11: DP3_SAT temp[5].x, temp[4], temp[3]; 12: LG2 temp[9].w, temp[5].xxxx; 13: MUL temp[9].w, temp[9].wwww, const[5].yyyy; 14: EX2 temp[5].x, temp[9].wwww; 15: MUL temp[5].x, temp[5].xxxx, const[0].xxxx; 16: MUL temp[5].x, temp[5].xxxx, temp[1].xxxx; 17: DP3 temp[6].x, temp[3], input[3]; 18: ADD temp[6].x, temp[6].xxxx, const[5].xxxx; 19: MAX temp[6].x, temp[6].xxxx, const[0].yyyy; 20: MAD temp[0].xyz, temp[6].xxxx, temp[0], temp[5].xxxx; 21: MUL temp[0].xyz, temp[0], input[0]; 22: ADD temp[10], temp[2], -temp[0]; 23: MAD_SAT temp[7].xyz, temp[1].yyyy, temp[10], temp[0]; 24: MUL_SAT temp[7].w, temp[0].wwww, input[0].wwww; 25: MAD_SAT temp[8].x, input[1].xxxx, const[3].xxxx, const[3].yyyy; 26: ADD temp[11], temp[7], -const[4]; 27: MAD output[0].xyz, temp[8].xxxx, temp[11], const[4]; 28: MOV output[0].w, temp[7]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -const[5].xxx_; 5: DP3 temp[3].w, temp[3].xyz_, temp[3].xyz_; 6: RSQ temp[3].w, |temp[3].w___|; 7: MUL temp[3].xyz, temp[3].www_, temp[3].xyz_; 8: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 11: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 12: LG2 temp[9].w, temp[5].x___; 13: MUL temp[9].w, temp[9].___w, const[5].___y; 14: EX2 temp[5].x, temp[9].w___; 15: MUL temp[5].x, temp[5].x___, const[0].x___; 16: MUL temp[5].x, temp[5].x___, temp[1].x___; 17: DP3 temp[6].x, temp[3].xyz_, input[3].xyz_; 18: ADD temp[6].x, temp[6].x___, const[5].x___; 19: MAX temp[6].x, temp[6].x___, const[0].y___; 20: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 21: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 22: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 23: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 24: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 25: MAD_SAT temp[8].x, input[1].x___, const[3].x___, const[3].y___; 26: ADD temp[11].xyz, temp[7].xyz_, -const[4].xyz_; 27: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[4].xyz_; 28: MOV output[0].w, temp[7].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: DP3 temp[3].w, temp[3].xyz_, temp[3].xyz_; 6: RSQ temp[3].w, |temp[3].w___|; 7: MUL temp[3].xyz, temp[3].www_, temp[3].xyz_; 8: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 11: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 12: LG2 temp[9].w, temp[5].x___; 13: MUL temp[9].w, temp[9].___w, const[5].___y; 14: EX2 temp[5].x, temp[9].w___; 15: MUL temp[5].x, temp[5].x___, const[0].x___; 16: MUL temp[5].x, temp[5].x___, temp[1].x___; 17: DP3 temp[6].x, temp[3].xyz_, input[3].xyz_; 18: ADD temp[6].x, temp[6].x___, none.H___; 19: MAX temp[6].x, temp[6].x___, const[0].y___; 20: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 21: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 22: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 23: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 24: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 25: MAD_SAT temp[8].x, input[1].x___, const[3].x___, const[3].y___; 26: ADD temp[11].xyz, temp[7].xyz_, -const[4].xyz_; 27: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[4].xyz_; 28: MOV output[0].w, temp[7].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: DP3 temp[3].w, temp[3].xyz_, temp[3].xyz_; 6: RSQ temp[3].w, |temp[3].w___|; 7: MUL temp[3].xyz, temp[3].www_, temp[3].xyz_; 8: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 11: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 12: LG2 temp[9].w, temp[5].x___; 13: MUL temp[9].w, temp[9].___w, const[5].___y; 14: EX2 temp[5].x, temp[9].w___; 15: MUL temp[5].x, temp[5].x___, const[0].x___; 16: MUL temp[5].x, temp[5].x___, temp[1].x___; 17: DP3 temp[6].x, temp[3].xyz_, input[3].xyz_; 18: ADD temp[6].x, temp[6].x___, none.H___; 19: MAX temp[6].x, temp[6].x___, const[0].y___; 20: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 21: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 22: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 23: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 24: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 25: MAD_SAT temp[8].x, input[1].x___, const[3].x___, const[3].y___; 26: ADD temp[11].xyz, temp[7].xyz_, -const[4].xyz_; 27: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[4].xyz_; 28: MOV output[0].w, temp[7].___w; CONST[3] = { 0.5000 128.0000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: DP3 temp[3].w, temp[3].xyz_, temp[3].xyz_; 6: RSQ temp[3].w, |temp[3].w___|; 7: MUL temp[3].xyz, temp[3].www_, temp[3].xyz_; 8: DP3 temp[4].w, input[4].xyz_, input[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, input[4].xyz_; 11: DP3_SAT temp[5].x, temp[4].xyz_, temp[3].xyz_; 12: LG2 temp[9].w, temp[5].x___; 13: MUL temp[9].w, temp[9].___w, const[3].___y; 14: EX2 temp[5].x, temp[9].w___; 15: MUL temp[5].x, temp[5].x___, const[0].x___; 16: MUL temp[5].x, temp[5].x___, temp[1].x___; 17: DP3 temp[6].x, temp[3].xyz_, input[3].xyz_; 18: ADD temp[6].x, temp[6].x___, none.H___; 19: MAX temp[6].x, temp[6].x___, const[0].y___; 20: MAD temp[0].xyz, temp[6].xxx_, temp[0].xyz_, temp[5].xxx_; 21: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 22: ADD temp[10].xyz, temp[2].xyz_, -temp[0].xyz_; 23: MAD_SAT temp[7].xyz, temp[1].yyy_, temp[10].xyz_, temp[0].xyz_; 24: MUL_SAT temp[7].w, temp[0].___w, input[0].___w; 25: MAD_SAT temp[8].x, input[1].x___, const[1].x___, const[1].y___; 26: ADD temp[11].xyz, temp[7].xyz_, -const[2].xyz_; 27: MAD output[0].xyz, temp[8].xxx_, temp[11].xyz_, const[2].xyz_; 28: MOV output[0].w, temp[7].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xy, input[2].xy__, 2D[1]; 2: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: src0.xyz = temp[3] MAD temp[3].xyz, src0.xyz, src0.111, -src0.HHH 5: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.w = temp[3] RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 8: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 9: src0.w = temp[4] RSQ temp[4].w, |src0.w| 10: src0.xyz = input[4], src0.w = temp[4] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 11: src0.xyz = temp[4], src1.xyz = temp[3] DP3_SAT temp[5].x, src0.xyz, src1.xyz 12: src0.xyz = temp[5] LG2 temp[9].w, src0.x 13: src0.xyz = const[3], src0.w = temp[9] MAD temp[9].w, src0.w, src0.y, src0.0 14: src0.w = temp[9] REPL_ALPHA temp[5].x EX2, src0.w 15: src0.xyz = temp[5], src1.xyz = const[0] MAD temp[5].x, src0.x__, src1.x__, src0.000 16: src0.xyz = temp[5], src1.xyz = temp[1] MAD temp[5].x, src0.x__, src1.x__, src0.000 17: src0.xyz = temp[3], src1.xyz = input[3] DP3 temp[6].x, src0.xyz, src1.xyz 18: src0.xyz = temp[6] MAD temp[6].x, src0.x__, src0.111, src0.H__ 19: src0.xyz = temp[6], src1.xyz = const[0] MAX temp[6].x, src0.x__, src1.y__ 20: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = temp[5] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 21: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 22: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[10].xyz, src0.xyz, src0.111, -src1.xyz 23: src0.xyz = temp[1], src1.xyz = temp[10], src2.xyz = temp[0] MAD_SAT temp[7].xyz, src0.yyy, src1.xyz, src2.xyz 24: src0.w = temp[0], src1.w = input[0] MAD_SAT temp[7].w, src0.w, src1.w, src0.0 25: src0.xyz = input[1], src1.xyz = const[1] MAD_SAT temp[8].x, src0.x__, src1.x__, src1.y__ 26: src0.xyz = temp[7], src1.xyz = const[2] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 27: src0.xyz = temp[8], src1.xyz = temp[11], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 28: src0.w = temp[7] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: TEX temp[1].xy, input[2].xy__, 2D[1]; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 5: src0.xyz = temp[3], src0.w = temp[4] MAD temp[3].xyz, src0.xyz, src0.111, -src0.HHH RSQ temp[4].w, |src0.w| 6: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 7: src0.xyz = input[4], src0.w = temp[4], src1.w = temp[3] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 RSQ temp[3].w, |src1.w| 8: src0.xyz = temp[3], src0.w = temp[3], src1.w = temp[0], src2.w = input[0] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[7].w, src1.w, src2.w, src0.0 9: src0.xyz = temp[4], src0.w = temp[7], src1.xyz = temp[3] DP3_SAT temp[5].x, src0.xyz, src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = temp[3], src1.xyz = input[3], src2.xyz = temp[5] DP3 temp[6].x, src0.xyz, src1.xyz LG2 temp[9].w, src2.x 11: src0.xyz = temp[6], src0.w = temp[9], src1.xyz = const[3] MAD temp[6].x, src0.x__, src0.111, src0.H__ MAD temp[9].w, src0.w, src1.y, src0.0 12: src0.w = temp[9] REPL_ALPHA temp[5].x EX2, src0.w 13: src0.xyz = temp[5], src1.xyz = const[0] MAD temp[5].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[5], src1.xyz = temp[1] MAD temp[5].x, src0.x__, src1.x__, src0.000 15: src0.xyz = temp[6], src1.xyz = const[0] MAX temp[6].x, src0.x__, src1.y__ 16: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 17: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = temp[5] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 18: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 19: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[10].xyz, src0.xyz, src0.111, -src1.xyz 20: src0.xyz = temp[1], src1.xyz = temp[10], src2.xyz = temp[0] MAD_SAT temp[7].xyz, src0.yyy, src1.xyz, src2.xyz 21: src0.xyz = temp[7], src1.xyz = const[2] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 22: src0.xyz = input[1], src1.xyz = const[1] MAD_SAT temp[8].x, src0.x__, src1.x__, src1.y__ 23: src0.xyz = temp[8], src1.xyz = temp[11], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], temp[1].xy__, 2D[0]; 2: TEX temp[6].xy, temp[1].xy__, 2D[1]; 3: TEX temp[1].xyz, temp[1].xy__, 2D[3]; 4: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[7].w, src0._, src0._ 5: src0.xyz = temp[1], src0.w = temp[7] MAD temp[1].xyz, src0.xyz, src0.111, -src0.HHH RSQ temp[7].w, |src0.w| 6: src0.xyz = temp[1] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 7: src0.xyz = temp[3], src0.w = temp[7], src1.w = temp[1] MAD temp[7].xyz, src0.www, src0.xyz, src0.000 RSQ temp[1].w, |src1.w| 8: src0.xyz = temp[1], src0.w = temp[1], src1.w = temp[5], src2.w = temp[0] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[8].w, src1.w, src2.w, src0.0 9: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[1] DP3_SAT temp[3].x, src0.xyz, src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[3] DP3 temp[2].x, src0.xyz, src1.xyz LG2 temp[1].w, src2.x 11: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = const[3] MAD temp[2].x, src0.x__, src0.111, src0.H__ MAD temp[1].w, src0.w, src1.y, src0.0 12: src0.w = temp[1] REPL_ALPHA temp[3].x EX2, src0.w 13: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[3].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[3], src1.xyz = temp[6] MAD temp[3].x, src0.x__, src1.x__, src0.000 15: src0.xyz = temp[2], src1.xyz = const[0] MAX temp[2].x, src0.x__, src1.y__ 16: src0.xyz = temp[5], src1.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.zzz, src0.000 17: src0.xyz = temp[2], src1.xyz = temp[5], src2.xyz = temp[3] MAD temp[5].xyz, src0.xxx, src1.xyz, src2.xxx 18: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 19: src0.xyz = temp[1], src1.xyz = temp[5] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 20: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = temp[5] MAD_SAT temp[8].xyz, src0.yyy, src1.xyz, src2.xyz 21: src0.xyz = temp[8], src1.xyz = const[2] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz 22: src0.xyz = temp[4], src1.xyz = const[1] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 23: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f401: src: 1 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00001807:TEX TEX_WAIT wmask: RG omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f401: src: 1 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000041:DP3 dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0004c07b:RSQ dest:7 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00db4010:MAD dest:1 rgb_C_src:0 H/H/H 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810011:DP dest:1 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000407:Addr0: 7t, Addr1: 1t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0004d01b:RSQ dest:1 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001401:Addr0: 1t, Addr1: 5t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d080:MAD dest:8 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 8 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00000407:Addr0: 7t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000008:Addr0: 8t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 9 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00300801:Addr0: 1t, Addr1: 2t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00002019:LN2 dest:1 alp_A_src:2 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00040c02:Addr0: 2t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0028c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 G 0 targ 0 w:0 5 RGBA_INST: 0x20494020:MAD dest:2 rgb_C_src:0 H/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c058:EX2 dest:5 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000003a:SOP dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040003:Addr0: 3t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00001803:Addr0: 3t, Addr1: 6t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0090a480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 G/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000025:MAX dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040005:Addr0: 5t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00301402:Addr0: 2t, Addr1: 5t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00002050:MAD dest:5 rgb_C_src:2 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001401:Addr0: 1t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 19 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00500006:Addr0: 6t, Addr1: 0t, Addr2: 5t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442124:rgb_A_src:0 G/G/G 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222080:MAD dest:8 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040808:Addr0: 8t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 21 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040404:Addr0: 4t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10200400:Addr0: 0t, Addr1: 1t, Addr2: 2c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL IN[3], GENERIC[1], PERSPECTIVE DCL IN[4], GENERIC[2], PERSPECTIVE DCL IN[5], GENERIC[3], PERSPECTIVE DCL IN[6], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL CONST[2] DCL CONST[4..6] DCL TEMP[0..13] IMM FLT32 { 0.5000, 2.0000, 0.0000, 128.0000} 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: MUL TEMP[2].xyz, TEMP[0], CONST[0].zzzz 3: TEX TEMP[3], IN[2], SAMP[3], 2D 4: SUB TEMP[3].xyz, TEMP[3], IMM[0].xxxx 5: MUL TEMP[4].xyz, TEMP[3].xxxx, IN[4] 6: MAD TEMP[4].xyz, TEMP[3].yyyy, IN[5], TEMP[4] 7: MAD TEMP[4].xyz, TEMP[3].zzzz, IN[6], TEMP[4] 8: DP3 TEMP[4].w, TEMP[4], TEMP[4] 9: RSQ TEMP[4].w, TEMP[4].wwww 10: MUL TEMP[4].xyz, TEMP[4].wwww, TEMP[4] 11: ADD TEMP[5], CONST[2], IN[3] 12: DP3 TEMP[5].w, TEMP[5], TEMP[5] 13: RSQ TEMP[5].w, TEMP[5].wwww 14: MUL TEMP[5].xyz, TEMP[5].wwww, TEMP[5] 15: DP3_SAT TEMP[6].x, TEMP[5], TEMP[4] 16: POW TEMP[6].x, TEMP[6].xxxx, IMM[0].wwww 17: MUL TEMP[6].x, TEMP[6].xxxx, CONST[0].xxxx 18: MUL TEMP[6].x, TEMP[6].xxxx, TEMP[1].xxxx 19: DP3 TEMP[7].x, TEMP[4], CONST[2] 20: ADD TEMP[7].x, TEMP[7].xxxx, IMM[0].xxxx 21: MAX TEMP[7].x, TEMP[7].xxxx, CONST[0].yyyy 22: MAD TEMP[0].xyz, TEMP[7].xxxx, TEMP[0], TEMP[6].xxxx 23: MUL TEMP[0].xyz, TEMP[0], IN[0] 24: LRP TEMP[0].xyz, TEMP[1].yyyy, TEMP[2], TEMP[0] 25: DP3 TEMP[8].w, IN[3], IN[3] 26: RSQ TEMP[8].w, TEMP[8].wwww 27: MUL TEMP[8].xyz, TEMP[8].wwww, IN[3] 28: DP3 TEMP[9].x, TEMP[8], TEMP[4] 29: MUL TEMP[10].xyz, TEMP[9].xxxx, TEMP[4] 30: MAD TEMP[10].xyz, TEMP[10], IMM[0].yyyy, -TEMP[8] 31: MAX TEMP[9].x, TEMP[9], IMM[0].zzzz 32: MAD TEMP[9].x, CONST[4].xxxx, TEMP[9].xxxx, CONST[4].yyyy 33: TEX TEMP[11], TEMP[10], SAMP[2], CUBE 34: MUL TEMP[1].z, TEMP[1].zzzz, TEMP[9].xxxx 35: LRP_SAT TEMP[12].xyz, TEMP[1].zzzz, TEMP[11], TEMP[0] 36: MUL_SAT TEMP[12].w, TEMP[0].wwww, IN[0].wwww 37: MAD_SAT TEMP[13].x, IN[1].xxxx, CONST[5].xxxx, CONST[5].yyyy 38: LRP OUT[0].xyz, TEMP[13].xxxx, TEMP[12], CONST[6] 39: MOV OUT[0].w, TEMP[12] 40: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, temp[5].wwww; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: POW temp[6].x, temp[6].xxxx, const[7].wwww; 17: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 18: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 19: DP3 temp[7].x, temp[4], const[2]; 20: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 21: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 22: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 23: MUL temp[0].xyz, temp[0], input[0]; 24: LRP temp[0].xyz, temp[1].yyyy, temp[2], temp[0]; 25: DP3 temp[8].w, input[3], input[3]; 26: RSQ temp[8].w, temp[8].wwww; 27: MUL temp[8].xyz, temp[8].wwww, input[3]; 28: DP3 temp[9].x, temp[8], temp[4]; 29: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 30: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 31: MAX temp[9].x, temp[9], const[7].zzzz; 32: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 33: TEX temp[11], temp[10], CUBE[2]; 34: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 35: LRP_SAT temp[12].xyz, temp[1].zzzz, temp[11], temp[0]; 36: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 37: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 38: LRP output[0].xyz, temp[13].xxxx, temp[12], const[6]; 39: MOV output[0].w, temp[12]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, temp[5].wwww; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: POW temp[6].x, temp[6].xxxx, const[7].wwww; 17: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 18: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 19: DP3 temp[7].x, temp[4], const[2]; 20: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 21: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 22: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 23: MUL temp[0].xyz, temp[0], input[0]; 24: LRP temp[0].xyz, temp[1].yyyy, temp[2], temp[0]; 25: DP3 temp[8].w, input[3], input[3]; 26: RSQ temp[8].w, temp[8].wwww; 27: MUL temp[8].xyz, temp[8].wwww, input[3]; 28: DP3 temp[9].x, temp[8], temp[4]; 29: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 30: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 31: MAX temp[9].x, temp[9], const[7].zzzz; 32: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 33: TEX temp[11], temp[10], CUBE[2]; 34: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 35: LRP_SAT temp[12].xyz, temp[1].zzzz, temp[11], temp[0]; 36: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 37: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 38: LRP output[0].xyz, temp[13].xxxx, temp[12], const[6]; 39: MOV output[0].w, temp[12]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, temp[5].wwww; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: POW temp[6].x, temp[6].xxxx, const[7].wwww; 17: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 18: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 19: DP3 temp[7].x, temp[4], const[2]; 20: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 21: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 22: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 23: MUL temp[0].xyz, temp[0], input[0]; 24: LRP temp[0].xyz, temp[1].yyyy, temp[2], temp[0]; 25: DP3 temp[8].w, input[3], input[3]; 26: RSQ temp[8].w, temp[8].wwww; 27: MUL temp[8].xyz, temp[8].wwww, input[3]; 28: DP3 temp[9].x, temp[8], temp[4]; 29: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 30: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 31: MAX temp[9].x, temp[9], const[7].zzzz; 32: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 33: TEX temp[11], temp[10], CUBE[2]; 34: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 35: LRP_SAT temp[12].xyz, temp[1].zzzz, temp[11], temp[0]; 36: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 37: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 38: LRP output[0].xyz, temp[13].xxxx, temp[12], const[6]; 39: MOV output[0].w, temp[12]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, temp[5].wwww; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: POW temp[6].x, temp[6].xxxx, const[7].wwww; 17: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 18: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 19: DP3 temp[7].x, temp[4], const[2]; 20: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 21: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 22: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 23: MUL temp[0].xyz, temp[0], input[0]; 24: LRP temp[0].xyz, temp[1].yyyy, temp[2], temp[0]; 25: DP3 temp[8].w, input[3], input[3]; 26: RSQ temp[8].w, temp[8].wwww; 27: MUL temp[8].xyz, temp[8].wwww, input[3]; 28: DP3 temp[9].x, temp[8], temp[4]; 29: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 30: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 31: MAX temp[9].x, temp[9], const[7].zzzz; 32: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 33: TEX temp[11], temp[10], CUBE[2]; 34: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 35: LRP_SAT temp[12].xyz, temp[1].zzzz, temp[11], temp[0]; 36: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 37: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 38: LRP output[0].xyz, temp[13].xxxx, temp[12], const[6]; 39: MOV output[0].w, temp[12]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: SUB temp[3].xyz, temp[3], const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, temp[4].wwww; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, temp[5].wwww; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: POW temp[6].x, temp[6].xxxx, const[7].wwww; 17: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 18: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 19: DP3 temp[7].x, temp[4], const[2]; 20: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 21: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 22: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 23: MUL temp[0].xyz, temp[0], input[0]; 24: LRP temp[0].xyz, temp[1].yyyy, temp[2], temp[0]; 25: DP3 temp[8].w, input[3], input[3]; 26: RSQ temp[8].w, temp[8].wwww; 27: MUL temp[8].xyz, temp[8].wwww, input[3]; 28: DP3 temp[9].x, temp[8], temp[4]; 29: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 30: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 31: MAX temp[9].x, temp[9], const[7].zzzz; 32: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 33: TEX temp[11], temp[10], CUBE[2]; 34: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 35: LRP_SAT temp[12].xyz, temp[1].zzzz, temp[11], temp[0]; 36: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 37: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 38: LRP output[0].xyz, temp[13].xxxx, temp[12], const[6]; 39: MOV output[0].w, temp[12]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[2].xyz, temp[0], const[0].zzzz; 3: TEX temp[3], input[2], 2D[3]; 4: ADD temp[3].xyz, temp[3], -const[7].xxxx; 5: MUL temp[4].xyz, temp[3].xxxx, input[4]; 6: MAD temp[4].xyz, temp[3].yyyy, input[5], temp[4]; 7: MAD temp[4].xyz, temp[3].zzzz, input[6], temp[4]; 8: DP3 temp[4].w, temp[4], temp[4]; 9: RSQ temp[4].w, |temp[4].wwww|; 10: MUL temp[4].xyz, temp[4].wwww, temp[4]; 11: ADD temp[5], const[2], input[3]; 12: DP3 temp[5].w, temp[5], temp[5]; 13: RSQ temp[5].w, |temp[5].wwww|; 14: MUL temp[5].xyz, temp[5].wwww, temp[5]; 15: DP3_SAT temp[6].x, temp[5], temp[4]; 16: LG2 temp[14].w, temp[6].xxxx; 17: MUL temp[14].w, temp[14].wwww, const[7].wwww; 18: EX2 temp[6].x, temp[14].wwww; 19: MUL temp[6].x, temp[6].xxxx, const[0].xxxx; 20: MUL temp[6].x, temp[6].xxxx, temp[1].xxxx; 21: DP3 temp[7].x, temp[4], const[2]; 22: ADD temp[7].x, temp[7].xxxx, const[7].xxxx; 23: MAX temp[7].x, temp[7].xxxx, const[0].yyyy; 24: MAD temp[0].xyz, temp[7].xxxx, temp[0], temp[6].xxxx; 25: MUL temp[0].xyz, temp[0], input[0]; 26: ADD temp[15], temp[2], -temp[0]; 27: MAD temp[0].xyz, temp[1].yyyy, temp[15], temp[0]; 28: DP3 temp[8].w, input[3], input[3]; 29: RSQ temp[8].w, |temp[8].wwww|; 30: MUL temp[8].xyz, temp[8].wwww, input[3]; 31: DP3 temp[9].x, temp[8], temp[4]; 32: MUL temp[10].xyz, temp[9].xxxx, temp[4]; 33: MAD temp[10].xyz, temp[10], const[7].yyyy, -temp[8]; 34: MAX temp[9].x, temp[9], const[7].zzzz; 35: MAD temp[9].x, const[4].xxxx, temp[9].xxxx, const[4].yyyy; 36: TEX temp[11], temp[10], CUBE[2]; 37: MUL temp[1].z, temp[1].zzzz, temp[9].xxxx; 38: ADD temp[16], temp[11], -temp[0]; 39: MAD_SAT temp[12].xyz, temp[1].zzzz, temp[16], temp[0]; 40: MUL_SAT temp[12].w, temp[0].wwww, input[0].wwww; 41: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 42: ADD temp[17], temp[12], -const[6]; 43: MAD output[0].xyz, temp[13].xxxx, temp[17], const[6]; 44: MOV output[0].w, temp[12]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -const[7].xxx_; 5: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 6: MAD temp[4].xyz, temp[3].yyy_, input[5].xyz_, temp[4].xyz_; 7: MAD temp[4].xyz, temp[3].zzz_, input[6].xyz_, temp[4].xyz_; 8: DP3 temp[4].w, temp[4].xyz_, temp[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, temp[4].xyz_; 11: ADD temp[5].xyz, const[2].xyz_, input[3].xyz_; 12: DP3 temp[5].w, temp[5].xyz_, temp[5].xyz_; 13: RSQ temp[5].w, |temp[5].w___|; 14: MUL temp[5].xyz, temp[5].www_, temp[5].xyz_; 15: DP3_SAT temp[6].x, temp[5].xyz_, temp[4].xyz_; 16: LG2 temp[14].w, temp[6].x___; 17: MUL temp[14].w, temp[14].___w, const[7].___w; 18: EX2 temp[6].x, temp[14].w___; 19: MUL temp[6].x, temp[6].x___, const[0].x___; 20: MUL temp[6].x, temp[6].x___, temp[1].x___; 21: DP3 temp[7].x, temp[4].xyz_, const[2].xyz_; 22: ADD temp[7].x, temp[7].x___, const[7].x___; 23: MAX temp[7].x, temp[7].x___, const[0].y___; 24: MAD temp[0].xyz, temp[7].xxx_, temp[0].xyz_, temp[6].xxx_; 25: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 26: ADD temp[15].xyz, temp[2].xyz_, -temp[0].xyz_; 27: MAD temp[0].xyz, temp[1].yyy_, temp[15].xyz_, temp[0].xyz_; 28: DP3 temp[8].w, input[3].xyz_, input[3].xyz_; 29: RSQ temp[8].w, |temp[8].w___|; 30: MUL temp[8].xyz, temp[8].www_, input[3].xyz_; 31: DP3 temp[9].x, temp[8].xyz_, temp[4].xyz_; 32: MUL temp[10].xyz, temp[9].xxx_, temp[4].xyz_; 33: MAD temp[10].xyz, temp[10].xyz_, const[7].yyy_, -temp[8].xyz_; 34: MAX temp[9].x, temp[9].x___, const[7].z___; 35: MAD temp[9].x, const[4].x___, temp[9].x___, const[4].y___; 36: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 37: MUL temp[1].z, temp[1].__z_, temp[9].__x_; 38: ADD temp[16].xyz, temp[11].xyz_, -temp[0].xyz_; 39: MAD_SAT temp[12].xyz, temp[1].zzz_, temp[16].xyz_, temp[0].xyz_; 40: MUL_SAT temp[12].w, temp[0].___w, input[0].___w; 41: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 42: ADD temp[17].xyz, temp[12].xyz_, -const[6].xyz_; 43: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 44: MOV output[0].w, temp[12].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 6: MAD temp[4].xyz, temp[3].yyy_, input[5].xyz_, temp[4].xyz_; 7: MAD temp[4].xyz, temp[3].zzz_, input[6].xyz_, temp[4].xyz_; 8: DP3 temp[4].w, temp[4].xyz_, temp[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, temp[4].xyz_; 11: DP3 temp[5].w, (input[3] + const[2]).xyz_, (input[3] + const[2]).xyz_; 12: RSQ temp[5].w, |temp[5].w___|; 13: MUL temp[5].xyz, temp[5].www_, (input[3] + const[2]).xyz_; 14: DP3_SAT temp[6].x, temp[5].xyz_, temp[4].xyz_; 15: LG2 temp[14].w, temp[6].x___; 16: MUL temp[14].w, temp[14].___w, const[7].___w; 17: EX2 temp[6].x, temp[14].w___; 18: MUL temp[6].x, temp[6].x___, const[0].x___; 19: MUL temp[6].x, temp[6].x___, temp[1].x___; 20: DP3 temp[7].x, temp[4].xyz_, const[2].xyz_; 21: ADD temp[7].x, temp[7].x___, none.H___; 22: MAX temp[7].x, temp[7].x___, const[0].y___; 23: MAD temp[0].xyz, temp[7].xxx_, temp[0].xyz_, temp[6].xxx_; 24: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 25: ADD temp[15].xyz, temp[2].xyz_, -temp[0].xyz_; 26: MAD temp[0].xyz, temp[1].yyy_, temp[15].xyz_, temp[0].xyz_; 27: DP3 temp[8].w, input[3].xyz_, input[3].xyz_; 28: RSQ temp[8].w, |temp[8].w___|; 29: MUL temp[8].xyz, temp[8].www_, input[3].xyz_; 30: DP3 temp[9].x, temp[8].xyz_, temp[4].xyz_; 31: MUL temp[10].xyz, temp[9].xxx_, temp[4].xyz_; 32: MAD temp[10].xyz, temp[10].xyz_, const[7].yyy_, -temp[8].xyz_; 33: MAX temp[9].x, temp[9].x___, none.0___; 34: MAD temp[9].x, const[4].x___, temp[9].x___, const[4].y___; 35: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 36: MUL temp[1].z, temp[1].__z_, temp[9].__x_; 37: ADD temp[16].xyz, temp[11].xyz_, -temp[0].xyz_; 38: MAD_SAT temp[12].xyz, temp[1].zzz_, temp[16].xyz_, temp[0].xyz_; 39: MUL_SAT temp[12].w, temp[0].___w, input[0].___w; 40: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 41: ADD temp[17].xyz, temp[12].xyz_, -const[6].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 43: MOV output[0].w, temp[12].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 6: MAD temp[4].xyz, temp[3].yyy_, input[5].xyz_, temp[4].xyz_; 7: MAD temp[4].xyz, temp[3].zzz_, input[6].xyz_, temp[4].xyz_; 8: DP3 temp[4].w, temp[4].xyz_, temp[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, temp[4].xyz_; 11: DP3 temp[5].w, (input[3] + const[2]).xyz_, (input[3] + const[2]).xyz_; 12: RSQ temp[5].w, |temp[5].w___|; 13: MUL temp[5].xyz, temp[5].www_, (input[3] + const[2]).xyz_; 14: DP3_SAT temp[6].x, temp[5].xyz_, temp[4].xyz_; 15: LG2 temp[14].w, temp[6].x___; 16: MUL temp[14].w, temp[14].___w, const[7].___w; 17: EX2 temp[6].x, temp[14].w___; 18: MUL temp[6].x, temp[6].x___, const[0].x___; 19: MUL temp[6].x, temp[6].x___, temp[1].x___; 20: DP3 temp[7].x, temp[4].xyz_, const[2].xyz_; 21: ADD temp[7].x, temp[7].x___, none.H___; 22: MAX temp[7].x, temp[7].x___, const[0].y___; 23: MAD temp[0].xyz, temp[7].xxx_, temp[0].xyz_, temp[6].xxx_; 24: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 25: ADD temp[15].xyz, temp[2].xyz_, -temp[0].xyz_; 26: MAD temp[0].xyz, temp[1].yyy_, temp[15].xyz_, temp[0].xyz_; 27: DP3 temp[8].w, input[3].xyz_, input[3].xyz_; 28: RSQ temp[8].w, |temp[8].w___|; 29: MUL temp[8].xyz, temp[8].www_, input[3].xyz_; 30: DP3 temp[9].x, temp[8].xyz_, temp[4].xyz_; 31: MUL temp[10].xyz, temp[9].xxx_, temp[4].xyz_; 32: MAD temp[10].xyz, temp[10].xyz_, const[7].yyy_, -temp[8].xyz_; 33: MAX temp[9].x, temp[9].x___, none.0___; 34: MAD temp[9].x, const[4].x___, temp[9].x___, const[4].y___; 35: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 36: MUL temp[1].z, temp[1].__z_, temp[9].__x_; 37: ADD temp[16].xyz, temp[11].xyz_, -temp[0].xyz_; 38: MAD_SAT temp[12].xyz, temp[1].zzz_, temp[16].xyz_, temp[0].xyz_; 39: MUL_SAT temp[12].w, temp[0].___w, input[0].___w; 40: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 41: ADD temp[17].xyz, temp[12].xyz_, -const[6].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 43: MOV output[0].w, temp[12].___w; CONST[5] = { 0.5000 2.0000 0.0000 128.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[0].xyz_, const[0].zzz_; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: ADD temp[3].xyz, temp[3].xyz_, -none.HHH_; 5: MUL temp[4].xyz, temp[3].xxx_, input[4].xyz_; 6: MAD temp[4].xyz, temp[3].yyy_, input[5].xyz_, temp[4].xyz_; 7: MAD temp[4].xyz, temp[3].zzz_, input[6].xyz_, temp[4].xyz_; 8: DP3 temp[4].w, temp[4].xyz_, temp[4].xyz_; 9: RSQ temp[4].w, |temp[4].w___|; 10: MUL temp[4].xyz, temp[4].www_, temp[4].xyz_; 11: DP3 temp[5].w, (input[3] + const[984]).xyz_, (input[3] + const[984]).xyz_; 12: RSQ temp[5].w, |temp[5].w___|; 13: MUL temp[5].xyz, temp[5].www_, (input[3] + const[1]).xyz_; 14: DP3_SAT temp[6].x, temp[5].xyz_, temp[4].xyz_; 15: LG2 temp[14].w, temp[6].x___; 16: MUL temp[14].w, temp[14].___w, const[5].___w; 17: EX2 temp[6].x, temp[14].w___; 18: MUL temp[6].x, temp[6].x___, const[0].x___; 19: MUL temp[6].x, temp[6].x___, temp[1].x___; 20: DP3 temp[7].x, temp[4].xyz_, const[1].xyz_; 21: ADD temp[7].x, temp[7].x___, none.H___; 22: MAX temp[7].x, temp[7].x___, const[0].y___; 23: MAD temp[0].xyz, temp[7].xxx_, temp[0].xyz_, temp[6].xxx_; 24: MUL temp[0].xyz, temp[0].xyz_, input[0].xyz_; 25: ADD temp[15].xyz, temp[2].xyz_, -temp[0].xyz_; 26: MAD temp[0].xyz, temp[1].yyy_, temp[15].xyz_, temp[0].xyz_; 27: DP3 temp[8].w, input[3].xyz_, input[3].xyz_; 28: RSQ temp[8].w, |temp[8].w___|; 29: MUL temp[8].xyz, temp[8].www_, input[3].xyz_; 30: DP3 temp[9].x, temp[8].xyz_, temp[4].xyz_; 31: MUL temp[10].xyz, temp[9].xxx_, temp[4].xyz_; 32: MAD temp[10].xyz, temp[10].xyz_, const[5].yyy_, -temp[8].xyz_; 33: MAX temp[9].x, temp[9].x___, none.0___; 34: MAD temp[9].x, const[2].x___, temp[9].x___, const[2].y___; 35: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 36: MUL temp[1].z, temp[1].__z_, temp[9].__x_; 37: ADD temp[16].xyz, temp[11].xyz_, -temp[0].xyz_; 38: MAD_SAT temp[12].xyz, temp[1].zzz_, temp[16].xyz_, temp[0].xyz_; 39: MUL_SAT temp[12].w, temp[0].___w, input[0].___w; 40: MAD_SAT temp[13].x, input[1].x___, const[3].x___, const[3].y___; 41: ADD temp[17].xyz, temp[12].xyz_, -const[4].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[4].xyz_; 43: MOV output[0].w, temp[12].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: src0.xyz = temp[3] MAD temp[3].xyz, src0.xyz, src0.111, -src0.HHH 5: src0.xyz = temp[3], src1.xyz = input[4] MAD temp[4].xyz, src0.xxx, src1.xyz, src0.000 6: src0.xyz = temp[3], src1.xyz = input[5], src2.xyz = temp[4] MAD temp[4].xyz, src0.yyy, src1.xyz, src2.xyz 7: src0.xyz = temp[3], src1.xyz = input[6], src2.xyz = temp[4] MAD temp[4].xyz, src0.zzz, src1.xyz, src2.xyz 8: src0.xyz = temp[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 9: src0.w = temp[4] RSQ temp[4].w, |src0.w| 10: src0.xyz = temp[4], src0.w = temp[4] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 11: src0.xyz = const[984], src1.xyz = input[3], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[5].w, src0._, src0._ 12: src0.w = temp[5] RSQ temp[5].w, |src0.w| 13: src0.xyz = const[1], src0.w = temp[5], src1.xyz = input[3], srcp.xyz = (src1 + src0) MAD temp[5].xyz, src0.www, srcp.xyz, src0.000 14: src0.xyz = temp[5], src1.xyz = temp[4] DP3_SAT temp[6].x, src0.xyz, src1.xyz 15: src0.xyz = temp[6] LG2 temp[14].w, src0.x 16: src0.w = temp[14], src1.w = const[5] MAD temp[14].w, src0.w, src1.w, src0.0 17: src0.w = temp[14] REPL_ALPHA temp[6].x EX2, src0.w 18: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].x, src0.x__, src1.x__, src0.000 19: src0.xyz = temp[6], src1.xyz = temp[1] MAD temp[6].x, src0.x__, src1.x__, src0.000 20: src0.xyz = temp[4], src1.xyz = const[1] DP3 temp[7].x, src0.xyz, src1.xyz 21: src0.xyz = temp[7] MAD temp[7].x, src0.x__, src0.111, src0.H__ 22: src0.xyz = temp[7], src1.xyz = const[0] MAX temp[7].x, src0.x__, src1.y__ 23: src0.xyz = temp[7], src1.xyz = temp[0], src2.xyz = temp[6] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 24: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[15].xyz, src0.xyz, src0.111, -src1.xyz 26: src0.xyz = temp[1], src1.xyz = temp[15], src2.xyz = temp[0] MAD temp[0].xyz, src0.yyy, src1.xyz, src2.xyz 27: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[8].w, src0._, src0._ 28: src0.w = temp[8] RSQ temp[8].w, |src0.w| 29: src0.xyz = input[3], src0.w = temp[8] MAD temp[8].xyz, src0.www, src0.xyz, src0.000 30: src0.xyz = temp[8], src1.xyz = temp[4] DP3 temp[9].x, src0.xyz, src1.xyz 31: src0.xyz = temp[9], src1.xyz = temp[4] MAD temp[10].xyz, src0.xxx, src1.xyz, src0.000 32: src0.xyz = temp[10], src1.xyz = const[5], src2.xyz = temp[8] MAD temp[10].xyz, src0.xyz, src1.yyy, -src2.xyz 33: src0.xyz = temp[9] MAX temp[9].x, src0.x__, src0.0__ 34: src0.xyz = const[2], src1.xyz = temp[9] MAD temp[9].x, src0.x__, src1.x__, src0.y__ 35: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 36: src0.xyz = temp[1], src1.xyz = temp[9] MAD temp[1].z, src0.__z, src1.__x, src0.000 37: src0.xyz = temp[11], src1.xyz = temp[0] MAD temp[16].xyz, src0.xyz, src0.111, -src1.xyz 38: src0.xyz = temp[1], src1.xyz = temp[16], src2.xyz = temp[0] MAD_SAT temp[12].xyz, src0.zzz, src1.xyz, src2.xyz 39: src0.w = temp[0], src1.w = input[0] MAD_SAT temp[12].w, src0.w, src1.w, src0.0 40: src0.xyz = input[1], src1.xyz = const[3] MAD_SAT temp[13].x, src0.x__, src1.x__, src1.y__ 41: src0.xyz = temp[12], src1.xyz = const[4] MAD temp[17].xyz, src0.xyz, src0.111, -src1.xyz 42: src0.xyz = temp[13], src1.xyz = temp[17], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 43: src0.w = temp[12] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: TEX temp[1].xyz, input[2].xy__, 2D[1]; 3: TEX temp[3].xyz, input[2].xy__, 2D[3]; 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[8].w, src0._, src0._ 5: src0.xyz = const[984], src1.xyz = input[3], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[5].w, src0._, src0._ 6: src0.xyz = temp[3], src0.w = temp[5] MAD temp[3].xyz, src0.xyz, src0.111, -src0.HHH RSQ temp[5].w, |src0.w| 7: src0.xyz = const[1], src0.w = temp[5], src1.xyz = input[3], src1.w = temp[8], srcp.xyz = (src1 + src0) MAD temp[5].xyz, src0.www, srcp.xyz, src0.000 RSQ temp[8].w, |src1.w| 8: src0.xyz = input[3], src0.w = temp[8], src1.w = temp[0], src2.w = input[0] MAD temp[8].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[12].w, src1.w, src2.w, src0.0 9: src0.xyz = temp[3], src0.w = temp[12], src1.xyz = input[4] MAD temp[4].xyz, src0.xxx, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = temp[3], src1.xyz = input[5], src2.xyz = temp[4] MAD temp[4].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[3], src1.xyz = input[6], src2.xyz = temp[4] MAD temp[4].xyz, src0.zzz, src1.xyz, src2.xyz 12: src0.xyz = temp[4] DP3, src0.xyz, src0.xyz DP3 temp[4].w, src0._, src0._ 13: src0.xyz = temp[0], src0.w = temp[4], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.zzz, src0.000 RSQ temp[4].w, |src0.w| 14: src0.xyz = temp[4], src0.w = temp[4] MAD temp[4].xyz, src0.www, src0.xyz, src0.000 15: src0.xyz = temp[5], src1.xyz = temp[4] DP3_SAT temp[6].x, src0.xyz, src1.xyz 16: src0.xyz = temp[4], src1.xyz = const[1], src2.xyz = temp[6] DP3 temp[7].x, src0.xyz, src1.xyz LG2 temp[14].w, src2.x 17: src0.xyz = temp[7], src0.w = temp[14], src1.w = const[5] MAD temp[7].x, src0.x__, src0.111, src0.H__ MAD temp[14].w, src0.w, src1.w, src0.0 18: src0.w = temp[14] REPL_ALPHA temp[6].x EX2, src0.w 19: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].x, src0.x__, src1.x__, src0.000 20: src0.xyz = temp[6], src1.xyz = temp[1] MAD temp[6].x, src0.x__, src1.x__, src0.000 21: src0.xyz = temp[7], src1.xyz = const[0] MAX temp[7].x, src0.x__, src1.y__ 22: src0.xyz = temp[7], src1.xyz = temp[0], src2.xyz = temp[6] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 23: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[2], src1.xyz = temp[0] MAD temp[15].xyz, src0.xyz, src0.111, -src1.xyz 25: src0.xyz = temp[1], src1.xyz = temp[15], src2.xyz = temp[0] MAD temp[0].xyz, src0.yyy, src1.xyz, src2.xyz 26: src0.xyz = temp[8], src1.xyz = temp[4] DP3 temp[9].x, src0.xyz, src1.xyz 27: src0.xyz = temp[9], src1.xyz = temp[4] MAD temp[10].xyz, src0.xxx, src1.xyz, src0.000 28: src0.xyz = temp[10], src1.xyz = const[5], src2.xyz = temp[8] MAD temp[10].xyz, src0.xyz, src1.yyy, -src2.xyz 29: src0.xyz = temp[9] MAX temp[9].x, src0.x__, src0.0__ 30: src0.xyz = const[2], src1.xyz = temp[9] MAD temp[9].x, src0.x__, src1.x__, src0.y__ 31: src0.xyz = temp[1], src1.xyz = temp[9] MAD temp[1].z, src0.__z, src1.__x, src0.000 32: src0.xyz = input[1], src1.xyz = const[3] MAD_SAT temp[13].x, src0.x__, src1.x__, src1.y__ 33: BEGIN_TEX; 34: TEX temp[11].xyz, temp[10].xyz_, CUBE[2]; 35: src0.xyz = temp[11], src1.xyz = temp[0] MAD temp[16].xyz, src0.xyz, src0.111, -src1.xyz 36: src0.xyz = temp[1], src1.xyz = temp[16], src2.xyz = temp[0] MAD_SAT temp[12].xyz, src0.zzz, src1.xyz, src2.xyz 37: src0.xyz = temp[12], src1.xyz = const[4] MAD temp[17].xyz, src0.xyz, src0.111, -src1.xyz 38: src0.xyz = temp[13], src1.xyz = temp[17], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], temp[1].xy__, 2D[0]; 2: TEX temp[8].xyz, temp[1].xy__, 2D[1]; 3: TEX temp[1].xyz, temp[1].xy__, 2D[3]; 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[10].w, src0._, src0._ 5: src0.xyz = const[984], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[9].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[9] MAD temp[1].xyz, src0.xyz, src0.111, -src0.HHH RSQ temp[9].w, |src0.w| 7: src0.xyz = const[1], src0.w = temp[9], src1.xyz = temp[2], src1.w = temp[10], srcp.xyz = (src1 + src0) MAD temp[9].xyz, src0.www, srcp.xyz, src0.000 RSQ temp[10].w, |src1.w| 8: src0.xyz = temp[2], src0.w = temp[10], src1.w = temp[7], src2.w = temp[0] MAD temp[10].xyz, src0.www, src0.xyz, src0.000 MAD_SAT temp[11].w, src1.w, src2.w, src0.0 9: src0.xyz = temp[1], src0.w = temp[11], src1.xyz = temp[3] MAD temp[2].xyz, src0.xxx, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 10: src0.xyz = temp[1], src1.xyz = temp[4], src2.xyz = temp[2] MAD temp[2].xyz, src0.yyy, src1.xyz, src2.xyz 11: src0.xyz = temp[1], src1.xyz = temp[5], src2.xyz = temp[2] MAD temp[2].xyz, src0.zzz, src1.xyz, src2.xyz 12: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[2].w, src0._, src0._ 13: src0.xyz = temp[7], src0.w = temp[2], src1.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.zzz, src0.000 RSQ temp[2].w, |src0.w| 14: src0.xyz = temp[2], src0.w = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src0.000 15: src0.xyz = temp[9], src1.xyz = temp[2] DP3_SAT temp[3].x, src0.xyz, src1.xyz 16: src0.xyz = temp[2], src1.xyz = const[1], src2.xyz = temp[3] DP3 temp[4].x, src0.xyz, src1.xyz LG2 temp[5].w, src2.x 17: src0.xyz = temp[4], src0.w = temp[5], src1.w = const[5] MAD temp[4].x, src0.x__, src0.111, src0.H__ MAD temp[5].w, src0.w, src1.w, src0.0 18: src0.w = temp[5] REPL_ALPHA temp[3].x EX2, src0.w 19: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[3].x, src0.x__, src1.x__, src0.000 20: src0.xyz = temp[3], src1.xyz = temp[8] MAD temp[3].x, src0.x__, src1.x__, src0.000 21: src0.xyz = temp[4], src1.xyz = const[0] MAX temp[4].x, src0.x__, src1.y__ 22: src0.xyz = temp[4], src1.xyz = temp[7], src2.xyz = temp[3] MAD temp[7].xyz, src0.xxx, src1.xyz, src2.xxx 23: src0.xyz = temp[7], src1.xyz = temp[0] MAD temp[7].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[1], src1.xyz = temp[7] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 25: src0.xyz = temp[8], src1.xyz = temp[0], src2.xyz = temp[7] MAD temp[7].xyz, src0.yyy, src1.xyz, src2.xyz 26: src0.xyz = temp[10], src1.xyz = temp[2] DP3 temp[0].x, src0.xyz, src1.xyz 27: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 28: src0.xyz = temp[1], src1.xyz = const[5], src2.xyz = temp[10] MAD temp[1].xyz, src0.xyz, src1.yyy, -src2.xyz 29: src0.xyz = temp[0] MAX temp[0].x, src0.x__, src0.0__ 30: src0.xyz = const[2], src1.xyz = temp[0] MAD temp[0].x, src0.x__, src1.x__, src0.y__ 31: src0.xyz = temp[8], src1.xyz = temp[0] MAD temp[8].z, src0.__z, src1.__x, src0.000 32: src0.xyz = temp[6], src1.xyz = const[3] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 33: BEGIN_TEX; 34: TEX temp[0].xyz, temp[1].xyz_, CUBE[2]; 35: src0.xyz = temp[0], src1.xyz = temp[7] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 36: src0.xyz = temp[8], src1.xyz = temp[0], src2.xyz = temp[7] MAD_SAT temp[11].xyz, src0.zzz, src1.xyz, src2.xyz 37: src0.xyz = temp[11], src1.xyz = const[4] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 38: src0.xyz = temp[2], src1.xyz = temp[0], src2.xyz = const[4] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe407f401: src: 1 R/G/A/A dst: 7 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe408f401: src: 1 R/G/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x008100a1:DP dest:10 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000bd8:Addr0: 216c, Addr1: 2t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810091:DP dest:9 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000051:DP3 dest:5 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000009:Addr0: 9t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0004c09b:RSQ dest:9 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00db4010:MAD dest:1 rgb_C_src:0 H/H/H 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000901:Addr0: 1c, Addr1: 2t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00002809:Addr0: 9t, Addr1: 10t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0004d0ab:RSQ dest:10 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490090:MAD dest:9 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c0a:Addr0: 10t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d0b0:MAD dest:11 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x204900a0:MAD dest:10 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 8 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00000c01:Addr0: 1t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x0000000b:Addr0: 11t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00201001:Addr0: 1t, Addr1: 4t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442124:rgb_A_src:0 G/G/G 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222020:MAD dest:2 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00201401:Addr0: 1t, Addr1: 5t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442248:rgb_A_src:0 B/B/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222020:MAD dest:2 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810021:DP dest:2 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000041:DP3 dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040007:Addr0: 7t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0 4 ALPHA_INST:0x0004c02b:RSQ dest:2 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000809:Addr0: 9t, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00340402:Addr0: 2t, Addr1: 1c, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00002059:LN2 dest:5 alp_A_src:2 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000041:DP3 dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00041405:Addr0: 5t, Addr1: 5c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0068c050:MAD dest:5 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20494040:MAD dest:4 rgb_C_src:0 H/0/0 0 alp_C_src:0 0 0 17 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c068:EX2 dest:6 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000003a:SOP dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040003:Addr0: 3t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00002003:Addr0: 3t, Addr1: 8t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040004:Addr0: 4t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0090a480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 G/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000045:MAX dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00301c04:Addr0: 4t, Addr1: 7t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00002070:MAD dest:7 rgb_C_src:2 R/R/R 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001c01:Addr0: 1t, Addr1: 7t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 24 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00700008:Addr0: 8t, Addr1: 0t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442124:rgb_A_src:0 G/G/G 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222070:MAD dest:7 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x0000080a:Addr0: 10t, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000001:DP3 dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000800:Addr0: 0t, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 27 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00a41401:Addr0: 1t, Addr1: 5c, Addr2: 10t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0024a220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 G/G/G 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a22010:MAD dest:1 rgb_C_src:2 R/G/B 1 alp_C_src:0 R 0 28 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00920480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 0/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000005:MAX dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 29 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000102:Addr0: 2c, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00484000:MAD dest:0 rgb_C_src:0 G/0/0 0 alp_C_src:0 R 0 30 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x00000008:Addr0: 8t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00122290:rgb_A_src:0 0/0/B 0 rgb_B_src:1 0/0/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490080:MAD dest:8 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 31 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040c06:Addr0: 6t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485020:MAD dest:2 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 32 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400e401: src: 1 R/G/B/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 33 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001c00:Addr0: 0t, Addr1: 7t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 34 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00700008:Addr0: 8t, Addr1: 0t, Addr2: 7t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442248:rgb_A_src:0 B/B/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x002220b0:MAD dest:11 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 35 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x0004100b:Addr0: 11t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 36 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10400002:Addr0: 2t, Addr1: 0t, Addr2: 4c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0..2] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: MUL_SAT TEMP[1], IN[2], TEMP[0] 2: MAD_SAT TEMP[2].x, IN[0].xxxx, CONST[0].xxxx, CONST[0].yyyy 3: LRP OUT[0].xyz, TEMP[2].xxxx, TEMP[1], CONST[1] 4: MOV OUT[0].w, TEMP[1] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: LRP output[0].xyz, temp[2].xxxx, temp[1], const[1]; 4: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].xxxx, const[0].xxxx, const[0].yyyy; 3: ADD temp[3], temp[1], -const[1]; 4: MAD output[0].xyz, temp[2].xxxx, temp[3], const[1]; 5: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL_SAT temp[1], input[2], temp[0]; 2: MAD_SAT temp[2].x, input[0].x___, const[0].x___, const[0].y___; 3: ADD temp[3].xyz, temp[1].xyz_, -const[1].xyz_; 4: MAD output[0].xyz, temp[2].xxx_, temp[3].xyz_, const[1].xyz_; 5: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: src0.xyz = input[2], src0.w = input[2], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: src0.xyz = input[0], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 3: src0.xyz = temp[1], src1.xyz = const[1] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz 4: src0.xyz = temp[2], src1.xyz = temp[3], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 5: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: src0.xyz = input[2], src0.w = input[2], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[1].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[1] MAD temp[3].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 4: src0.xyz = input[0], src1.xyz = const[0] MAD_SAT temp[2].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[2], src1.xyz = temp[3], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], temp[0].xy__, 2D[0]; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[2], src1.xyz = const[0] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[1] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040400:Addr0: 0t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 3 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10100400:Addr0: 0t, Addr1: 1t, Addr2: 1c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program bozco fragged morgo morgo fragged bozco FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0] DCL CONST[2] DCL CONST[4..9] DCL TEMP[0..11] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: DPH_SAT TEMP[9].x, -IN[4], IN[4] 26: MAD TEMP[0].xyz, CONST[6], TEMP[9].xxxx, TEMP[0] 27: MUL TEMP[6].xyz, TEMP[6], TEMP[0] 28: TEX TEMP[10], TEMP[5], SAMP[4], 2D 29: MAD_SAT TEMP[1].xyz, TEMP[10], CONST[7], TEMP[6] 30: MAD_SAT TEMP[11].x, IN[0].xxxx, CONST[8].xxxx, CONST[8].yyyy 31: LRP OUT[0].xyz, TEMP[11].xxxx, TEMP[1], CONST[9] 32: MOV OUT[0].w, TEMP[1] 33: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[10].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[10], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 30: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 31: LRP output[0].xyz, temp[11].xxxx, temp[1], const[9]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[10].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[10], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 30: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 31: LRP output[0].xyz, temp[11].xxxx, temp[1], const[9]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[10].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[10], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 30: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 31: LRP output[0].xyz, temp[11].xxxx, temp[1], const[9]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[10].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[10], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 30: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 31: LRP output[0].xyz, temp[11].xxxx, temp[1], const[9]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[10].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[10], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 30: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 31: LRP output[0].xyz, temp[11].xxxx, temp[1], const[9]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[10].xxxx, -const[10].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[10].xxxx, -const[10].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[12].w, temp[8].wwww; 20: MUL temp[12].w, temp[12].wwww, const[10].zzzz; 21: EX2 temp[8].w, temp[12].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 29: MUL temp[6].xyz, temp[6], temp[0]; 30: TEX temp[10], temp[5], 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10], const[7], temp[6]; 32: MAD_SAT temp[11].x, input[0].xxxx, const[8].xxxx, const[8].yyyy; 33: ADD temp[13], temp[1], -const[9]; 34: MAD output[0].xyz, temp[11].xxxx, temp[13], const[9]; 35: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[10].xxx_, -const[10].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[10].xxx_, -const[10].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[12].w, temp[8].w___; 20: MUL temp[12].w, temp[12].___w, const[10].___z; 21: EX2 temp[8].w, temp[12].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 29: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 30: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 31: MAD_SAT temp[1].xyz, temp[10].xyz_, const[7].xyz_, temp[6].xyz_; 32: MAD_SAT temp[11].x, input[0].x___, const[8].x___, const[8].y___; 33: ADD temp[13].xyz, temp[1].xyz_, -const[9].xyz_; 34: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[9].xyz_; 35: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[10].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[10].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[10].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 29: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 30: MAD_SAT temp[1].xyz, temp[10].xyz_, const[7].xyz_, temp[6].xyz_; 31: MAD_SAT temp[11].x, input[0].x___, const[8].x___, const[8].y___; 32: ADD temp[13].xyz, temp[1].xyz_, -const[9].xyz_; 33: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[9].xyz_; 34: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[10].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[10].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[10].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 29: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 30: MAD_SAT temp[1].xyz, temp[10].xyz_, const[7].xyz_, temp[6].xyz_; 31: MAD_SAT temp[11].x, input[0].x___, const[8].x___, const[8].y___; 32: ADD temp[13].xyz, temp[1].xyz_, -const[9].xyz_; 33: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[9].xyz_; 34: MOV output[0].w, temp[1].___w; CONST[8] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[12].w, temp[8].w___; 19: MUL temp[12].w, temp[12].___w, const[8].___z; 20: EX2 temp[8].w, temp[12].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[4].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 29: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 30: MAD_SAT temp[1].xyz, temp[10].xyz_, const[5].xyz_, temp[6].xyz_; 31: MAD_SAT temp[11].x, input[0].x___, const[6].x___, const[6].y___; 32: ADD temp[13].xyz, temp[1].xyz_, -const[7].xyz_; 33: MAD output[0].xyz, temp[11].xxx_, temp[13].xyz_, const[7].xyz_; 34: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[8] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[8] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[12].w, src0.w 19: src0.xyz = const[8], src0.w = temp[12] MAD temp[12].w, src0.w, src0.z, src0.0 20: src0.w = temp[12] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 27: src0.xyz = const[4], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 28: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 29: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 30: src0.xyz = temp[10], src1.xyz = const[5], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 31: src0.xyz = input[0], src1.xyz = const[6] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ 32: src0.xyz = temp[1], src1.xyz = const[7] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 33: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[7] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 34: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[8] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 11: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[6] MAD_SAT temp[11].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[10].xyz, temp[5].xy__, 2D[4]; 14: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 15: TEX temp[6], temp[5].xy__, 2D[0]; 16: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[7], src1.xyz = const[8] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 19: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[12].w, src0.w 20: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = temp[2], src2.xyz = const[8] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[12].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[0], src0.w = temp[12], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 22: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[6], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 23: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 24: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[10], src1.xyz = const[5], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 26: src0.xyz = temp[1], src1.xyz = const[7] MAD temp[13].xyz, src0.xyz, src0.111, -src1.xyz 27: src0.xyz = temp[11], src1.xyz = temp[13], src2.xyz = const[7] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[8].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[8] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[6] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1], src1.w = temp[5], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = const[6] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[4].xyz, temp[2].xy__, 2D[4]; 14: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 15: TEX temp[2], temp[2].xy__, 2D[0]; 16: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 17: src0.xyz = temp[3], src1.xyz = const[8] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 18: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 19: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 20: src0.xyz = temp[5], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[8] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 21: src0.xyz = temp[5], src0.w = temp[3], src1.xyz = const[3] MAX temp[5].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 22: src0.xyz = const[4], src0.w = temp[7], src1.xyz = temp[8], src1.w = temp[2], src2.xyz = temp[5] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[7].w, src0.w, src1.w, src0.0 23: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 24: src0.xyz = temp[2], src1.xyz = temp[5] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[4], src1.xyz = const[5], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 26: src0.xyz = temp[0], src1.xyz = const[7] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 27: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = const[7] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f401: src: 1 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000082:DP4 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00042001:Addr0: 1t, Addr1: 8c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001803:Addr0: 3t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 7 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001407:Addr0: 7t, Addr1: 5t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041804:Addr0: 4t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485060:MAD dest:6 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06440000: id: 4 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe404f402: src: 2 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00042003:Addr0: 3t, Addr1: 8c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 16 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10800405:Addr0: 5t, Addr1: 1t, Addr2: 8c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c05:Addr0: 5t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000055:MAX dest:5 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00502104:Addr0: 4c, Addr1: 8t, Addr2: 5t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20222050:MAD dest:5 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001402:Addr0: 2t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00241404:Addr0: 4t, Addr1: 5c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 24 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041c00:Addr0: 0t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 25 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10700006:Addr0: 6t, Addr1: 0t, Addr2: 7c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL CONST[2] DCL CONST[4..8] DCL TEMP[0..10] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: DPH_SAT TEMP[9].x, -IN[4], IN[4] 26: MAD TEMP[0].xyz, CONST[6], TEMP[9].xxxx, TEMP[0] 27: MUL_SAT TEMP[1].xyz, TEMP[6], TEMP[0] 28: MAD_SAT TEMP[10].x, IN[0].xxxx, CONST[7].xxxx, CONST[7].yyyy 29: LRP OUT[0].xyz, TEMP[10].xxxx, TEMP[1], CONST[8] 30: MOV OUT[0].w, TEMP[1] 31: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: DPH_SAT temp[9].x, -input[4], input[4]; 26: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 29: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 30: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[11].w, temp[8].wwww; 20: MUL temp[11].w, temp[11].wwww, const[9].zzzz; 21: EX2 temp[8].w, temp[11].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6], temp[9].xxxx, temp[0]; 29: MUL_SAT temp[1].xyz, temp[6], temp[0]; 30: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 31: ADD temp[12], temp[1], -const[8]; 32: MAD output[0].xyz, temp[10].xxxx, temp[12], const[8]; 33: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -const[9].yyy_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -const[9].yyy_; 14: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 15: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 16: RSQ temp[8].w, |temp[8].w___|; 17: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 18: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 19: LG2 temp[11].w, temp[8].w___; 20: MUL temp[11].w, temp[11].___w, const[9].___z; 21: EX2 temp[8].w, temp[11].w___; 22: MUL temp[8].w, temp[8].___w, temp[6].___w; 23: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 24: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 25: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 26: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 27: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 28: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 29: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 30: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 31: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 32: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 33: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[6].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; CONST[7] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: MUL_SAT temp[1].w, temp[0].___w, const[0].___w; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: MAD temp[2].xyz, temp[2].xyz_, const[7].xxx_, -none.111_; 4: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 5: RSQ temp[3].w, |temp[3].w___|; 6: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 9: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: MAD temp[7].xyz, temp[7].xyz_, const[7].xxx_, -none.111_; 14: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[7].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 26: DP4_SAT temp[9].x, input[4].-x-y-z1, input[4]; 27: MAD temp[0].xyz, const[4].xyz_, temp[9].xxx_, temp[0].xyz_; 28: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 29: MAD_SAT temp[10].x, input[0].x___, const[5].x___, const[5].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[6].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[6].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[1]; 1: src0.w = temp[0], src1.w = const[0] MAD_SAT temp[1].w, src0.w, src1.w, src0.0 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: src0.xyz = temp[2], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.w = temp[3] RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 7: TEX temp[4].w, input[1].xy__, 2D[3]; 8: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 10: TEX temp[6], temp[5].xy__, 2D[0]; 11: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 14: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 15: src0.w = temp[8] RSQ temp[8].w, |src0.w| 16: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.w = temp[8] LG2 temp[11].w, src0.w 19: src0.xyz = const[7], src0.w = temp[11] MAD temp[11].w, src0.w, src0.z, src0.0 20: src0.w = temp[11] EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 24: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 25: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 26: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 27: src0.xyz = const[4], src1.xyz = temp[9], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 28: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 29: src0.xyz = input[0], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ 30: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 32: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[4], src0.w = input[4] DP4_SAT temp[9].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src1.w = temp[0], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src1.w, src2.w, src0.0 11: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 14: TEX temp[6], temp[5].xy__, 2D[0]; 15: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[11].w, src0.w 19: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = temp[2], src2.xyz = const[7] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[11].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 21: src0.xyz = const[4], src0.w = temp[8], src1.xyz = temp[9], src1.w = temp[6], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 25: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[3], src0.w = temp[3] DP4_SAT temp[8].x, -src0.xyz, src0.xyz DP4_SAT, src0.1, src0.w 5: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 6: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[7] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 7: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[6] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 8: src0.xyz = temp[3], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 9: src0.xyz = temp[3], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 10: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1], src1.w = temp[5], src2.w = const[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src1.w, src2.w, src0.0 11: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = const[5] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 12: BEGIN_TEX; 13: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 14: TEX temp[2], temp[2].xy__, 2D[0]; 15: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[3], src1.xyz = const[7] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 18: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 19: src0.xyz = temp[5], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[7] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[5], src0.w = temp[3], src1.xyz = const[3] MAX temp[5].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 21: src0.xyz = const[4], src0.w = temp[7], src1.xyz = temp[8], src1.w = temp[2], src2.xyz = temp[5] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[7].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[2], src1.xyz = temp[5] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[0], src1.xyz = const[6] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 25: src0.xyz = temp[4], src1.xyz = temp[0], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f401: src: 1 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00180804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440a20:rgb_A_src:0 R/G/B 1 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00618091:DP dest:9 alp_A_src:0 1 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000082:DP4 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041c01:Addr0: 1t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 6 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001803:Addr0: 3t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 7 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x10001407:Addr0: 7t, Addr1: 5t, Addr2: 0c, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0070d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:2 A 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041404:Addr0: 4t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485040:MAD dest:4 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041c03:Addr0: 3t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 15 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10700405:Addr0: 5t, Addr1: 1t, Addr2: 7c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c05:Addr0: 5t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000055:MAX dest:5 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00502104:Addr0: 4c, Addr1: 8t, Addr2: 5t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20222050:MAD dest:5 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 20 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001402:Addr0: 2t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041800:Addr0: 0t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 23 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10600004:Addr0: 4t, Addr1: 0t, Addr2: 6c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL IN[3], GENERIC[1], PERSPECTIVE DCL IN[4], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..2] DCL CONST[4..5] DCL TEMP[0..6] IMM FLT32 { 128.0000, 0.5000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[0], 2D 1: DP3 TEMP[1].w, IN[3], IN[3] 2: RSQ TEMP[1].w, TEMP[1].wwww 3: MUL TEMP[1].xyz, TEMP[1].wwww, IN[3] 4: DP3 TEMP[2].w, IN[4], IN[4] 5: RSQ TEMP[2].w, TEMP[2].wwww 6: MUL TEMP[2].xyz, TEMP[2].wwww, IN[4] 7: DP3_SAT TEMP[3].x, TEMP[2], TEMP[1] 8: POW TEMP[3].x, TEMP[3].xxxx, IMM[0].xxxx 9: MUL TEMP[3].x, TEMP[3].xxxx, CONST[1].xxxx 10: DP3 TEMP[4].x, TEMP[1], CONST[2] 11: ADD TEMP[4].x, TEMP[4].xxxx, IMM[0].yyyy 12: MAX TEMP[4].x, TEMP[4].xxxx, CONST[1].yyyy 13: MAD TEMP[0].xyz, TEMP[4].xxxx, TEMP[0], TEMP[3].xxxx 14: MUL_SAT TEMP[5], TEMP[0], IN[0] 15: MAD_SAT TEMP[6].x, IN[1].xxxx, CONST[4].xxxx, CONST[4].yyyy 16: LRP OUT[0].xyz, TEMP[6].xxxx, TEMP[5], CONST[5] 17: MOV OUT[0].w, TEMP[5] 18: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, temp[1].wwww; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, temp[2].wwww; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: POW temp[3].x, temp[3].xxxx, const[6].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 10: DP3 temp[4].x, temp[1], const[2]; 11: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 12: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 13: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 14: MUL_SAT temp[5], temp[0], input[0]; 15: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 16: LRP output[0].xyz, temp[6].xxxx, temp[5], const[5]; 17: MOV output[0].w, temp[5]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, temp[1].wwww; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, temp[2].wwww; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: POW temp[3].x, temp[3].xxxx, const[6].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 10: DP3 temp[4].x, temp[1], const[2]; 11: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 12: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 13: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 14: MUL_SAT temp[5], temp[0], input[0]; 15: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 16: LRP output[0].xyz, temp[6].xxxx, temp[5], const[5]; 17: MOV output[0].w, temp[5]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, temp[1].wwww; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, temp[2].wwww; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: POW temp[3].x, temp[3].xxxx, const[6].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 10: DP3 temp[4].x, temp[1], const[2]; 11: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 12: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 13: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 14: MUL_SAT temp[5], temp[0], input[0]; 15: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 16: LRP output[0].xyz, temp[6].xxxx, temp[5], const[5]; 17: MOV output[0].w, temp[5]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, temp[1].wwww; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, temp[2].wwww; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: POW temp[3].x, temp[3].xxxx, const[6].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 10: DP3 temp[4].x, temp[1], const[2]; 11: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 12: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 13: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 14: MUL_SAT temp[5], temp[0], input[0]; 15: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 16: LRP output[0].xyz, temp[6].xxxx, temp[5], const[5]; 17: MOV output[0].w, temp[5]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, temp[1].wwww; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, temp[2].wwww; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: POW temp[3].x, temp[3].xxxx, const[6].xxxx; 9: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 10: DP3 temp[4].x, temp[1], const[2]; 11: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 12: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 13: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 14: MUL_SAT temp[5], temp[0], input[0]; 15: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 16: LRP output[0].xyz, temp[6].xxxx, temp[5], const[5]; 17: MOV output[0].w, temp[5]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[0]; 1: DP3 temp[1].w, input[3], input[3]; 2: RSQ temp[1].w, |temp[1].wwww|; 3: MUL temp[1].xyz, temp[1].wwww, input[3]; 4: DP3 temp[2].w, input[4], input[4]; 5: RSQ temp[2].w, |temp[2].wwww|; 6: MUL temp[2].xyz, temp[2].wwww, input[4]; 7: DP3_SAT temp[3].x, temp[2], temp[1]; 8: LG2 temp[7].w, temp[3].xxxx; 9: MUL temp[7].w, temp[7].wwww, const[6].xxxx; 10: EX2 temp[3].x, temp[7].wwww; 11: MUL temp[3].x, temp[3].xxxx, const[1].xxxx; 12: DP3 temp[4].x, temp[1], const[2]; 13: ADD temp[4].x, temp[4].xxxx, const[6].yyyy; 14: MAX temp[4].x, temp[4].xxxx, const[1].yyyy; 15: MAD temp[0].xyz, temp[4].xxxx, temp[0], temp[3].xxxx; 16: MUL_SAT temp[5], temp[0], input[0]; 17: MAD_SAT temp[6].x, input[1].xxxx, const[4].xxxx, const[4].yyyy; 18: ADD temp[8], temp[5], -const[5]; 19: MAD output[0].xyz, temp[6].xxxx, temp[8], const[5]; 20: MOV output[0].w, temp[5]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: DP3 temp[1].w, input[3].xyz_, input[3].xyz_; 2: RSQ temp[1].w, |temp[1].w___|; 3: MUL temp[1].xyz, temp[1].www_, input[3].xyz_; 4: DP3 temp[2].w, input[4].xyz_, input[4].xyz_; 5: RSQ temp[2].w, |temp[2].w___|; 6: MUL temp[2].xyz, temp[2].www_, input[4].xyz_; 7: DP3_SAT temp[3].x, temp[2].xyz_, temp[1].xyz_; 8: LG2 temp[7].w, temp[3].x___; 9: MUL temp[7].w, temp[7].___w, const[6].___x; 10: EX2 temp[3].x, temp[7].w___; 11: MUL temp[3].x, temp[3].x___, const[1].x___; 12: DP3 temp[4].x, temp[1].xyz_, const[2].xyz_; 13: ADD temp[4].x, temp[4].x___, const[6].y___; 14: MAX temp[4].x, temp[4].x___, const[1].y___; 15: MAD temp[0].xyz, temp[4].xxx_, temp[0].xyz_, temp[3].xxx_; 16: MUL_SAT temp[5], temp[0], input[0]; 17: MAD_SAT temp[6].x, input[1].x___, const[4].x___, const[4].y___; 18: ADD temp[8].xyz, temp[5].xyz_, -const[5].xyz_; 19: MAD output[0].xyz, temp[6].xxx_, temp[8].xyz_, const[5].xyz_; 20: MOV output[0].w, temp[5].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: DP3 temp[1].w, input[3].xyz_, input[3].xyz_; 2: RSQ temp[1].w, |temp[1].w___|; 3: MUL temp[1].xyz, temp[1].www_, input[3].xyz_; 4: DP3 temp[2].w, input[4].xyz_, input[4].xyz_; 5: RSQ temp[2].w, |temp[2].w___|; 6: MUL temp[2].xyz, temp[2].www_, input[4].xyz_; 7: DP3_SAT temp[3].x, temp[2].xyz_, temp[1].xyz_; 8: LG2 temp[7].w, temp[3].x___; 9: MUL temp[7].w, temp[7].___w, const[6].___x; 10: EX2 temp[3].x, temp[7].w___; 11: MUL temp[3].x, temp[3].x___, const[1].x___; 12: DP3 temp[4].x, temp[1].xyz_, const[2].xyz_; 13: ADD temp[4].x, temp[4].x___, none.H___; 14: MAX temp[4].x, temp[4].x___, const[1].y___; 15: MAD temp[0].xyz, temp[4].xxx_, temp[0].xyz_, temp[3].xxx_; 16: MUL_SAT temp[5], temp[0], input[0]; 17: MAD_SAT temp[6].x, input[1].x___, const[4].x___, const[4].y___; 18: ADD temp[8].xyz, temp[5].xyz_, -const[5].xyz_; 19: MAD output[0].xyz, temp[6].xxx_, temp[8].xyz_, const[5].xyz_; 20: MOV output[0].w, temp[5].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: DP3 temp[1].w, input[3].xyz_, input[3].xyz_; 2: RSQ temp[1].w, |temp[1].w___|; 3: MUL temp[1].xyz, temp[1].www_, input[3].xyz_; 4: DP3 temp[2].w, input[4].xyz_, input[4].xyz_; 5: RSQ temp[2].w, |temp[2].w___|; 6: MUL temp[2].xyz, temp[2].www_, input[4].xyz_; 7: DP3_SAT temp[3].x, temp[2].xyz_, temp[1].xyz_; 8: LG2 temp[7].w, temp[3].x___; 9: MUL temp[7].w, temp[7].___w, const[6].___x; 10: EX2 temp[3].x, temp[7].w___; 11: MUL temp[3].x, temp[3].x___, const[1].x___; 12: DP3 temp[4].x, temp[1].xyz_, const[2].xyz_; 13: ADD temp[4].x, temp[4].x___, none.H___; 14: MAX temp[4].x, temp[4].x___, const[1].y___; 15: MAD temp[0].xyz, temp[4].xxx_, temp[0].xyz_, temp[3].xxx_; 16: MUL_SAT temp[5], temp[0], input[0]; 17: MAD_SAT temp[6].x, input[1].x___, const[4].x___, const[4].y___; 18: ADD temp[8].xyz, temp[5].xyz_, -const[5].xyz_; 19: MAD output[0].xyz, temp[6].xxx_, temp[8].xyz_, const[5].xyz_; 20: MOV output[0].w, temp[5].___w; CONST[4] = { 128.0000 0.5000 0.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: DP3 temp[1].w, input[3].xyz_, input[3].xyz_; 2: RSQ temp[1].w, |temp[1].w___|; 3: MUL temp[1].xyz, temp[1].www_, input[3].xyz_; 4: DP3 temp[2].w, input[4].xyz_, input[4].xyz_; 5: RSQ temp[2].w, |temp[2].w___|; 6: MUL temp[2].xyz, temp[2].www_, input[4].xyz_; 7: DP3_SAT temp[3].x, temp[2].xyz_, temp[1].xyz_; 8: LG2 temp[7].w, temp[3].x___; 9: MUL temp[7].w, temp[7].___w, const[4].___x; 10: EX2 temp[3].x, temp[7].w___; 11: MUL temp[3].x, temp[3].x___, const[0].x___; 12: DP3 temp[4].x, temp[1].xyz_, const[1].xyz_; 13: ADD temp[4].x, temp[4].x___, none.H___; 14: MAX temp[4].x, temp[4].x___, const[0].y___; 15: MAD temp[0].xyz, temp[4].xxx_, temp[0].xyz_, temp[3].xxx_; 16: MUL_SAT temp[5], temp[0], input[0]; 17: MAD_SAT temp[6].x, input[1].x___, const[2].x___, const[2].y___; 18: ADD temp[8].xyz, temp[5].xyz_, -const[3].xyz_; 19: MAD output[0].xyz, temp[6].xxx_, temp[8].xyz_, const[3].xyz_; 20: MOV output[0].w, temp[5].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 2: src0.w = temp[1] RSQ temp[1].w, |src0.w| 3: src0.xyz = input[3], src0.w = temp[1] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 4: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[2].w, src0._, src0._ 5: src0.w = temp[2] RSQ temp[2].w, |src0.w| 6: src0.xyz = input[4], src0.w = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src0.000 7: src0.xyz = temp[2], src1.xyz = temp[1] DP3_SAT temp[3].x, src0.xyz, src1.xyz 8: src0.xyz = temp[3] LG2 temp[7].w, src0.x 9: src0.xyz = const[4], src0.w = temp[7] MAD temp[7].w, src0.w, src0.x, src0.0 10: src0.w = temp[7] REPL_ALPHA temp[3].x EX2, src0.w 11: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[3].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[1], src1.xyz = const[1] DP3 temp[4].x, src0.xyz, src1.xyz 13: src0.xyz = temp[4] MAD temp[4].x, src0.x__, src0.111, src0.H__ 14: src0.xyz = temp[4], src1.xyz = const[0] MAX temp[4].x, src0.x__, src1.y__ 15: src0.xyz = temp[4], src1.xyz = temp[0], src2.xyz = temp[3] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 16: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD_SAT temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[5].w, src0.w, src1.w, src0.0 17: src0.xyz = input[1], src1.xyz = const[2] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ 18: src0.xyz = temp[5], src1.xyz = const[3] MAD temp[8].xyz, src0.xyz, src0.111, -src1.xyz 19: src0.xyz = temp[6], src1.xyz = temp[8], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 20: src0.w = temp[5] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[2].xy__, 2D[0]; 2: src0.xyz = input[4] DP3, src0.xyz, src0.xyz DP3 temp[2].w, src0._, src0._ 3: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 4: src0.xyz = input[1], src0.w = temp[1], src1.xyz = const[2] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ RSQ temp[1].w, |src0.w| 5: src0.xyz = input[3], src0.w = temp[1], src1.w = temp[2] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 RSQ temp[2].w, |src1.w| 6: src0.xyz = input[4], src0.w = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src0.000 7: src0.xyz = temp[2], src1.xyz = temp[1] DP3_SAT temp[3].x, src0.xyz, src1.xyz 8: src0.xyz = temp[1], src1.xyz = const[1], src2.xyz = temp[3] DP3 temp[4].x, src0.xyz, src1.xyz LG2 temp[7].w, src2.x 9: src0.xyz = temp[4], src0.w = temp[7], src1.xyz = const[4] MAD temp[4].x, src0.x__, src0.111, src0.H__ MAD temp[7].w, src0.w, src1.x, src0.0 10: src0.w = temp[7] REPL_ALPHA temp[3].x EX2, src0.w 11: src0.xyz = temp[3], src1.xyz = const[0] MAD temp[3].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[4], src1.xyz = const[0] MAX temp[4].x, src0.x__, src1.y__ 13: src0.xyz = temp[4], src1.xyz = temp[0], src2.xyz = temp[3] MAD temp[0].xyz, src0.xxx, src1.xyz, src2.xxx 14: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[0], src1.w = input[0] MAD_SAT temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[5].w, src0.w, src1.w, src0.0 15: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = const[3] MAD temp[8].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[6], src1.xyz = temp[8], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], temp[1].xy__, 2D[0]; 2: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[6].w, src0._, src0._ 3: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[5].w, src0._, src0._ 4: src0.xyz = temp[4], src0.w = temp[5], src1.xyz = const[2] MAD_SAT temp[4].x, src0.x__, src1.x__, src1.y__ RSQ temp[5].w, |src0.w| 5: src0.xyz = temp[2], src0.w = temp[5], src1.w = temp[6] MAD temp[5].xyz, src0.www, src0.xyz, src0.000 RSQ temp[6].w, |src1.w| 6: src0.xyz = temp[3], src0.w = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src0.000 7: src0.xyz = temp[6], src1.xyz = temp[5] DP3_SAT temp[2].x, src0.xyz, src1.xyz 8: src0.xyz = temp[5], src1.xyz = const[1], src2.xyz = temp[2] DP3 temp[3].x, src0.xyz, src1.xyz LG2 temp[5].w, src2.x 9: src0.xyz = temp[3], src0.w = temp[5], src1.xyz = const[4] MAD temp[3].x, src0.x__, src0.111, src0.H__ MAD temp[5].w, src0.w, src1.x, src0.0 10: src0.w = temp[5] REPL_ALPHA temp[2].x EX2, src0.w 11: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].x, src0.x__, src1.x__, src0.000 12: src0.xyz = temp[3], src1.xyz = const[0] MAX temp[3].x, src0.x__, src1.y__ 13: src0.xyz = temp[3], src1.xyz = temp[1], src2.xyz = temp[2] MAD temp[1].xyz, src0.xxx, src1.xyz, src2.xxx 14: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src0.w, src1.w, src0.0 15: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[3] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[4], src1.xyz = temp[0], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810061:DP dest:6 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810051:DP dest:5 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00084804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00040804:Addr0: 4t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x0004c05b:RSQ dest:5 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485040:MAD dest:4 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001805:Addr0: 5t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0004d06b:RSQ dest:6 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000006:Addr0: 6t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00001406:Addr0: 6t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00240405:Addr0: 5t, Addr1: 1c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00002059:LN2 dest:5 alp_A_src:2 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x00041003:Addr0: 3t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0008c050:MAD dest:5 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x20494030:MAD dest:3 rgb_C_src:0 H/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c038:EX2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000002a:SOP dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040003:Addr0: 3t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0090a480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 G/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000035:MAX dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00200403:Addr0: 3t, Addr1: 1t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 14 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040c00:Addr0: 0t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 15 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10300004:Addr0: 4t, Addr1: 0t, Addr2: 3c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program Earathon fragged lucas Earathon fragged DaBesTwIZARD n00b|cheese fragged RrYaAnN 1400959 fragged NOStyle lucas fragged Joseph FRAG DCL IN[0], COLOR, PERSPECTIVE DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..2] DCL TEMP[0..3] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[2], SAMP[1], 2D 2: MUL TEMP[0], TEMP[0], CONST[0] 3: MUL_SAT TEMP[2], TEMP[0], TEMP[1] 4: MOV_SAT TEMP[2].w, IN[1].zzzz 5: MAD_SAT TEMP[3].x, IN[0].xxxx, CONST[1].xxxx, CONST[1].yyyy 6: LRP OUT[0].xyz, TEMP[3].xxxx, TEMP[2], CONST[2] 7: MOV OUT[0].w, TEMP[2] 8: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[2], 2D[1]; 2: MUL temp[0], temp[0], const[0]; 3: MUL_SAT temp[2], temp[0], temp[1]; 4: MOV_SAT temp[2].w, input[1].zzzz; 5: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 6: ADD temp[4], temp[2], -const[2]; 7: MAD output[0].xyz, temp[3].xxxx, temp[4], const[2]; 8: MOV output[0].w, temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0].xyz, input[1].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MUL_SAT temp[2].xyz, temp[0].xyz_, temp[1].xyz_; 4: MOV_SAT temp[2].w, input[1].___z; 5: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 6: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 7: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 8: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0].xyz, input[1].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MUL_SAT temp[2].xyz, temp[0].xyz_, temp[1].xyz_; 4: MOV_SAT temp[2].w, input[1].___z; 5: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 6: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 7: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 8: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0].xyz, input[1].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MUL_SAT temp[2].xyz, temp[0].xyz_, temp[1].xyz_; 4: MOV_SAT temp[2].w, input[1].___z; 5: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 6: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 7: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 8: MOV output[0].w, temp[2].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0].xyz, input[1].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: MUL temp[0].xyz, temp[0].xyz_, const[0].xyz_; 3: MUL_SAT temp[2].xyz, temp[0].xyz_, temp[1].xyz_; 4: MOV_SAT temp[2].w, input[1].___z; 5: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 6: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 7: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 8: MOV output[0].w, temp[2].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0].xyz, input[1].xy__, 2D[0]; 1: TEX temp[1].xyz, input[2].xy__, 2D[1]; 2: src0.xyz = temp[0], src1.xyz = const[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 3: src0.xyz = temp[0], src1.xyz = temp[1] MAD_SAT temp[2].xyz, src0.xyz, src1.xyz, src0.000 4: src0.xyz = input[1] MAD_SAT temp[2].w, src0.z, src0.1, src0.0 5: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 6: src0.xyz = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz 7: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 8: src0.w = temp[2] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0].xyz, input[1].xy__, 2D[0]; 2: TEX temp[1].xyz, input[2].xy__, 2D[1]; 3: src0.xyz = temp[0], src1.xyz = const[0], src2.xyz = input[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[2].w, src2.z, src0.1, src0.0 4: src0.xyz = temp[0], src0.w = temp[2], src1.xyz = temp[1] MAD_SAT temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz 6: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3].xyz, temp[0].xy__, 2D[0]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[1]; 3: src0.xyz = temp[3], src1.xyz = const[0], src2.xyz = temp[0] MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT temp[0].w, src2.z, src0.1, src0.0 4: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = temp[1] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 5: src0.xyz = temp[0], src1.xyz = const[2] MAD temp[1].xyz, src0.xyz, src0.111, -src1.xyz 6: src0.xyz = temp[2], src1.xyz = const[1] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040003:Addr0: 3t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0a000:MAD dest:0 alp_A_src:2 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x000c3805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 4 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040800:Addr0: 0t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21010:MAD dest:1 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10200400:Addr0: 0t, Addr1: 1t, Addr2: 2c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0] DCL CONST[2] DCL CONST[4..7] DCL TEMP[0..9] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: MUL_SAT TEMP[1].xyz, TEMP[6], TEMP[0] 26: MOV_SAT TEMP[1].w, IN[1].zzzz 27: MAD_SAT TEMP[9].x, IN[0].xxxx, CONST[6].xxxx, CONST[6].yyyy 28: LRP OUT[0].xyz, TEMP[9].xxxx, TEMP[1], CONST[7] 29: MOV OUT[0].w, TEMP[1] 30: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MOV_SAT temp[1].w, input[1].zzzz; 27: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 28: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 29: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MOV_SAT temp[1].w, input[1].zzzz; 27: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 28: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 29: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MOV_SAT temp[1].w, input[1].zzzz; 27: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 28: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 29: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MOV_SAT temp[1].w, input[1].zzzz; 27: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 28: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 29: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[8].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL_SAT temp[1].xyz, temp[6], temp[0]; 26: MOV_SAT temp[1].w, input[1].zzzz; 27: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 28: LRP output[0].xyz, temp[9].xxxx, temp[1], const[7]; 29: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[8].xxxx, -const[8].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[8].xxxx, -const[8].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[10].w, temp[8].wwww; 20: MUL temp[10].w, temp[10].wwww, const[8].zzzz; 21: EX2 temp[8].w, temp[10].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: MUL_SAT temp[1].xyz, temp[6], temp[0]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[9].x, input[0].xxxx, const[6].xxxx, const[6].yyyy; 30: ADD temp[11], temp[1], -const[7]; 31: MAD output[0].xyz, temp[9].xxxx, temp[11], const[7]; 32: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -const[8].yyy_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -const[8].yyy_; 13: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 14: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[10].w, temp[8].w___; 19: MUL temp[10].w, temp[10].___w, const[8].___z; 20: EX2 temp[8].w, temp[10].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 27: MOV_SAT temp[1].w, input[1].___z; 28: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 29: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 30: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 31: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[10].w, temp[8].w___; 18: MUL temp[10].w, temp[10].___w, const[8].___z; 19: EX2 temp[8].w, temp[10].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 25: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 26: MOV_SAT temp[1].w, input[1].___z; 27: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 30: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[8].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[8].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[10].w, temp[8].w___; 18: MUL temp[10].w, temp[10].___w, const[8].___z; 19: EX2 temp[8].w, temp[10].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 25: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 26: MOV_SAT temp[1].w, input[1].___z; 27: MAD_SAT temp[9].x, input[0].x___, const[6].x___, const[6].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[7].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[7].xyz_; 30: MOV output[0].w, temp[1].___w; CONST[6] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[6].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[6].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[10].w, temp[8].w___; 18: MUL temp[10].w, temp[10].___w, const[6].___z; 19: EX2 temp[8].w, temp[10].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 25: MUL_SAT temp[1].xyz, temp[6].xyz_, temp[0].xyz_; 26: MOV_SAT temp[1].w, input[1].___z; 27: MAD_SAT temp[9].x, input[0].x___, const[4].x___, const[4].y___; 28: ADD temp[11].xyz, temp[1].xyz_, -const[5].xyz_; 29: MAD output[0].xyz, temp[9].xxx_, temp[11].xyz_, const[5].xyz_; 30: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: src0.xyz = temp[2], src1.xyz = const[6] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 3: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 4: src0.w = temp[3] RSQ temp[3].w, |src0.w| 5: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: src0.xyz = temp[7], src1.xyz = const[6] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 13: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 14: src0.w = temp[8] RSQ temp[8].w, |src0.w| 15: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 16: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 17: src0.w = temp[8] LG2 temp[10].w, src0.w 18: src0.xyz = const[6], src0.w = temp[10] MAD temp[10].w, src0.w, src0.z, src0.0 19: src0.w = temp[10] EX2 temp[8].w, src0.w 20: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 23: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 25: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 26: src0.xyz = input[1] MAD_SAT temp[1].w, src0.z, src0.1, src0.0 27: src0.xyz = input[0], src1.xyz = const[4] MAD_SAT temp[9].x, src0.x__, src1.x__, src1.y__ 28: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 29: src0.xyz = temp[9], src1.xyz = temp[11], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 30: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0].xyz, input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[6] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src2.xyz = input[1], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src2.z, src0.1, src0.0 10: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[4] MAD_SAT temp[9].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 13: TEX temp[6], temp[5].xy__, 2D[0]; 14: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[7], src1.xyz = const[6] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 16: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 17: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[10].w, src0.w 18: src0.xyz = temp[0], src0.w = temp[10], src1.xyz = temp[2], src2.xyz = const[6] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[10].w, src0.w, src2.z, src0.0 19: src0.xyz = temp[0], src0.w = temp[10], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 20: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[6], src1.xyz = temp[0] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[1], src1.xyz = const[5] MAD temp[11].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[9], src1.xyz = temp[11], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4].xyz, temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[5].w, src0._, src0._ 5: src0.xyz = temp[1], src0.w = temp[5], src1.xyz = const[6] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[5].w, |src0.w| 6: src0.xyz = temp[2], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[6] MAD temp[5].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[5], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 8: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 9: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = temp[1], src2.xyz = temp[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src2.z, src0.1, src0.0 10: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = const[4] MAD_SAT temp[5].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 13: TEX temp[2], temp[2].xy__, 2D[0]; 14: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 15: src0.xyz = temp[3], src1.xyz = const[6] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 16: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 17: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 18: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[6] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 19: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = const[3] MAX temp[4].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 20: src0.w = temp[7], src1.w = temp[2] MAD temp[7].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[2], src1.xyz = temp[4] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src0.000 23: src0.xyz = temp[0], src1.xyz = const[5] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 24: src0.xyz = temp[5], src1.xyz = temp[0], src2.xyz = const[5] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe404f401: src: 1 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810051:DP dest:5 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041801:Addr0: 1t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c05b:RSQ dest:5 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001805:Addr0: 5t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 6 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0a000:MAD dest:0 alp_A_src:2 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041003:Addr0: 3t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485050:MAD dest:5 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 11 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041803:Addr0: 3t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 14 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10600404:Addr0: 4t, Addr1: 1t, Addr2: 6c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c04:Addr0: 4t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000045:MAX dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 19 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001002:Addr0: 2t, Addr1: 4t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041400:Addr0: 0t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 22 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10500005:Addr0: 5t, Addr1: 0t, Addr2: 5c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0] DCL CONST[2] DCL CONST[4..8] DCL TEMP[0..10] IMM FLT32 { 2.0000, 1.0000, 32.0000, 0.0000} 0: TEX TEMP[0], IN[2], SAMP[1], 2D 1: MUL_SAT TEMP[1].w, TEMP[0], CONST[0] 2: TEX TEMP[2], IN[2], SAMP[2], 2D 3: MAD TEMP[2], TEMP[2], IMM[0].xxxx, -IMM[0].yyyy 4: DP3 TEMP[3].w, IN[3], IN[3] 5: RSQ TEMP[3].w, TEMP[3].wwww 6: MUL TEMP[3].xyz, TEMP[3].wwww, IN[3] 7: TEX TEMP[4], IN[1], SAMP[3], 2D 8: MAD TEMP[4].w, TEMP[4].wwww, CONST[2].xxxx, CONST[2].yyyy 9: MAD TEMP[5], TEMP[4].wwww, TEMP[3], IN[1] 10: TEX TEMP[6], TEMP[5], SAMP[0], 2D 11: MUL TEMP[6].xyz, TEMP[6], CONST[0] 12: TEX TEMP[7], TEMP[5], SAMP[3], 2D 13: MAD TEMP[7].xyz, TEMP[7], IMM[0].xxxx, -IMM[0].yyyy 14: ADD TEMP[8], TEMP[3], TEMP[2] 15: DP3 TEMP[8].w, TEMP[8], TEMP[8] 16: RSQ TEMP[8].w, TEMP[8].wwww 17: MUL TEMP[8].xyz, TEMP[8].wwww, TEMP[8] 18: DP3_SAT TEMP[8].w, TEMP[8], TEMP[7] 19: POW TEMP[8].w, TEMP[8].wwww, IMM[0].zzzz 20: MUL TEMP[8].w, TEMP[8], TEMP[6] 21: MAD TEMP[6].xyz, TEMP[8].wwww, CONST[4], TEMP[6] 22: DP3_SAT TEMP[2], TEMP[7], TEMP[2] 23: MUL TEMP[0].xyz, TEMP[0], TEMP[2] 24: MAX TEMP[0].xyz, TEMP[0], CONST[5] 25: MUL TEMP[6].xyz, TEMP[6], TEMP[0] 26: TEX TEMP[9], TEMP[5], SAMP[4], 2D 27: MAD_SAT TEMP[1].xyz, TEMP[9], CONST[6], TEMP[6] 28: MOV_SAT TEMP[1].w, IN[1].zzzz 29: MAD_SAT TEMP[10].x, IN[0].xxxx, CONST[7].xxxx, CONST[7].yyyy 30: LRP OUT[0].xyz, TEMP[10].xxxx, TEMP[1], CONST[8] 31: MOV OUT[0].w, TEMP[1] 32: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 30: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 30: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 30: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 30: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, temp[3].wwww; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, temp[8].wwww; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: POW temp[8].w, temp[8].wwww, const[9].zzzz; 20: MUL temp[8].w, temp[8], temp[6]; 21: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 22: DP3_SAT temp[2], temp[7], temp[2]; 23: MUL temp[0].xyz, temp[0], temp[2]; 24: MAX temp[0].xyz, temp[0], const[5]; 25: MUL temp[6].xyz, temp[6], temp[0]; 26: TEX temp[9], temp[5], 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 28: MOV_SAT temp[1].w, input[1].zzzz; 29: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 30: LRP output[0].xyz, temp[10].xxxx, temp[1], const[8]; 31: MOV output[0].w, temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2], 2D[1]; 1: MUL_SAT temp[1].w, temp[0], const[0]; 2: TEX temp[2], input[2], 2D[2]; 3: MAD temp[2], temp[2], const[9].xxxx, -const[9].yyyy; 4: DP3 temp[3].w, input[3], input[3]; 5: RSQ temp[3].w, |temp[3].wwww|; 6: MUL temp[3].xyz, temp[3].wwww, input[3]; 7: TEX temp[4], input[1], 2D[3]; 8: MAD temp[4].w, temp[4].wwww, const[2].xxxx, const[2].yyyy; 9: MAD temp[5], temp[4].wwww, temp[3], input[1]; 10: TEX temp[6], temp[5], 2D[0]; 11: MUL temp[6].xyz, temp[6], const[0]; 12: TEX temp[7], temp[5], 2D[3]; 13: MAD temp[7].xyz, temp[7], const[9].xxxx, -const[9].yyyy; 14: ADD temp[8], temp[3], temp[2]; 15: DP3 temp[8].w, temp[8], temp[8]; 16: RSQ temp[8].w, |temp[8].wwww|; 17: MUL temp[8].xyz, temp[8].wwww, temp[8]; 18: DP3_SAT temp[8].w, temp[8], temp[7]; 19: LG2 temp[11].w, temp[8].wwww; 20: MUL temp[11].w, temp[11].wwww, const[9].zzzz; 21: EX2 temp[8].w, temp[11].wwww; 22: MUL temp[8].w, temp[8], temp[6]; 23: MAD temp[6].xyz, temp[8].wwww, const[4], temp[6]; 24: DP3_SAT temp[2], temp[7], temp[2]; 25: MUL temp[0].xyz, temp[0], temp[2]; 26: MAX temp[0].xyz, temp[0], const[5]; 27: MUL temp[6].xyz, temp[6], temp[0]; 28: TEX temp[9], temp[5], 2D[4]; 29: MAD_SAT temp[1].xyz, temp[9], const[6], temp[6]; 30: MOV_SAT temp[1].w, input[1].zzzz; 31: MAD_SAT temp[10].x, input[0].xxxx, const[7].xxxx, const[7].yyyy; 32: ADD temp[12], temp[1], -const[8]; 33: MAD output[0].xyz, temp[10].xxxx, temp[12], const[8]; 34: MOV output[0].w, temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -const[9].yyy_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -const[9].yyy_; 13: ADD temp[8].xyz, temp[3].xyz_, temp[2].xyz_; 14: DP3 temp[8].w, temp[8].xyz_, temp[8].xyz_; 15: RSQ temp[8].w, |temp[8].w___|; 16: MUL temp[8].xyz, temp[8].www_, temp[8].xyz_; 17: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 18: LG2 temp[11].w, temp[8].w___; 19: MUL temp[11].w, temp[11].___w, const[9].___z; 20: EX2 temp[8].w, temp[11].w___; 21: MUL temp[8].w, temp[8].___w, temp[6].___w; 22: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 23: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 24: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 25: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 26: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 27: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 28: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 29: MOV_SAT temp[1].w, input[1].___z; 30: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 31: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 32: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 33: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[11].w, temp[8].w___; 18: MUL temp[11].w, temp[11].___w, const[9].___z; 19: EX2 temp[8].w, temp[11].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 25: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 26: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 28: MOV_SAT temp[1].w, input[1].___z; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[9].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[2].___x, const[2].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[9].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[11].w, temp[8].w___; 18: MUL temp[11].w, temp[11].___w, const[9].___z; 19: EX2 temp[8].w, temp[11].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[4].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[5].xyz_; 25: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 26: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9].xyz_, const[6].xyz_, temp[6].xyz_; 28: MOV_SAT temp[1].w, input[1].___z; 29: MAD_SAT temp[10].x, input[0].x___, const[7].x___, const[7].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[8].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[8].xyz_; 32: MOV output[0].w, temp[1].___w; CONST[7] = { 2.0000 1.0000 32.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: MAD temp[2].xyz, temp[2].xyz_, const[7].xxx_, -none.111_; 3: DP3 temp[3].w, input[3].xyz_, input[3].xyz_; 4: RSQ temp[3].w, |temp[3].w___|; 5: MUL temp[3].xyz, temp[3].www_, input[3].xyz_; 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: MAD temp[4].w, temp[4].___w, const[1].___x, const[1].___y; 8: MAD temp[5].xy, temp[4].ww__, temp[3].xy__, input[1].xy__; 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: MUL temp[6].xyz, temp[6].xyz_, const[0].xyz_; 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: MAD temp[7].xyz, temp[7].xyz_, const[7].xxx_, -none.111_; 13: DP3 temp[8].w, (temp[2] + temp[3]).xyz_, (temp[2] + temp[3]).xyz_; 14: RSQ temp[8].w, |temp[8].w___|; 15: MUL temp[8].xyz, temp[8].www_, (temp[2] + temp[3]).xyz_; 16: DP3_SAT temp[8].w, temp[8].xyz_, temp[7].xyz_; 17: LG2 temp[11].w, temp[8].w___; 18: MUL temp[11].w, temp[11].___w, const[7].___z; 19: EX2 temp[8].w, temp[11].w___; 20: MUL temp[8].w, temp[8].___w, temp[6].___w; 21: MAD temp[6].xyz, temp[8].www_, const[2].xyz_, temp[6].xyz_; 22: DP3_SAT temp[2].xyz, temp[7].xyz_, temp[2].xyz_; 23: MUL temp[0].xyz, temp[0].xyz_, temp[2].xyz_; 24: MAX temp[0].xyz, temp[0].xyz_, const[3].xyz_; 25: MUL temp[6].xyz, temp[6].xyz_, temp[0].xyz_; 26: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 27: MAD_SAT temp[1].xyz, temp[9].xyz_, const[4].xyz_, temp[6].xyz_; 28: MOV_SAT temp[1].w, input[1].___z; 29: MAD_SAT temp[10].x, input[0].x___, const[5].x___, const[5].y___; 30: ADD temp[12].xyz, temp[1].xyz_, -const[6].xyz_; 31: MAD output[0].xyz, temp[10].xxx_, temp[12].xyz_, const[6].xyz_; 32: MOV output[0].w, temp[1].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0].xyz, input[2].xy__, 2D[1]; 1: TEX temp[2].xyz, input[2].xy__, 2D[2]; 2: src0.xyz = temp[2], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 3: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 4: src0.w = temp[3] RSQ temp[3].w, |src0.w| 5: src0.xyz = input[3], src0.w = temp[3] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 6: TEX temp[4].w, input[1].xy__, 2D[3]; 7: src0.xyz = const[1], src0.w = temp[4] MAD temp[4].w, src0.w, src0.x, src0.y 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ 9: TEX temp[6], temp[5].xy__, 2D[0]; 10: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 11: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 12: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 13: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 14: src0.w = temp[8] RSQ temp[8].w, |src0.w| 15: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 16: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 17: src0.w = temp[8] LG2 temp[11].w, src0.w 18: src0.xyz = const[7], src0.w = temp[11] MAD temp[11].w, src0.w, src0.z, src0.0 19: src0.w = temp[11] EX2 temp[8].w, src0.w 20: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 21: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 22: src0.xyz = temp[7], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz 23: src0.xyz = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[0], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz 25: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 26: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 27: src0.xyz = temp[9], src1.xyz = const[4], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 28: src0.xyz = input[1] MAD_SAT temp[1].w, src0.z, src0.1, src0.0 29: src0.xyz = input[0], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ 30: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 31: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 32: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0].xyz, input[2].xy__, 2D[1]; 2: TEX temp[2].xyz, input[2].xy__, 2D[2]; 3: TEX temp[4].w, input[1].xy__, 2D[3]; 4: src0.xyz = input[3] DP3, src0.xyz, src0.xyz DP3 temp[3].w, src0._, src0._ 5: src0.xyz = temp[2], src0.w = temp[3], src1.xyz = const[7] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[3].w, |src0.w| 6: src0.xyz = input[3], src0.w = temp[3], src1.xyz = const[1], src1.w = temp[4] MAD temp[3].xyz, src0.www, src0.xyz, src0.000 MAD temp[4].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[8].w, src0._, src0._ 8: src0.xyz = temp[3], src0.w = temp[4], src1.xyz = input[1], src1.w = temp[8] MAD temp[5].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[8].w, |src1.w| 9: src0.xyz = temp[3], src0.w = temp[8], src1.xyz = temp[2], src2.xyz = input[1], srcp.xyz = (src1 + src0) MAD temp[8].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[1].w, src2.z, src0.1, src0.0 10: src0.xyz = input[0], src0.w = temp[1], src1.xyz = const[5] MAD_SAT temp[10].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[9].xyz, temp[5].xy__, 2D[4]; 13: TEX temp[7].xyz, temp[5].xy__, 2D[3]; 14: TEX temp[6], temp[5].xy__, 2D[0]; 15: src0.xyz = temp[6], src1.xyz = const[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[7], src1.xyz = const[7] MAD temp[7].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[8], src1.xyz = temp[7] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[8].w, src0._, src0._ 18: src0.xyz = temp[7], src0.w = temp[8], src1.xyz = temp[2] DP3_SAT temp[2].xyz, src0.xyz, src1.xyz LG2 temp[11].w, src0.w 19: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = temp[2], src2.xyz = const[7] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[11].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[0], src0.w = temp[11], src1.xyz = const[3] MAX temp[0].xyz, src0.xyz, src1.xyz EX2 temp[8].w, src0.w 21: src0.w = temp[8], src1.w = temp[6] MAD temp[8].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[8], src1.xyz = temp[6] MAD temp[6].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[6], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[9], src1.xyz = const[4], src2.xyz = temp[6] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 25: src0.xyz = temp[1], src1.xyz = const[6] MAD temp[12].xyz, src0.xyz, src0.111, -src1.xyz 26: src0.xyz = temp[10], src1.xyz = temp[12], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4].xyz, temp[1].xy__, 2D[1]; 2: TEX temp[1].xyz, temp[1].xy__, 2D[2]; 3: TEX temp[6].w, temp[0].xy__, 2D[3]; 4: src0.xyz = temp[2] DP3, src0.xyz, src0.xyz DP3 temp[5].w, src0._, src0._ 5: src0.xyz = temp[1], src0.w = temp[5], src1.xyz = const[7] MAD temp[1].xyz, src0.xyz, src1.xxx, -src0.111 RSQ temp[5].w, |src0.w| 6: src0.xyz = temp[2], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[6] MAD temp[5].xyz, src0.www, src0.xyz, src0.000 MAD temp[6].w, src1.w, src1.x, src1.y 7: src0.xyz = temp[5], src1.xyz = temp[1], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[7].w, src0._, src0._ 8: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = temp[0], src1.w = temp[7] MAD temp[2].xy, src0.ww_, src0.xy_, src1.xy_ RSQ temp[7].w, |src1.w| 9: src0.xyz = temp[5], src0.w = temp[7], src1.xyz = temp[1], src2.xyz = temp[0], srcp.xyz = (src1 + src0) MAD temp[7].xyz, src0.www, srcp.xyz, src0.000 MAD_SAT temp[0].w, src2.z, src0.1, src0.0 10: src0.xyz = temp[3], src0.w = temp[0], src1.xyz = const[5] MAD_SAT temp[6].x, src0.x__, src1.x__, src1.y__ MAD color[0].w, src0.w, src0.1, src0.0 11: BEGIN_TEX; 12: TEX temp[5].xyz, temp[2].xy__, 2D[4]; 13: TEX temp[3].xyz, temp[2].xy__, 2D[3]; 14: TEX temp[2], temp[2].xy__, 2D[0]; 15: src0.xyz = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 16: src0.xyz = temp[3], src1.xyz = const[7] MAD temp[3].xyz, src0.xyz, src1.xxx, -src0.111 17: src0.xyz = temp[7], src1.xyz = temp[3] DP3_SAT, src0.xyz, src1.xyz DP3_SAT temp[7].w, src0._, src0._ 18: src0.xyz = temp[3], src0.w = temp[7], src1.xyz = temp[1] DP3_SAT temp[1].xyz, src0.xyz, src1.xyz LG2 temp[3].w, src0.w 19: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = temp[1], src2.xyz = const[7] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.z, src0.0 20: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = const[3] MAX temp[4].xyz, src0.xyz, src1.xyz EX2 temp[7].w, src0.w 21: src0.w = temp[7], src1.w = temp[2] MAD temp[7].w, src0.w, src1.w, src0.0 22: src0.xyz = const[2], src0.w = temp[7], src1.xyz = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src1.xyz 23: src0.xyz = temp[2], src1.xyz = temp[4] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 24: src0.xyz = temp[5], src1.xyz = const[4], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 25: src0.xyz = temp[0], src1.xyz = const[6] MAD temp[0].xyz, src0.xyz, src0.111, -src1.xyz 26: src0.xyz = temp[6], src1.xyz = temp[0], src2.xyz = const[6] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe404f401: src: 1 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f400: src: 0 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810051:DP dest:5 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041c01:Addr0: 1t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004c05b:RSQ dest:5 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8010:MAD dest:1 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 5 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040402:Addr0: 2t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001805:Addr0: 5t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0008d060:MAD dest:6 alp_A_src:1 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x0a490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:1 G 0 6 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00000005:Addr0: 5t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c06:Addr0: 6t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0084046c:rgb_A_src:0 A/A/0 0 rgb_B_src:0 R/G/0 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421020:MAD dest:2 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80000405:Addr0: 5t, Addr1: 1t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0a000:MAD dest:0 alp_A_src:2 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 9 0:CMN_INST 0x000c0805:OUT TEX_WAIT wmask: R omask: A 1:RGB_ADDR 0x00041403:Addr0: 3t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20485060:MAD dest:6 rgb_C_src:1 G/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06440000: id: 4 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe405f402: src: 2 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 11 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe403f402: src: 2 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 12 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 13 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041c03:Addr0: 3t, Addr1: 7c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8030:MAD dest:3 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 15 0:CMN_INST 0x00184004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000c07:Addr0: 7t, Addr1: 3t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000081:DP3 dest:8 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000403:Addr0: 3t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c039:LN2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x10700404:Addr0: 4t, Addr1: 1t, Addr2: 7c, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0050c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 B 0 targ 0 w:0 5 RGBA_INST: 0x20490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 18 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040c04:Addr0: 4t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000c078:EX2 dest:7 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000045:MAX dest:4 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000807:Addr0: 7t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c070:MAD dest:7 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 20 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000902:Addr0: 2c, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221020:MAD dest:2 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00001002:Addr0: 2t, Addr1: 4t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00241005:Addr0: 5t, Addr1: 4c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041800:Addr0: 0t, Addr1: 6c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21000:MAD dest:0 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 24 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10600006:Addr0: 6t, Addr1: 0t, Addr2: 6c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..2] DCL TEMP[0..3] 0: TEX TEMP[0], IN[1], SAMP[0], 2D 1: TEX TEMP[1], IN[1], SAMP[1], 2D 2: MUL TEMP[0], TEMP[0], CONST[0].xxxx 3: MAD_SAT TEMP[2], TEMP[1], CONST[0].yyyy, TEMP[0] 4: MAD_SAT TEMP[3].x, IN[0].xxxx, CONST[1].xxxx, CONST[1].yyyy 5: LRP OUT[0].xyz, TEMP[3].xxxx, TEMP[2], CONST[2] 6: MOV OUT[0].w, TEMP[2] 7: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: LRP output[0].xyz, temp[3].xxxx, temp[2], const[2]; 6: MOV output[0].w, temp[2]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1], 2D[0]; 1: TEX temp[1], input[1], 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].xxxx, const[1].xxxx, const[1].yyyy; 5: ADD temp[4], temp[2], -const[2]; 6: MAD output[0].xyz, temp[3].xxxx, temp[4], const[2]; 7: MOV output[0].w, temp[2]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[1].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[1].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[1].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[1].xy__, 2D[1]; 2: MUL temp[0], temp[0], const[0].xxxx; 3: MAD_SAT temp[2], temp[1], const[0].yyyy, temp[0]; 4: MAD_SAT temp[3].x, input[0].x___, const[1].x___, const[1].y___; 5: ADD temp[4].xyz, temp[2].xyz_, -const[2].xyz_; 6: MAD output[0].xyz, temp[3].xxx_, temp[4].xyz_, const[2].xyz_; 7: MOV output[0].w, temp[2].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: TEX temp[1], input[1].xy__, 2D[1]; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[0], src1.w = temp[0], src2.xyz = temp[0] MAD_SAT temp[2].xyz, src0.xyz, src1.yyy, src2.xyz MAD_SAT temp[2].w, src0.w, src1.y, src1.w 4: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 5: src0.xyz = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz 6: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 7: src0.w = temp[2] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[1].xy__, 2D[0]; 2: TEX temp[1], input[1].xy__, 2D[1]; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 4: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[0], src1.w = temp[0], src2.xyz = temp[0] MAD_SAT temp[2].xyz, src0.xyz, src1.yyy, src2.xyz MAD_SAT temp[2].w, src0.w, src1.y, src1.w 5: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[2] MAD temp[4].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 6: src0.xyz = input[0], src1.xyz = const[1] MAD_SAT temp[3].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[3], src1.xyz = temp[4], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], temp[0].xy__, 2D[0]; 2: TEX temp[0], temp[0].xy__, 2D[1]; 3: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] MAD temp[2].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[2].w, src0.w, src1.x, src0.0 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0], src1.w = temp[2], src2.xyz = temp[2] MAD_SAT temp[0].xyz, src0.xyz, src1.yyy, src2.xyz MAD_SAT temp[0].w, src0.w, src1.y, src1.w 5: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2] MAD temp[2].xyz, src0.xyz, src0.111, -src1.xyz MAD color[0].w, src0.w, src0.1, src0.0 6: src0.xyz = temp[1], src1.xyz = const[1] MAD_SAT temp[0].x, src0.x__, src1.x__, src1.y__ 7: src0.xyz = temp[0], src1.xyz = temp[2], src2.xyz = const[2] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f400: src: 0 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040002:Addr0: 2t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x0008c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00240000:Addr0: 0t, Addr1: 0c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000800:Addr0: 0t, Addr1: 2t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0024a220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 G/G/G 0 targ: 0 4 ALPHA_INST:0x0028c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 G 0 targ 0 w:0 5 RGBA_INST: 0x1a222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:1 A 0 4 0:CMN_INST 0x00043805:OUT TEX_WAIT wmask: RGB omask: A 1:RGB_ADDR 0x00040800:Addr0: 0t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20a21020:MAD dest:2 rgb_C_src:1 R/G/B 1 alp_C_src:0 0 0 5 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040401:Addr0: 1t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485000:MAD dest:0 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10200800:Addr0: 0t, Addr1: 2t, Addr2: 2c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], POSITION, LINEAR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL IN[3], GENERIC[1], PERSPECTIVE DCL IN[4], GENERIC[2], PERSPECTIVE DCL IN[5], GENERIC[3], PERSPECTIVE DCL IN[6], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[6..7] DCL CONST[3..5] DCL TEMP[0..13] IMM FLT32 { 2.0000, 1.0000, 0.0250, 0.0100} IMM FLT32 { 4.0000, 0.5000, 96.0000, 0.0000} 0: MOV TEMP[0], IN[0] 1: SUB TEMP[0].y, CONST[7], IN[0] 2: DP3 TEMP[1].w, IN[5], IN[5] 3: RSQ TEMP[1].w, TEMP[1].wwww 4: MUL TEMP[1].xyz, TEMP[1].wwww, IN[5] 5: DP3 TEMP[2].w, IN[6], IN[6] 6: RSQ TEMP[2].w, TEMP[2].wwww 7: MUL TEMP[2].xyz, TEMP[2].wwww, IN[6] 8: ADD TEMP[3], TEMP[1], TEMP[2] 9: DP3 TEMP[3].w, TEMP[3], TEMP[3] 10: RSQ TEMP[3].w, TEMP[3].wwww 11: MUL TEMP[3].xyz, TEMP[3].wwww, TEMP[3] 12: TEX TEMP[4], IN[3], SAMP[2], 2D 13: MAD TEMP[4].xy, TEMP[4], IMM[0].xxxx, -IMM[0].yyyy 14: MAD TEMP[5], TEMP[4], IMM[0].zzzz, IN[4] 15: TEX TEMP[6], TEMP[5], SAMP[1], 2D 16: MAD TEMP[6].xyz, TEMP[6], IMM[0].xxxx, -IMM[0].yyyy 17: TEX TEMP[4], TEMP[5], SAMP[2], 2D 18: MAD TEMP[4].xy, TEMP[4], IMM[0].xxxx, -IMM[0].yyyy 19: RCP TEMP[5].w, IN[2].wwww 20: MUL TEMP[5].xy, IN[2], TEMP[5].wwww 21: MAD TEMP[7].xy, TEMP[4], IMM[0].wwww, TEMP[5] 22: TEX TEMP[8], TEMP[7], SAMP[0], 2D 23: TEX TEMP[9], TEMP[7], SAMP[3], 2D 24: TEX TEMP[10].w, TEMP[5], SAMP[3], 2D 25: MOV_SAT TEMP[10].x, TEMP[0].zzzz 26: MAD TEMP[10].w, TEMP[10], IMM[1].xxxx, IN[2].zzzz 27: MUL_SAT TEMP[11].w, TEMP[10].wwww, TEMP[10].xxxx 28: DP3_SAT TEMP[3], TEMP[3], TEMP[6] 29: POW TEMP[3], TEMP[3].xxxx, IMM[1].zzzz 30: MUL TEMP[2], CONST[3], TEMP[2].wwww 31: RCP_SAT TEMP[2], TEMP[2].xxxx 32: MAD TEMP[2], TEMP[2], -CONST[4], CONST[4] 33: DP3_SAT TEMP[12], TEMP[1], TEMP[6] 34: MAD TEMP[12], TEMP[12], IMM[1].yyyy, IMM[1].yyyy 35: LRP TEMP[5], TEMP[12], TEMP[9], TEMP[8] 36: MAD_SAT TEMP[11].xyz, TEMP[3], TEMP[2], TEMP[5] 37: MAD_SAT TEMP[13].x, IN[1].xxxx, CONST[5].xxxx, CONST[5].yyyy 38: LRP OUT[0].xyz, TEMP[13].xxxx, TEMP[11], CONST[6] 39: MOV OUT[0].w, TEMP[11] 40: END Fragment Program: before compilation # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: SUB temp[0].y, const[7], temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, temp[1].wwww; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, temp[2].wwww; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, temp[3].wwww; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: POW temp[3], temp[3].xxxx, const[9].zzzz; 33: MUL temp[2], const[3], temp[2].wwww; 34: RCP_SAT temp[2], temp[2].xxxx; 35: MAD temp[2], temp[2], -const[4], const[4]; 36: DP3_SAT temp[12], temp[1], temp[6]; 37: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 38: LRP temp[5], temp[12], temp[9], temp[8]; 39: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 40: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 41: LRP output[0].xyz, temp[13].xxxx, temp[11], const[6]; 42: MOV output[0].w, temp[11]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: SUB temp[0].y, const[7], temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, temp[1].wwww; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, temp[2].wwww; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, temp[3].wwww; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: POW temp[3], temp[3].xxxx, const[9].zzzz; 33: MUL temp[2], const[3], temp[2].wwww; 34: RCP_SAT temp[2], temp[2].xxxx; 35: MAD temp[2], temp[2], -const[4], const[4]; 36: DP3_SAT temp[12], temp[1], temp[6]; 37: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 38: LRP temp[5], temp[12], temp[9], temp[8]; 39: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 40: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 41: LRP output[0].xyz, temp[13].xxxx, temp[11], const[6]; 42: MOV output[0].w, temp[11]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: SUB temp[0].y, const[7], temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, temp[1].wwww; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, temp[2].wwww; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, temp[3].wwww; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: POW temp[3], temp[3].xxxx, const[9].zzzz; 33: MUL temp[2], const[3], temp[2].wwww; 34: RCP_SAT temp[2], temp[2].xxxx; 35: MAD temp[2], temp[2], -const[4], const[4]; 36: DP3_SAT temp[12], temp[1], temp[6]; 37: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 38: LRP temp[5], temp[12], temp[9], temp[8]; 39: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 40: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 41: LRP output[0].xyz, temp[13].xxxx, temp[11], const[6]; 42: MOV output[0].w, temp[11]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: SUB temp[0].y, const[7], temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, temp[1].wwww; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, temp[2].wwww; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, temp[3].wwww; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: POW temp[3], temp[3].xxxx, const[9].zzzz; 33: MUL temp[2], const[3], temp[2].wwww; 34: RCP_SAT temp[2], temp[2].xxxx; 35: MAD temp[2], temp[2], -const[4], const[4]; 36: DP3_SAT temp[12], temp[1], temp[6]; 37: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 38: LRP temp[5], temp[12], temp[9], temp[8]; 39: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 40: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 41: LRP output[0].xyz, temp[13].xxxx, temp[11], const[6]; 42: MOV output[0].w, temp[11]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: SUB temp[0].y, const[7], temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, temp[1].wwww; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, temp[2].wwww; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, temp[3].wwww; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: POW temp[3], temp[3].xxxx, const[9].zzzz; 33: MUL temp[2], const[3], temp[2].wwww; 34: RCP_SAT temp[2], temp[2].xxxx; 35: MAD temp[2], temp[2], -const[4], const[4]; 36: DP3_SAT temp[12], temp[1], temp[6]; 37: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 38: LRP temp[5], temp[12], temp[9], temp[8]; 39: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 40: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 41: LRP output[0].xyz, temp[13].xxxx, temp[11], const[6]; 42: MOV output[0].w, temp[11]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: RCP temp[14].w, input[0].wwww; 1: MUL temp[14].xyz, input[0], temp[14].wwww; 2: MAD temp[14].xyz, temp[14].xyz0, const[10].xyz0, const[11].xyz0; 3: MOV temp[0], temp[14]; 4: ADD temp[0].y, const[7], -temp[14]; 5: DP3 temp[1].w, input[5], input[5]; 6: RSQ temp[1].w, |temp[1].wwww|; 7: MUL temp[1].xyz, temp[1].wwww, input[5]; 8: DP3 temp[2].w, input[6], input[6]; 9: RSQ temp[2].w, |temp[2].wwww|; 10: MUL temp[2].xyz, temp[2].wwww, input[6]; 11: ADD temp[3], temp[1], temp[2]; 12: DP3 temp[3].w, temp[3], temp[3]; 13: RSQ temp[3].w, |temp[3].wwww|; 14: MUL temp[3].xyz, temp[3].wwww, temp[3]; 15: TEX temp[4], input[3], 2D[2]; 16: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 17: MAD temp[5], temp[4], const[8].zzzz, input[4]; 18: TEX temp[6], temp[5], 2D[1]; 19: MAD temp[6].xyz, temp[6], const[8].xxxx, -const[8].yyyy; 20: TEX temp[4], temp[5], 2D[2]; 21: MAD temp[4].xy, temp[4], const[8].xxxx, -const[8].yyyy; 22: RCP temp[5].w, input[2].wwww; 23: MUL temp[5].xy, input[2], temp[5].wwww; 24: MAD temp[7].xy, temp[4], const[8].wwww, temp[5]; 25: TEX temp[8], temp[7], 2D[0]; 26: TEX temp[9], temp[7], 2D[3]; 27: TEX temp[10].w, temp[5], 2D[3]; 28: MOV_SAT temp[10].x, temp[0].zzzz; 29: MAD temp[10].w, temp[10], const[9].xxxx, input[2].zzzz; 30: MUL_SAT temp[11].w, temp[10].wwww, temp[10].xxxx; 31: DP3_SAT temp[3], temp[3], temp[6]; 32: LG2 temp[15].w, temp[3].xxxx; 33: MUL temp[15].w, temp[15].wwww, const[9].zzzz; 34: EX2 temp[3], temp[15].wwww; 35: MUL temp[2], const[3], temp[2].wwww; 36: RCP_SAT temp[2], temp[2].xxxx; 37: MAD temp[2], temp[2], -const[4], const[4]; 38: DP3_SAT temp[12], temp[1], temp[6]; 39: MAD temp[12], temp[12], const[9].yyyy, const[9].yyyy; 40: ADD temp[16], temp[9], -temp[8]; 41: MAD temp[5], temp[12], temp[16], temp[8]; 42: MAD_SAT temp[11].xyz, temp[3], temp[2], temp[5]; 43: MAD_SAT temp[13].x, input[1].xxxx, const[5].xxxx, const[5].yyyy; 44: ADD temp[17], temp[11], -const[6]; 45: MAD output[0].xyz, temp[13].xxxx, temp[17], const[6]; 46: MOV output[0].w, temp[11]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: RCP temp[14].w, input[0].w___; 1: MUL temp[14].z, input[0].__z_, temp[14].__w_; 2: MAD temp[14].z, temp[14].__z_, const[10].__z_, const[11].__z_; 3: MOV temp[0].z, temp[14].__z_; 4: DP3 temp[1].w, input[5].xyz_, input[5].xyz_; 5: RSQ temp[1].w, |temp[1].w___|; 6: MUL temp[1].xyz, temp[1].www_, input[5].xyz_; 7: DP3 temp[2].w, input[6].xyz_, input[6].xyz_; 8: RSQ temp[2].w, |temp[2].w___|; 9: MUL temp[2].xyz, temp[2].www_, input[6].xyz_; 10: ADD temp[3].xyz, temp[1].xyz_, temp[2].xyz_; 11: DP3 temp[3].w, temp[3].xyz_, temp[3].xyz_; 12: RSQ temp[3].w, |temp[3].w___|; 13: MUL temp[3].xyz, temp[3].www_, temp[3].xyz_; 14: TEX temp[4].xy, input[3].xy__, 2D[2]; 15: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -const[8].yy__; 16: MAD temp[5].xy, temp[4].xy__, const[8].zz__, input[4].xy__; 17: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 18: MAD temp[6].xyz, temp[6].xyz_, const[8].xxx_, -const[8].yyy_; 19: TEX temp[4].xy, temp[5].xy__, 2D[2]; 20: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -const[8].yy__; 21: RCP temp[5].w, input[2].w___; 22: MUL temp[5].xy, input[2].xy__, temp[5].ww__; 23: MAD temp[7].xy, temp[4].xy__, const[8].ww__, temp[5].xy__; 24: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 25: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 26: TEX temp[10].w, temp[5].xy__, 2D[3]; 27: MOV_SAT temp[10].x, temp[0].z___; 28: MAD temp[10].w, temp[10].___w, const[9].___x, input[2].___z; 29: MUL_SAT temp[11].w, temp[10].___w, temp[10].___x; 30: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 31: LG2 temp[15].w, temp[3].x___; 32: MUL temp[15].w, temp[15].___w, const[9].___z; 33: EX2 temp[3].xyz, temp[15].w___; 34: MUL temp[2].x, const[3].x___, temp[2].w___; 35: RCP_SAT temp[2].xyz, temp[2].x___; 36: MAD temp[2].xyz, temp[2].xyz_, -const[4].xyz_, const[4].xyz_; 37: DP3_SAT temp[12].xyz, temp[1].xyz_, temp[6].xyz_; 38: MAD temp[12].xyz, temp[12].xyz_, const[9].yyy_, const[9].yyy_; 39: ADD temp[16].xyz, temp[9].xyz_, -temp[8].xyz_; 40: MAD temp[5].xyz, temp[12].xyz_, temp[16].xyz_, temp[8].xyz_; 41: MAD_SAT temp[11].xyz, temp[3].xyz_, temp[2].xyz_, temp[5].xyz_; 42: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 43: ADD temp[17].xyz, temp[11].xyz_, -const[6].xyz_; 44: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 45: MOV output[0].w, temp[11].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: RCP temp[14].w, input[0].w___; 1: MUL temp[14].z, input[0].__z_, temp[14].__w_; 2: MAD temp[14].z, temp[14].__z_, const[10].__z_, const[11].__z_; 3: DP3 temp[1].w, input[5].xyz_, input[5].xyz_; 4: RSQ temp[1].w, |temp[1].w___|; 5: MUL temp[1].xyz, temp[1].www_, input[5].xyz_; 6: DP3 temp[2].w, input[6].xyz_, input[6].xyz_; 7: RSQ temp[2].w, |temp[2].w___|; 8: MUL temp[2].xyz, temp[2].www_, input[6].xyz_; 9: DP3 temp[3].w, (temp[2] + temp[1]).xyz_, (temp[2] + temp[1]).xyz_; 10: RSQ temp[3].w, |temp[3].w___|; 11: MUL temp[3].xyz, temp[3].www_, (temp[2] + temp[1]).xyz_; 12: TEX temp[4].xy, input[3].xy__, 2D[2]; 13: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -none.11__; 14: MAD temp[5].xy, temp[4].xy__, const[8].zz__, input[4].xy__; 15: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 16: MAD temp[6].xyz, temp[6].xyz_, const[8].xxx_, -none.111_; 17: TEX temp[4].xy, temp[5].xy__, 2D[2]; 18: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -none.11__; 19: RCP temp[5].w, input[2].w___; 20: MUL temp[5].xy, input[2].xy__, temp[5].ww__; 21: MAD temp[7].xy, temp[4].xy__, const[8].ww__, temp[5].xy__; 22: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 23: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 24: TEX temp[10].w, temp[5].xy__, 2D[3]; 25: MOV_SAT temp[10].x, temp[14].z___; 26: MAD temp[10].w, temp[10].___w, const[9].___x, input[2].___z; 27: MUL_SAT temp[11].w, temp[10].___w, temp[10].___x; 28: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 29: LG2 temp[15].w, temp[3].x___; 30: MUL temp[15].w, temp[15].___w, const[9].___z; 31: EX2 temp[3].xyz, temp[15].w___; 32: MUL temp[2].x, const[3].x___, temp[2].w___; 33: RCP_SAT temp[2].xyz, temp[2].x___; 34: MAD temp[2].xyz, temp[2].xyz_, -const[4].xyz_, const[4].xyz_; 35: DP3_SAT temp[12].xyz, temp[1].xyz_, temp[6].xyz_; 36: MAD temp[12].xyz, temp[12].xyz_, none.HHH_, none.HHH_; 37: ADD temp[16].xyz, temp[9].xyz_, -temp[8].xyz_; 38: MAD temp[5].xyz, temp[12].xyz_, temp[16].xyz_, temp[8].xyz_; 39: MAD_SAT temp[11].xyz, temp[3].xyz_, temp[2].xyz_, temp[5].xyz_; 40: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 41: ADD temp[17].xyz, temp[11].xyz_, -const[6].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 43: MOV output[0].w, temp[11].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: RCP temp[14].w, input[0].w___; 1: MUL temp[14].z, input[0].__z_, temp[14].__w_; 2: MAD temp[14].z, temp[14].__z_, const[10].__z_, const[11].__z_; 3: DP3 temp[1].w, input[5].xyz_, input[5].xyz_; 4: RSQ temp[1].w, |temp[1].w___|; 5: MUL temp[1].xyz, temp[1].www_, input[5].xyz_; 6: DP3 temp[2].w, input[6].xyz_, input[6].xyz_; 7: RSQ temp[2].w, |temp[2].w___|; 8: MUL temp[2].xyz, temp[2].www_, input[6].xyz_; 9: DP3 temp[3].w, (temp[2] + temp[1]).xyz_, (temp[2] + temp[1]).xyz_; 10: RSQ temp[3].w, |temp[3].w___|; 11: MUL temp[3].xyz, temp[3].www_, (temp[2] + temp[1]).xyz_; 12: TEX temp[4].xy, input[3].xy__, 2D[2]; 13: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -none.11__; 14: MAD temp[5].xy, temp[4].xy__, const[8].zz__, input[4].xy__; 15: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 16: MAD temp[6].xyz, temp[6].xyz_, const[8].xxx_, -none.111_; 17: TEX temp[4].xy, temp[5].xy__, 2D[2]; 18: MAD temp[4].xy, temp[4].xy__, const[8].xx__, -none.11__; 19: RCP temp[5].w, input[2].w___; 20: MUL temp[5].xy, input[2].xy__, temp[5].ww__; 21: MAD temp[7].xy, temp[4].xy__, const[8].ww__, temp[5].xy__; 22: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 23: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 24: TEX temp[10].w, temp[5].xy__, 2D[3]; 25: MOV_SAT temp[10].x, temp[14].z___; 26: MAD temp[10].w, temp[10].___w, const[9].___x, input[2].___z; 27: MUL_SAT temp[11].w, temp[10].___w, temp[10].___x; 28: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 29: LG2 temp[15].w, temp[3].x___; 30: MUL temp[15].w, temp[15].___w, const[9].___z; 31: EX2 temp[3].xyz, temp[15].w___; 32: MUL temp[2].x, const[3].x___, temp[2].w___; 33: RCP_SAT temp[2].xyz, temp[2].x___; 34: MAD temp[2].xyz, temp[2].xyz_, -const[4].xyz_, const[4].xyz_; 35: DP3_SAT temp[12].xyz, temp[1].xyz_, temp[6].xyz_; 36: MAD temp[12].xyz, temp[12].xyz_, none.HHH_, none.HHH_; 37: ADD temp[16].xyz, temp[9].xyz_, -temp[8].xyz_; 38: MAD temp[5].xyz, temp[12].xyz_, temp[16].xyz_, temp[8].xyz_; 39: MAD_SAT temp[11].xyz, temp[3].xyz_, temp[2].xyz_, temp[5].xyz_; 40: MAD_SAT temp[13].x, input[1].x___, const[5].x___, const[5].y___; 41: ADD temp[17].xyz, temp[11].xyz_, -const[6].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[6].xyz_; 43: MOV output[0].w, temp[11].___w; CONST[4] = { 2.0000 1.0000 0.0250 0.0100 } CONST[5] = { 4.0000 0.5000 96.0000 0.0000 } Fragment Program: after 'dead constants' # Radeon Compiler Program 0: RCP temp[14].w, input[0].w___; 1: MUL temp[14].z, input[0].__z_, temp[14].__w_; 2: MAD temp[14].z, temp[14].__z_, const[6].__z_, const[7].__z_; 3: DP3 temp[1].w, input[5].xyz_, input[5].xyz_; 4: RSQ temp[1].w, |temp[1].w___|; 5: MUL temp[1].xyz, temp[1].www_, input[5].xyz_; 6: DP3 temp[2].w, input[6].xyz_, input[6].xyz_; 7: RSQ temp[2].w, |temp[2].w___|; 8: MUL temp[2].xyz, temp[2].www_, input[6].xyz_; 9: DP3 temp[3].w, (temp[2] + temp[1]).xyz_, (temp[2] + temp[1]).xyz_; 10: RSQ temp[3].w, |temp[3].w___|; 11: MUL temp[3].xyz, temp[3].www_, (temp[2] + temp[1]).xyz_; 12: TEX temp[4].xy, input[3].xy__, 2D[2]; 13: MAD temp[4].xy, temp[4].xy__, const[4].xx__, -none.11__; 14: MAD temp[5].xy, temp[4].xy__, const[4].zz__, input[4].xy__; 15: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 16: MAD temp[6].xyz, temp[6].xyz_, const[4].xxx_, -none.111_; 17: TEX temp[4].xy, temp[5].xy__, 2D[2]; 18: MAD temp[4].xy, temp[4].xy__, const[4].xx__, -none.11__; 19: RCP temp[5].w, input[2].w___; 20: MUL temp[5].xy, input[2].xy__, temp[5].ww__; 21: MAD temp[7].xy, temp[4].xy__, const[4].ww__, temp[5].xy__; 22: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 23: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 24: TEX temp[10].w, temp[5].xy__, 2D[3]; 25: MOV_SAT temp[10].x, temp[14].z___; 26: MAD temp[10].w, temp[10].___w, const[5].___x, input[2].___z; 27: MUL_SAT temp[11].w, temp[10].___w, temp[10].___x; 28: DP3_SAT temp[3].x, temp[3].xyz_, temp[6].xyz_; 29: LG2 temp[15].w, temp[3].x___; 30: MUL temp[15].w, temp[15].___w, const[5].___z; 31: EX2 temp[3].xyz, temp[15].w___; 32: MUL temp[2].x, const[0].x___, temp[2].w___; 33: RCP_SAT temp[2].xyz, temp[2].x___; 34: MAD temp[2].xyz, temp[2].xyz_, -const[1].xyz_, const[1].xyz_; 35: DP3_SAT temp[12].xyz, temp[1].xyz_, temp[6].xyz_; 36: MAD temp[12].xyz, temp[12].xyz_, none.HHH_, none.HHH_; 37: ADD temp[16].xyz, temp[9].xyz_, -temp[8].xyz_; 38: MAD temp[5].xyz, temp[12].xyz_, temp[16].xyz_, temp[8].xyz_; 39: MAD_SAT temp[11].xyz, temp[3].xyz_, temp[2].xyz_, temp[5].xyz_; 40: MAD_SAT temp[13].x, input[1].x___, const[2].x___, const[2].y___; 41: ADD temp[17].xyz, temp[11].xyz_, -const[3].xyz_; 42: MAD output[0].xyz, temp[13].xxx_, temp[17].xyz_, const[3].xyz_; 43: MOV output[0].w, temp[11].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.w = input[0] RCP temp[14].w, src0.w 1: src0.xyz = input[0], src0.w = temp[14] MAD temp[14].z, src0.__z, src0.__w, src0.000 2: src0.xyz = temp[14], src1.xyz = const[6], src2.xyz = const[7] MAD temp[14].z, src0.__z, src1.__z, src2.__z 3: src0.xyz = input[5] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 4: src0.w = temp[1] RSQ temp[1].w, |src0.w| 5: src0.xyz = input[5], src0.w = temp[1] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 6: src0.xyz = input[6] DP3, src0.xyz, src0.xyz DP3 temp[2].w, src0._, src0._ 7: src0.w = temp[2] RSQ temp[2].w, |src0.w| 8: src0.xyz = input[6], src0.w = temp[2] MAD temp[2].xyz, src0.www, src0.xyz, src0.000 9: src0.xyz = temp[1], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[3].w, src0._, src0._ 10: src0.w = temp[3] RSQ temp[3].w, |src0.w| 11: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = temp[2], srcp.xyz = (src1 + src0) MAD temp[3].xyz, src0.www, srcp.xyz, src0.000 12: TEX temp[4].xy, input[3].xy__, 2D[2]; 13: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xx_, -src0.11_ 14: src0.xyz = temp[4], src1.xyz = const[4], src2.xyz = input[4] MAD temp[5].xy, src0.xy_, src1.zz_, src2.xy_ 15: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 16: src0.xyz = temp[6], src1.xyz = const[4] MAD temp[6].xyz, src0.xyz, src1.xxx, -src0.111 17: TEX temp[4].xy, temp[5].xy__, 2D[2]; 18: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xx_, -src0.11_ 19: src0.w = input[2] RCP temp[5].w, src0.w 20: src0.xyz = input[2], src0.w = temp[5] MAD temp[5].xy, src0.xy_, src0.ww_, src0.000 21: src0.xyz = temp[4], src0.w = const[4], src1.xyz = temp[5] MAD temp[7].xy, src0.xy_, src0.ww_, src1.xy_ 22: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 23: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 24: TEX temp[10].w, temp[5].xy__, 2D[3]; 25: src0.xyz = temp[14] MAD_SAT temp[10].x, src0.z__, src0.111, src0.000 26: src0.xyz = const[5], src0.w = temp[10], src1.xyz = input[2] MAD temp[10].w, src0.w, src0.x, src1.z 27: src0.xyz = temp[10], src0.w = temp[10] MAD_SAT temp[11].w, src0.w, src0.x, src0.0 28: src0.xyz = temp[3], src1.xyz = temp[6] DP3_SAT temp[3].x, src0.xyz, src1.xyz 29: src0.xyz = temp[3] LG2 temp[15].w, src0.x 30: src0.xyz = const[5], src0.w = temp[15] MAD temp[15].w, src0.w, src0.z, src0.0 31: src0.w = temp[15] REPL_ALPHA temp[3].xyz EX2, src0.w 32: src0.xyz = const[0], src0.w = temp[2] MAD temp[2].x, src0.x__, src0.w__, src0.000 33: src0.xyz = temp[2] REPL_ALPHA_SAT temp[2].xyz RCP_SAT, src0.x 34: src0.xyz = temp[2], src1.xyz = const[1] MAD temp[2].xyz, src0.xyz, -src1.xyz, src1.xyz 35: src0.xyz = temp[1], src1.xyz = temp[6] DP3_SAT temp[12].xyz, src0.xyz, src1.xyz 36: src0.xyz = temp[12] MAD temp[12].xyz, src0.xyz, src0.HHH, src0.HHH 37: src0.xyz = temp[9], src1.xyz = temp[8] MAD temp[16].xyz, src0.xyz, src0.111, -src1.xyz 38: src0.xyz = temp[12], src1.xyz = temp[16], src2.xyz = temp[8] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz 39: src0.xyz = temp[3], src1.xyz = temp[2], src2.xyz = temp[5] MAD_SAT temp[11].xyz, src0.xyz, src1.xyz, src2.xyz 40: src0.xyz = input[1], src1.xyz = const[2] MAD_SAT temp[13].x, src0.x__, src1.x__, src1.y__ 41: src0.xyz = temp[11], src1.xyz = const[3] MAD temp[17].xyz, src0.xyz, src0.111, -src1.xyz 42: src0.xyz = temp[13], src1.xyz = temp[17], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 43: src0.w = temp[11] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4].xy, input[3].xy__, 2D[2]; 2: src0.xyz = input[6] DP3, src0.xyz, src0.xyz DP3 temp[2].w, src0._, src0._ 3: src0.xyz = input[5] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 4: src0.xyz = temp[4], src0.w = temp[1], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xx_, -src0.11_ RSQ temp[1].w, |src0.w| 5: src0.xyz = input[5], src0.w = temp[1], src1.w = temp[2] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 RSQ temp[2].w, |src1.w| 6: src0.xyz = input[6], src0.w = temp[2], src1.w = input[2] MAD temp[2].xyz, src0.www, src0.xyz, src0.000 RCP temp[5].w, src1.w 7: src0.xyz = temp[1], src1.xyz = temp[2], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[3].w, src0._, src0._ 8: src0.xyz = temp[4], src0.w = temp[3], src1.xyz = const[4], src2.xyz = input[4] MAD temp[5].xy, src0.xy_, src1.zz_, src2.xy_ RSQ temp[3].w, |src0.w| 9: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = temp[2], src1.w = input[0], srcp.xyz = (src1 + src0) MAD temp[3].xyz, src0.www, srcp.xyz, src0.000 RCP temp[14].w, src1.w 10: src0.xyz = input[0], src0.w = temp[14] MAD temp[14].z, src0.__z, src0.__w, src0.000 11: src0.xyz = temp[14], src1.xyz = const[6], src2.xyz = const[7] MAD temp[14].z, src0.__z, src1.__z, src2.__z 12: src0.xyz = temp[14] MAD_SAT temp[10].x, src0.z__, src0.111, src0.000 13: src0.xyz = const[0], src0.w = temp[2] MAD temp[2].x, src0.x__, src0.w__, src0.000 14: src0.xyz = temp[2] REPL_ALPHA_SAT temp[2].xyz RCP_SAT, src0.x 15: src0.xyz = temp[2], src1.xyz = const[1] MAD temp[2].xyz, src0.xyz, -src1.xyz, src1.xyz 16: src0.xyz = input[1], src1.xyz = const[2] MAD_SAT temp[13].x, src0.x__, src1.x__, src1.y__ 17: BEGIN_TEX; 18: TEX temp[4].xy, temp[5].xy__, 2D[2]; 19: TEX temp[6].xyz, temp[5].xy__, 2D[1]; 20: src0.xyz = temp[6], src1.xyz = const[4] MAD temp[6].xyz, src0.xyz, src1.xxx, -src0.111 21: src0.xyz = temp[3], src1.xyz = temp[6] DP3_SAT temp[3].x, src0.xyz, src1.xyz 22: src0.xyz = temp[1], src1.xyz = temp[6], src2.xyz = temp[3] DP3_SAT temp[12].xyz, src0.xyz, src1.xyz LG2 temp[15].w, src2.x 23: src0.xyz = temp[12], src0.w = temp[15], src1.xyz = const[5] MAD temp[12].xyz, src0.xyz, src0.HHH, src0.HHH MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.w = temp[15] REPL_ALPHA temp[3].xyz EX2, src0.w 25: src0.xyz = temp[4], src1.xyz = const[4] MAD temp[4].xy, src0.xy_, src1.xx_, -src0.11_ 26: src0.xyz = input[2], src0.w = temp[5] MAD temp[5].xy, src0.xy_, src0.ww_, src0.000 27: src0.xyz = temp[4], src0.w = const[4], src1.xyz = temp[5] MAD temp[7].xy, src0.xy_, src0.ww_, src1.xy_ 28: BEGIN_TEX; 29: TEX temp[10].w, temp[5].xy__, 2D[3]; 30: TEX temp[9].xyz, temp[7].xy__, 2D[3]; 31: TEX temp[8].xyz, temp[7].xy__, 2D[0]; 32: src0.xyz = temp[9], src1.xyz = temp[8] MAD temp[16].xyz, src0.xyz, src0.111, -src1.xyz 33: src0.xyz = temp[12], src1.xyz = temp[16], src2.xyz = temp[8] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz 34: src0.xyz = temp[3], src1.xyz = temp[2], src2.xyz = temp[5] MAD_SAT temp[11].xyz, src0.xyz, src1.xyz, src2.xyz 35: src0.xyz = temp[11], src1.xyz = const[3] MAD temp[17].xyz, src0.xyz, src0.111, -src1.xyz 36: src0.xyz = temp[13], src1.xyz = temp[17], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 37: src0.xyz = const[5], src0.w = temp[10], src1.xyz = input[2] MAD temp[10].w, src0.w, src0.x, src1.z 38: src0.xyz = temp[10], src0.w = temp[10] MAD_SAT temp[11].w, src0.w, src0.x, src0.0 39: src0.w = temp[11] MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[8].xy, temp[1].xy__, 2D[2]; 2: src0.xyz = temp[4] DP3, src0.xyz, src0.xyz DP3 temp[7].w, src0._, src0._ 3: src0.xyz = temp[3] DP3, src0.xyz, src0.xyz DP3 temp[1].w, src0._, src0._ 4: src0.xyz = temp[8], src0.w = temp[1], src1.xyz = const[4] MAD temp[8].xy, src0.xy_, src1.xx_, -src0.11_ RSQ temp[1].w, |src0.w| 5: src0.xyz = temp[3], src0.w = temp[1], src1.w = temp[7] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 RSQ temp[7].w, |src1.w| 6: src0.xyz = temp[4], src0.w = temp[7], src1.w = temp[0] MAD temp[7].xyz, src0.www, src0.xyz, src0.000 RCP temp[4].w, src1.w 7: src0.xyz = temp[1], src1.xyz = temp[7], srcp.xyz = (src1 + src0) DP3, srcp.xyz, srcp.xyz DP3 temp[3].w, src0._, src0._ 8: src0.xyz = temp[8], src0.w = temp[3], src1.xyz = const[4], src2.xyz = temp[2] MAD temp[4].xy, src0.xy_, src1.zz_, src2.xy_ RSQ temp[3].w, |src0.w| 9: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = temp[7], src1.w = temp[6], srcp.xyz = (src1 + src0) MAD temp[3].xyz, src0.www, srcp.xyz, src0.000 RCP temp[2].w, src1.w 10: src0.xyz = temp[6], src0.w = temp[2] MAD temp[2].z, src0.__z, src0.__w, src0.000 11: src0.xyz = temp[2], src1.xyz = const[6], src2.xyz = const[7] MAD temp[2].z, src0.__z, src1.__z, src2.__z 12: src0.xyz = temp[2] MAD_SAT temp[6].x, src0.z__, src0.111, src0.000 13: src0.xyz = const[0], src0.w = temp[7] MAD temp[7].x, src0.x__, src0.w__, src0.000 14: src0.xyz = temp[7] REPL_ALPHA_SAT temp[7].xyz RCP_SAT, src0.x 15: src0.xyz = temp[7], src1.xyz = const[1] MAD temp[7].xyz, src0.xyz, -src1.xyz, src1.xyz 16: src0.xyz = temp[5], src1.xyz = const[2] MAD_SAT temp[9].x, src0.x__, src1.x__, src1.y__ 17: BEGIN_TEX; 18: TEX temp[8].xy, temp[4].xy__, 2D[2]; 19: TEX temp[2].xyz, temp[4].xy__, 2D[1]; 20: src0.xyz = temp[2], src1.xyz = const[4] MAD temp[2].xyz, src0.xyz, src1.xxx, -src0.111 21: src0.xyz = temp[3], src1.xyz = temp[2] DP3_SAT temp[3].x, src0.xyz, src1.xyz 22: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[3] DP3_SAT temp[5].xyz, src0.xyz, src1.xyz LG2 temp[1].w, src2.x 23: src0.xyz = temp[5], src0.w = temp[1], src1.xyz = const[5] MAD temp[5].xyz, src0.xyz, src0.HHH, src0.HHH MAD temp[1].w, src0.w, src1.z, src0.0 24: src0.w = temp[1] REPL_ALPHA temp[3].xyz EX2, src0.w 25: src0.xyz = temp[8], src1.xyz = const[4] MAD temp[8].xy, src0.xy_, src1.xx_, -src0.11_ 26: src0.xyz = temp[0], src0.w = temp[4] MAD temp[4].xy, src0.xy_, src0.ww_, src0.000 27: src0.xyz = temp[8], src0.w = const[4], src1.xyz = temp[4] MAD temp[1].xy, src0.xy_, src0.ww_, src1.xy_ 28: BEGIN_TEX; 29: TEX temp[6].w, temp[4].xy__, 2D[3]; 30: TEX temp[2].xyz, temp[1].xy__, 2D[3]; 31: TEX temp[1].xyz, temp[1].xy__, 2D[0]; 32: src0.xyz = temp[2], src1.xyz = temp[1] MAD temp[2].xyz, src0.xyz, src0.111, -src1.xyz 33: src0.xyz = temp[5], src1.xyz = temp[2], src2.xyz = temp[1] MAD temp[4].xyz, src0.xyz, src1.xyz, src2.xyz 34: src0.xyz = temp[3], src1.xyz = temp[7], src2.xyz = temp[4] MAD_SAT temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 35: src0.xyz = temp[1], src1.xyz = const[3] MAD temp[2].xyz, src0.xyz, src0.111, -src1.xyz 36: src0.xyz = temp[9], src1.xyz = temp[2], src2.xyz = const[3] MAD color[0].xyz, src0.xxx, src1.xyz, src2.xyz 37: src0.xyz = const[5], src0.w = temp[6], src1.xyz = temp[0] MAD temp[6].w, src0.w, src0.x, src1.z 38: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT temp[1].w, src0.w, src0.x, src0.0 39: src0.w = temp[1] MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00001807:TEX TEX_WAIT wmask: RG omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe408f401: src: 1 R/G/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810071:DP dest:7 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000021:DP3 dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810011:DP dest:1 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00041008:Addr0: 8t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00802420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/R/0 0 targ: 0 4 ALPHA_INST:0x0004c01b:RSQ dest:1 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00cd8080:MAD dest:8 rgb_C_src:0 1/1/0 1 alp_C_src:0 R 0 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00001c01:Addr0: 1t, Addr1: 7t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0004d07b:RSQ dest:7 alp_A_src:1 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007a04:ALU TEX_WAIT NOP wmask: ARGB omask: NONE 1:RGB_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000d04a:RCP dest:4 alp_A_src:1 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x80001c01:Addr0: 1t, Addr1: 7t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00446223:rgb_A_src:3 R/G/B 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00810031:DP dest:3 alp_A_src:0 0 0 alp_B_src:0 0 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x00241008:Addr0: 8t, Addr1: 4c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x00000003:Addr0: 3t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00892420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 B/B/0 0 targ: 0 4 ALPHA_INST:0x0004c03b:RSQ dest:3 alp_A_src:0 A 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00422040:MAD dest:4 rgb_C_src:2 R/G/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x80001c01:Addr0: 1t, Addr1: 7t, Addr2: 0t, srcp:2 2:ALPHA_ADDR 0x00001803:Addr0: 3t, Addr1: 6t, Addr2: 0t, srcp:0 3 RGB_INST: 0x0044636c:rgb_A_src:0 A/A/A 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x0000d02a:RCP dest:2 alp_A_src:1 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x00000006:Addr0: 6t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00720290:rgb_A_src:0 0/0/B 0 rgb_B_src:0 0/0/A 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x10741802:Addr0: 2t, Addr1: 6c, Addr2: 7c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00522290:rgb_A_src:0 0/0/B 0 rgb_B_src:1 0/0/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00292020:MAD dest:2 rgb_C_src:2 0/0/B 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000002:Addr0: 2t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000100:Addr0: 0c, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00918480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490070:MAD dest:7 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 13 0:CMN_INST 0x00183804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000007:Addr0: 7t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000002a:RCP dest:2 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000007a:SOP dest:7 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040407:Addr0: 7t, Addr1: 1c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x01442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 1 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221070:MAD dest:7 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00040805:Addr0: 5t, Addr1: 2c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00485090:MAD dest:9 rgb_C_src:1 G/0/0 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00001807:TEX TEX_WAIT wmask: RG omask: NONE 1:TEX_INST: 0x06420000: id: 2 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe408f404: src: 4 R/G/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 17 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06410000: id: 1 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f404: src: 4 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 18 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00041002:Addr0: 2t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00ed8020:MAD dest:2 rgb_C_src:0 1/1/1 1 alp_C_src:0 R 0 19 0:CMN_INST 0x00080804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x00000803:Addr0: 3t, Addr1: 2t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000031:DP3 dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00087804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00300801:Addr0: 1t, Addr1: 2t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00002019:LN2 dest:1 alp_A_src:2 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000051:DP3 dest:5 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00041405:Addr0: 5t, Addr1: 5c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00b68220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 H/H/H 0 targ: 0 4 ALPHA_INST:0x0048c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0 5 RGBA_INST: 0x205b4050:MAD dest:5 rgb_C_src:0 H/H/H 0 alp_C_src:0 0 0 22 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c038:EX2 dest:3 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000003a:SOP dest:3 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00001804:ALU TEX_WAIT wmask: RG omask: NONE 1:RGB_ADDR 0x00041008:Addr0: 8t, Addr1: 4c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00802420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/R/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00cd8080:MAD dest:8 rgb_C_src:0 1/1/0 1 alp_C_src:0 R 0 24 0:CMN_INST 0x00001804:ALU TEX_WAIT wmask: RG omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000004:Addr0: 4t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x008d8420:rgb_A_src:0 R/G/0 0 rgb_B_src:0 A/A/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00001804:ALU TEX_WAIT wmask: RG omask: NONE 1:RGB_ADDR 0x00001008:Addr0: 8t, Addr1: 4t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000104:Addr0: 4c, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x008d8420:rgb_A_src:0 R/G/0 0 rgb_B_src:0 A/A/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421010:MAD dest:1 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe406f404: src: 4 R/G/A/A dst: 6 R/G/B/A 3:TEX_DXDY: 0x00000000 27 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06430000: id: 3 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe402f401: src: 1 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 28 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x06400000: id: 0 op:LD, ACQ, IGNUNC SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 29 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00000402:Addr0: 2t, Addr1: 1t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21020:MAD dest:2 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 30 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00100805:Addr0: 5t, Addr1: 2t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222040:MAD dest:4 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 31 0:CMN_INST 0x00083804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00401c03:Addr0: 3t, Addr1: 7t, Addr2: 4t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222010:MAD dest:1 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 32 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x00040c01:Addr0: 1t, Addr1: 3c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00a21020:MAD dest:2 rgb_C_src:1 R/G/B 1 alp_C_src:0 R 0 33 0:CMN_INST 0x00038005:OUT TEX_WAIT wmask: NONE omask: RGB 1:RGB_ADDR 0x10300809:Addr0: 9t, Addr1: 2t, Addr2: 3c, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442000:rgb_A_src:0 R/R/R 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 34 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000105:Addr0: 5c, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000006:Addr0: 6t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c060:MAD dest:6 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x12000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:1 B 0 35 0:CMN_INST 0x00104004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x00000006:Addr0: 6t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000006:Addr0: 6t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 36 0:CMN_INST 0x00040005:OUT TEX_WAIT wmask: NONE omask: A 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000001:Addr0: 1t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 0 0 1400959 fragged morgo Info: 1400959 is on a KILLING SPREE! rapide fragged Earathon you got fragged by bozco sniperkilla fragged DaBesTwIZARD Joseph fragged bozco disconnected