fixme:gameux:GameExplorerImpl_VerifyAccess (0x12ee20, L"C:\\Program Files\\CCP\\EVE\\eve.exe", 0x32fd8c) fixme:heap:HeapSetInformation 0x486000 0 0x33f2d8 4 r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after '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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, 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 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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], GENERIC[0], LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after '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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..4] DCL TEMP[0] 0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D 1: MUL TEMP[0].xyz, TEMP[0], CONST[4] 2: MOV TEMP[0].xyz, TEMP[0].xyzx 3: MOV TEMP[0].w, CONST[4].wwww 4: MOV OUT[0], TEMP[0] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV output[0], temp[0]; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[0].xyz, temp[0].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[0].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[2].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[2].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[2].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[2].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 2: src0.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[4] MAD temp[0].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT 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, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT 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: 0x02c00000: id: 0 op:PROJ, ACQ, 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 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, 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 2 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 3 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..4] DCL TEMP[0] 0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D 1: MUL OUT[0], TEMP[0], CONST[4] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL output[0], temp[0], const[4]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL output[0], temp[0], const[4]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL output[0], temp[0], const[4]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL output[0], temp[0], const[4]; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL_SAT output[0], temp[0], const[4]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL_SAT output[0], temp[0], const[4]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL_SAT output[0], temp[0], const[4]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL_SAT output[0], temp[0], const[4]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL_SAT output[0], temp[0], const[4]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL_SAT output[0], temp[1], const[4]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL_SAT output[0], temp[1], const[4]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL_SAT output[0], temp[1], const[4]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL_SAT output[0], temp[1], const[4]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src0.w, src1.w, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT 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: 0x02c00000: id: 0 op:PROJ, ACQ, 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 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, 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 fixme:win:EnumDisplayDevicesW ((null),0,0x33808c,0x00000000), stub! r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after '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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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], 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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. r300: DRM version: 2.11.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: Initial fragment program FRAG DCL IN[0], COLOR, PERSPECTIVE DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after '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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after '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 'transform IF' # 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 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, 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 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 fixme:process:GetLogicalProcessorInformation ((nil),0x33a8ec): stub fixme:wtsapi:WTSRegisterSessionNotification Stub 0x30028 0x00000000 fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 32 channels, pretending there's only 2 channels fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 32 channels, pretending there's only 2 channels fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels fixme:alsa:AudioClient_GetMixFormat Don't know what to do with 10000 channels, pretending there's only 2 channels fixme:imm:ImmDisableTextFrameService Stub fixme:imm:ImmReleaseContext (0x30028, 0x13e370): stub r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL IN[4], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3..9] DCL TEMP[0..5] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: SLT TEMP[0], IN[4].xyyy, IMM[0].xxxx 1: DP4_SAT TEMP[1].x, TEMP[0], TEMP[0] 2: IF TEMP[1].xxxx :0 3: KILP 4: ENDIF 5: SLT TEMP[1], IN[4].zwww, IMM[0].xxxx 6: DP4_SAT TEMP[1].x, TEMP[1], TEMP[1] 7: IF TEMP[1].xxxx :0 8: KILP 9: ENDIF 10: ADD TEMP[0].x, CONST[0].xxxx, IN[3].wwww 11: FRC TEMP[1].x, TEMP[0].xxxx 12: MOV TEMP[0].y, TEMP[1].xxxx 13: ADD TEMP[0].x, -TEMP[1].xxxx, TEMP[0].xxxx 14: SEQ TEMP[1].x, TEMP[0].xxxx, CONST[3].xxxx 15: IF TEMP[1].xxxx :0 16: MUL TEMP[1].xyz, IN[0].wwww, IN[0].xyzz 17: MOV TEMP[1].w, IN[3].xxxx 18: MOV TEMP[0].y, CONST[0].yyyy 19: ELSE :0 20: SEQ TEMP[2].x, TEMP[0].xxxx, CONST[4].xxxx 21: IF TEMP[2].xxxx :0 22: MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx 23: TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D 24: MOV TEMP[2], TEMP[3] 25: MUL TEMP[4], TEMP[3], IN[0] 26: MUL TEMP[1].xyz, TEMP[4].wwww, TEMP[4].xyzz 27: MUL TEMP[3].x, TEMP[3].wwww, IN[3].xxxx 28: MOV TEMP[1].w, TEMP[3].xxxx 29: MOV TEMP[0].y, CONST[0].yyyy 30: ELSE :0 31: SEQ TEMP[3].x, TEMP[0].xxxx, CONST[5].xxxx 32: IF TEMP[3].xxxx :0 33: MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx 34: TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D 35: MOV TEMP[2].w, TEMP[3] 36: ADD TEMP[2].xyz, TEMP[3].xyzz, CONST[0].wwww 37: ADD TEMP[2].xyz, TEMP[2].xyzz, TEMP[2].xyzz 38: DP3 TEMP[5].x, TEMP[2].xyzz, CONST[9].xyzz 39: MUL TEMP[1].xyz, TEMP[3].wwww, TEMP[5].xxxx 40: MUL TEMP[3].x, TEMP[3].wwww, IN[3].xxxx 41: MOV TEMP[0].z, TEMP[3].xxxx 42: MUL TEMP[3].x, TEMP[3].xxxx, IN[0].wwww 43: MOV TEMP[1].w, TEMP[3].xxxx 44: MOV TEMP[0].y, CONST[0].yyyy 45: ELSE :0 46: SEQ TEMP[3].x, TEMP[0].xxxx, CONST[7].xxxx 47: IF TEMP[3].xxxx :0 48: MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx 49: MUL TEMP[4].xyw, CONST[0].yyzz, IN[2].xyxx 50: TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D 51: TXL TEMP[5], TEMP[4].xyyw, SAMP[0], 2D 52: MUL TEMP[2], TEMP[3], TEMP[5] 53: MUL TEMP[4], TEMP[2], IN[0] 54: MUL TEMP[1].xyz, TEMP[4].wwww, TEMP[4].xyzz 55: MUL TEMP[3].x, TEMP[2].wwww, IN[3].xxxx 56: MOV TEMP[1].w, TEMP[3].xxxx 57: MOV TEMP[0].y, CONST[0].yyyy 58: ELSE :0 59: SEQ TEMP[3].x, TEMP[0].xxxx, CONST[8].xxxx 60: IF TEMP[3].xxxx :0 61: MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx 62: TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D 63: MOV TEMP[2].w, TEMP[3] 64: MUL TEMP[4].xyw, CONST[0].yyzz, IN[2].xyxx 65: TXL TEMP[4], TEMP[4].xyyw, SAMP[0], 2D 66: MUL TEMP[2].xyz, TEMP[3].xyzz, IN[0].xyzz 67: MUL TEMP[3].x, TEMP[4].wwww, IN[3].xxxx 68: MOV TEMP[1].w, TEMP[3].xxxx 69: MUL TEMP[3].x, TEMP[4].wwww, IN[0].wwww 70: MOV TEMP[0].z, TEMP[3].xxxx 71: MUL TEMP[1].xyz, TEMP[3].xxxx, TEMP[2].xyzz 72: MOV TEMP[0].y, CONST[0].yyyy 73: ELSE :0 74: ADD TEMP[3].x, TEMP[0].xxxx, -CONST[6].xxxx 75: MOV TEMP[0].z, TEMP[3].xxxx 76: ABS TEMP[3].x, TEMP[3].xxxx 77: SGE TEMP[3].x, -TEMP[3].xxxx, IMM[0].xxxx 78: IF TEMP[3].xxxx :0 79: MOV TEMP[3].x, CONST[0].yyyy 80: ELSE :0 81: MOV TEMP[3].x, CONST[0].zzzz 82: ENDIF 83: MOV TEMP[0].y, TEMP[3].xxxx 84: SEQ TEMP[3].x, TEMP[0].xxxx, CONST[6].xxxx 85: IF TEMP[3].xxxx :0 86: MUL TEMP[2].xyw, CONST[0].yyzz, IN[1].xyxx 87: TXL TEMP[3], TEMP[2].xyyw, SAMP[1], 2D 88: MAD TEMP[2], TEMP[3].xyzx, CONST[0].yyyz, CONST[0].zzzy 89: MUL TEMP[2], TEMP[2], IN[0] 90: MUL TEMP[1].xyz, TEMP[2].wwww, TEMP[2].xyzz 91: MOV TEMP[1].w, IN[0].wwww 92: ELSE :0 93: MOV TEMP[1], CONST[0].zzzz 94: ENDIF 95: ENDIF 96: ENDIF 97: ENDIF 98: ENDIF 99: ENDIF 100: SGE TEMP[0].x, -TEMP[0].yyyy, IMM[0].xxxx 101: IF TEMP[0].xxxx :0 102: MOV TEMP[0], CONST[0].zzzz 103: ELSE :0 104: MOV TEMP[0], TEMP[1] 105: ENDIF 106: MOV OUT[0], TEMP[0] 107: END Fragment Program: before compilation # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: IF temp[1].xxxx; 3: KILP; 4: ENDIF; 5: SLT temp[1], input[4].zwww, temp[0].0000; 6: DP4_SAT temp[1].x, temp[1], temp[1]; 7: IF temp[1].xxxx; 8: KILP; 9: ENDIF; 10: ADD temp[0].x, const[0].xxxx, input[3].wwww; 11: FRC temp[1].x, temp[0].xxxx; 12: MOV temp[0].y, temp[1].xxxx; 13: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 14: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 15: IF temp[1].xxxx; 16: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 17: MOV temp[1].w, input[3].xxxx; 18: MOV temp[0].y, const[0].yyyy; 19: ELSE; 20: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 21: IF temp[2].xxxx; 22: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 23: TXL temp[3], temp[2].xyyw, 2D[1]; 24: MOV temp[2], temp[3]; 25: MUL temp[4], temp[3], input[0]; 26: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 27: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 28: MOV temp[1].w, temp[3].xxxx; 29: MOV temp[0].y, const[0].yyyy; 30: ELSE; 31: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 32: IF temp[3].xxxx; 33: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 34: TXL temp[3], temp[2].xyyw, 2D[1]; 35: MOV temp[2].w, temp[3]; 36: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 37: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 38: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 39: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 40: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 41: MOV temp[0].z, temp[3].xxxx; 42: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 43: MOV temp[1].w, temp[3].xxxx; 44: MOV temp[0].y, const[0].yyyy; 45: ELSE; 46: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 47: IF temp[3].xxxx; 48: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 49: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 50: TXL temp[3], temp[2].xyyw, 2D[1]; 51: TXL temp[5], temp[4].xyyw, 2D[0]; 52: MUL temp[2], temp[3], temp[5]; 53: MUL temp[4], temp[2], input[0]; 54: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 55: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 56: MOV temp[1].w, temp[3].xxxx; 57: MOV temp[0].y, const[0].yyyy; 58: ELSE; 59: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 60: IF temp[3].xxxx; 61: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 62: TXL temp[3], temp[2].xyyw, 2D[1]; 63: MOV temp[2].w, temp[3]; 64: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 65: TXL temp[4], temp[4].xyyw, 2D[0]; 66: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 67: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 68: MOV temp[1].w, temp[3].xxxx; 69: MUL temp[3].x, temp[4].wwww, input[0].wwww; 70: MOV temp[0].z, temp[3].xxxx; 71: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 72: MOV temp[0].y, const[0].yyyy; 73: ELSE; 74: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 75: MOV temp[0].z, temp[3].xxxx; 76: ABS temp[3].x, temp[3].xxxx; 77: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 78: IF temp[3].xxxx; 79: MOV temp[3].x, const[0].yyyy; 80: ELSE; 81: MOV temp[3].x, const[0].zzzz; 82: ENDIF; 83: MOV temp[0].y, temp[3].xxxx; 84: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 85: IF temp[3].xxxx; 86: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 87: TXL temp[3], temp[2].xyyw, 2D[1]; 88: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 89: MUL temp[2], temp[2], input[0]; 90: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 91: MOV temp[1].w, input[0].wwww; 92: ELSE; 93: MOV temp[1], const[0].zzzz; 94: ENDIF; 95: ENDIF; 96: ENDIF; 97: ENDIF; 98: ENDIF; 99: ENDIF; 100: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 101: IF temp[0].xxxx; 102: MOV temp[0], const[0].zzzz; 103: ELSE; 104: MOV temp[0], temp[1]; 105: ENDIF; 106: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: IF temp[1].xxxx; 3: KILP; 4: ENDIF; 5: SLT temp[1], input[4].zwww, temp[0].0000; 6: DP4_SAT temp[1].x, temp[1], temp[1]; 7: IF temp[1].xxxx; 8: KILP; 9: ENDIF; 10: ADD temp[0].x, const[0].xxxx, input[3].wwww; 11: FRC temp[1].x, temp[0].xxxx; 12: MOV temp[0].y, temp[1].xxxx; 13: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 14: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 15: IF temp[1].xxxx; 16: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 17: MOV temp[1].w, input[3].xxxx; 18: MOV temp[0].y, const[0].yyyy; 19: ELSE; 20: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 21: IF temp[2].xxxx; 22: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 23: TXL temp[3], temp[2].xyyw, 2D[1]; 24: MOV temp[2], temp[3]; 25: MUL temp[4], temp[3], input[0]; 26: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 27: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 28: MOV temp[1].w, temp[3].xxxx; 29: MOV temp[0].y, const[0].yyyy; 30: ELSE; 31: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 32: IF temp[3].xxxx; 33: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 34: TXL temp[3], temp[2].xyyw, 2D[1]; 35: MOV temp[2].w, temp[3]; 36: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 37: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 38: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 39: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 40: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 41: MOV temp[0].z, temp[3].xxxx; 42: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 43: MOV temp[1].w, temp[3].xxxx; 44: MOV temp[0].y, const[0].yyyy; 45: ELSE; 46: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 47: IF temp[3].xxxx; 48: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 49: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 50: TXL temp[3], temp[2].xyyw, 2D[1]; 51: TXL temp[5], temp[4].xyyw, 2D[0]; 52: MUL temp[2], temp[3], temp[5]; 53: MUL temp[4], temp[2], input[0]; 54: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 55: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 56: MOV temp[1].w, temp[3].xxxx; 57: MOV temp[0].y, const[0].yyyy; 58: ELSE; 59: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 60: IF temp[3].xxxx; 61: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 62: TXL temp[3], temp[2].xyyw, 2D[1]; 63: MOV temp[2].w, temp[3]; 64: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 65: TXL temp[4], temp[4].xyyw, 2D[0]; 66: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 67: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 68: MOV temp[1].w, temp[3].xxxx; 69: MUL temp[3].x, temp[4].wwww, input[0].wwww; 70: MOV temp[0].z, temp[3].xxxx; 71: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 72: MOV temp[0].y, const[0].yyyy; 73: ELSE; 74: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 75: MOV temp[0].z, temp[3].xxxx; 76: ABS temp[3].x, temp[3].xxxx; 77: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 78: IF temp[3].xxxx; 79: MOV temp[3].x, const[0].yyyy; 80: ELSE; 81: MOV temp[3].x, const[0].zzzz; 82: ENDIF; 83: MOV temp[0].y, temp[3].xxxx; 84: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 85: IF temp[3].xxxx; 86: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 87: TXL temp[3], temp[2].xyyw, 2D[1]; 88: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 89: MUL temp[2], temp[2], input[0]; 90: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 91: MOV temp[1].w, input[0].wwww; 92: ELSE; 93: MOV temp[1], const[0].zzzz; 94: ENDIF; 95: ENDIF; 96: ENDIF; 97: ENDIF; 98: ENDIF; 99: ENDIF; 100: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 101: IF temp[0].xxxx; 102: MOV temp[0], const[0].zzzz; 103: ELSE; 104: MOV temp[0], temp[1]; 105: ENDIF; 106: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: KIL -|temp[1].xxxx|; 3: SLT temp[1], input[4].zwww, temp[0].0000; 4: DP4_SAT temp[1].x, temp[1], temp[1]; 5: KIL -|temp[1].xxxx|; 6: ADD temp[0].x, const[0].xxxx, input[3].wwww; 7: FRC temp[1].x, temp[0].xxxx; 8: MOV temp[0].y, temp[1].xxxx; 9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 11: IF temp[1].xxxx; 12: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 13: MOV temp[1].w, input[3].xxxx; 14: MOV temp[0].y, const[0].yyyy; 15: ELSE; 16: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 17: IF temp[2].xxxx; 18: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 19: TXL temp[3], temp[2].xyyw, 2D[1]; 20: MOV temp[2], temp[3]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 23: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[0].y, const[0].yyyy; 26: ELSE; 27: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 28: IF temp[3].xxxx; 29: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 30: TXL temp[3], temp[2].xyyw, 2D[1]; 31: MOV temp[2].w, temp[3]; 32: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 33: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 34: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 35: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 36: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 37: MOV temp[0].z, temp[3].xxxx; 38: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 39: MOV temp[1].w, temp[3].xxxx; 40: MOV temp[0].y, const[0].yyyy; 41: ELSE; 42: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 43: IF temp[3].xxxx; 44: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 45: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 46: TXL temp[3], temp[2].xyyw, 2D[1]; 47: TXL temp[5], temp[4].xyyw, 2D[0]; 48: MUL temp[2], temp[3], temp[5]; 49: MUL temp[4], temp[2], input[0]; 50: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 51: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 52: MOV temp[1].w, temp[3].xxxx; 53: MOV temp[0].y, const[0].yyyy; 54: ELSE; 55: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 56: IF temp[3].xxxx; 57: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 58: TXL temp[3], temp[2].xyyw, 2D[1]; 59: MOV temp[2].w, temp[3]; 60: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 61: TXL temp[4], temp[4].xyyw, 2D[0]; 62: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 63: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 64: MOV temp[1].w, temp[3].xxxx; 65: MUL temp[3].x, temp[4].wwww, input[0].wwww; 66: MOV temp[0].z, temp[3].xxxx; 67: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 68: MOV temp[0].y, const[0].yyyy; 69: ELSE; 70: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 71: MOV temp[0].z, temp[3].xxxx; 72: ABS temp[3].x, temp[3].xxxx; 73: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 74: IF temp[3].xxxx; 75: MOV temp[3].x, const[0].yyyy; 76: ELSE; 77: MOV temp[3].x, const[0].zzzz; 78: ENDIF; 79: MOV temp[0].y, temp[3].xxxx; 80: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 81: IF temp[3].xxxx; 82: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 83: TXL temp[3], temp[2].xyyw, 2D[1]; 84: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 85: MUL temp[2], temp[2], input[0]; 86: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 87: MOV temp[1].w, input[0].wwww; 88: ELSE; 89: MOV temp[1], const[0].zzzz; 90: ENDIF; 91: ENDIF; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 97: IF temp[0].xxxx; 98: MOV temp[0], const[0].zzzz; 99: ELSE; 100: MOV temp[0], temp[1]; 101: ENDIF; 102: MOV output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: KIL -|temp[1].xxxx|; 3: SLT temp[1], input[4].zwww, temp[0].0000; 4: DP4_SAT temp[1].x, temp[1], temp[1]; 5: KIL -|temp[1].xxxx|; 6: ADD temp[0].x, const[0].xxxx, input[3].wwww; 7: FRC temp[1].x, temp[0].xxxx; 8: MOV temp[0].y, temp[1].xxxx; 9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 11: IF temp[1].xxxx; 12: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 13: MOV temp[1].w, input[3].xxxx; 14: MOV temp[0].y, const[0].yyyy; 15: ELSE; 16: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 17: IF temp[2].xxxx; 18: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 19: TXL temp[3], temp[2].xyyw, 2D[1]; 20: MOV temp[2], temp[3]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 23: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[0].y, const[0].yyyy; 26: ELSE; 27: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 28: IF temp[3].xxxx; 29: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 30: TXL temp[3], temp[2].xyyw, 2D[1]; 31: MOV temp[2].w, temp[3]; 32: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 33: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 34: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 35: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 36: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 37: MOV temp[0].z, temp[3].xxxx; 38: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 39: MOV temp[1].w, temp[3].xxxx; 40: MOV temp[0].y, const[0].yyyy; 41: ELSE; 42: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 43: IF temp[3].xxxx; 44: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 45: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 46: TXL temp[3], temp[2].xyyw, 2D[1]; 47: TXL temp[5], temp[4].xyyw, 2D[0]; 48: MUL temp[2], temp[3], temp[5]; 49: MUL temp[4], temp[2], input[0]; 50: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 51: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 52: MOV temp[1].w, temp[3].xxxx; 53: MOV temp[0].y, const[0].yyyy; 54: ELSE; 55: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 56: IF temp[3].xxxx; 57: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 58: TXL temp[3], temp[2].xyyw, 2D[1]; 59: MOV temp[2].w, temp[3]; 60: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 61: TXL temp[4], temp[4].xyyw, 2D[0]; 62: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 63: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 64: MOV temp[1].w, temp[3].xxxx; 65: MUL temp[3].x, temp[4].wwww, input[0].wwww; 66: MOV temp[0].z, temp[3].xxxx; 67: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 68: MOV temp[0].y, const[0].yyyy; 69: ELSE; 70: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 71: MOV temp[0].z, temp[3].xxxx; 72: ABS temp[3].x, temp[3].xxxx; 73: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 74: IF temp[3].xxxx; 75: MOV temp[3].x, const[0].yyyy; 76: ELSE; 77: MOV temp[3].x, const[0].zzzz; 78: ENDIF; 79: MOV temp[0].y, temp[3].xxxx; 80: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 81: IF temp[3].xxxx; 82: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 83: TXL temp[3], temp[2].xyyw, 2D[1]; 84: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 85: MUL temp[2], temp[2], input[0]; 86: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 87: MOV temp[1].w, input[0].wwww; 88: ELSE; 89: MOV temp[1], const[0].zzzz; 90: ENDIF; 91: ENDIF; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 97: IF temp[0].xxxx; 98: MOV temp[0], const[0].zzzz; 99: ELSE; 100: MOV temp[0], temp[1]; 101: ENDIF; 102: MOV output[0], temp[0]; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: KIL -|temp[1].xxxx|; 3: SLT temp[1], input[4].zwww, temp[0].0000; 4: DP4_SAT temp[1].x, temp[1], temp[1]; 5: KIL -|temp[1].xxxx|; 6: ADD temp[0].x, const[0].xxxx, input[3].wwww; 7: FRC temp[1].x, temp[0].xxxx; 8: MOV temp[0].y, temp[1].xxxx; 9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 11: IF temp[1].xxxx; 12: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 13: MOV temp[1].w, input[3].xxxx; 14: MOV temp[0].y, const[0].yyyy; 15: ELSE; 16: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 17: IF temp[2].xxxx; 18: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 19: TXL temp[3], temp[2].xyyw, 2D[1]; 20: MOV temp[2], temp[3]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 23: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[0].y, const[0].yyyy; 26: ELSE; 27: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 28: IF temp[3].xxxx; 29: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 30: TXL temp[3], temp[2].xyyw, 2D[1]; 31: MOV temp[2].w, temp[3]; 32: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 33: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 34: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 35: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 36: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 37: MOV temp[0].z, temp[3].xxxx; 38: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 39: MOV temp[1].w, temp[3].xxxx; 40: MOV temp[0].y, const[0].yyyy; 41: ELSE; 42: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 43: IF temp[3].xxxx; 44: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 45: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 46: TXL temp[3], temp[2].xyyw, 2D[1]; 47: TXL temp[5], temp[4].xyyw, 2D[0]; 48: MUL temp[2], temp[3], temp[5]; 49: MUL temp[4], temp[2], input[0]; 50: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 51: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 52: MOV temp[1].w, temp[3].xxxx; 53: MOV temp[0].y, const[0].yyyy; 54: ELSE; 55: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 56: IF temp[3].xxxx; 57: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 58: TXL temp[3], temp[2].xyyw, 2D[1]; 59: MOV temp[2].w, temp[3]; 60: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 61: TXL temp[4], temp[4].xyyw, 2D[0]; 62: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 63: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 64: MOV temp[1].w, temp[3].xxxx; 65: MUL temp[3].x, temp[4].wwww, input[0].wwww; 66: MOV temp[0].z, temp[3].xxxx; 67: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 68: MOV temp[0].y, const[0].yyyy; 69: ELSE; 70: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 71: MOV temp[0].z, temp[3].xxxx; 72: ABS temp[3].x, temp[3].xxxx; 73: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 74: IF temp[3].xxxx; 75: MOV temp[3].x, const[0].yyyy; 76: ELSE; 77: MOV temp[3].x, const[0].zzzz; 78: ENDIF; 79: MOV temp[0].y, temp[3].xxxx; 80: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 81: IF temp[3].xxxx; 82: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 83: TXL temp[3], temp[2].xyyw, 2D[1]; 84: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 85: MUL temp[2], temp[2], input[0]; 86: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 87: MOV temp[1].w, input[0].wwww; 88: ELSE; 89: MOV temp[1], const[0].zzzz; 90: ENDIF; 91: ENDIF; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 97: IF temp[0].xxxx; 98: MOV temp[0], const[0].zzzz; 99: ELSE; 100: MOV temp[0], temp[1]; 101: ENDIF; 102: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: KIL -|temp[1].xxxx|; 3: SLT temp[1], input[4].zwww, temp[0].0000; 4: DP4_SAT temp[1].x, temp[1], temp[1]; 5: KIL -|temp[1].xxxx|; 6: ADD temp[0].x, const[0].xxxx, input[3].wwww; 7: FRC temp[1].x, temp[0].xxxx; 8: MOV temp[0].y, temp[1].xxxx; 9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 10: SEQ temp[1].x, temp[0].xxxx, const[3].xxxx; 11: IF temp[1].xxxx; 12: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 13: MOV temp[1].w, input[3].xxxx; 14: MOV temp[0].y, const[0].yyyy; 15: ELSE; 16: SEQ temp[2].x, temp[0].xxxx, const[4].xxxx; 17: IF temp[2].xxxx; 18: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 19: TXL temp[3], temp[2].xyyw, 2D[1]; 20: MOV temp[2], temp[3]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 23: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[0].y, const[0].yyyy; 26: ELSE; 27: SEQ temp[3].x, temp[0].xxxx, const[5].xxxx; 28: IF temp[3].xxxx; 29: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 30: TXL temp[3], temp[2].xyyw, 2D[1]; 31: MOV temp[2].w, temp[3]; 32: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 33: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 34: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 35: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 36: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 37: MOV temp[0].z, temp[3].xxxx; 38: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 39: MOV temp[1].w, temp[3].xxxx; 40: MOV temp[0].y, const[0].yyyy; 41: ELSE; 42: SEQ temp[3].x, temp[0].xxxx, const[7].xxxx; 43: IF temp[3].xxxx; 44: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 45: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 46: TXL temp[3], temp[2].xyyw, 2D[1]; 47: TXL temp[5], temp[4].xyyw, 2D[0]; 48: MUL temp[2], temp[3], temp[5]; 49: MUL temp[4], temp[2], input[0]; 50: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 51: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 52: MOV temp[1].w, temp[3].xxxx; 53: MOV temp[0].y, const[0].yyyy; 54: ELSE; 55: SEQ temp[3].x, temp[0].xxxx, const[8].xxxx; 56: IF temp[3].xxxx; 57: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 58: TXL temp[3], temp[2].xyyw, 2D[1]; 59: MOV temp[2].w, temp[3]; 60: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 61: TXL temp[4], temp[4].xyyw, 2D[0]; 62: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 63: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 64: MOV temp[1].w, temp[3].xxxx; 65: MUL temp[3].x, temp[4].wwww, input[0].wwww; 66: MOV temp[0].z, temp[3].xxxx; 67: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 68: MOV temp[0].y, const[0].yyyy; 69: ELSE; 70: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 71: MOV temp[0].z, temp[3].xxxx; 72: ABS temp[3].x, temp[3].xxxx; 73: SGE temp[3].x, -temp[3].xxxx, temp[0].0000; 74: IF temp[3].xxxx; 75: MOV temp[3].x, const[0].yyyy; 76: ELSE; 77: MOV temp[3].x, const[0].zzzz; 78: ENDIF; 79: MOV temp[0].y, temp[3].xxxx; 80: SEQ temp[3].x, temp[0].xxxx, const[6].xxxx; 81: IF temp[3].xxxx; 82: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 83: TXL temp[3], temp[2].xyyw, 2D[1]; 84: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 85: MUL temp[2], temp[2], input[0]; 86: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 87: MOV temp[1].w, input[0].wwww; 88: ELSE; 89: MOV temp[1], const[0].zzzz; 90: ENDIF; 91: ENDIF; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: SGE temp[0].x, -temp[0].yyyy, temp[0].0000; 97: IF temp[0].xxxx; 98: MOV temp[0], const[0].zzzz; 99: ELSE; 100: MOV temp[0], temp[1]; 101: ENDIF; 102: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: SLT temp[0], input[4].xyyy, temp[0].0000; 1: DP4_SAT temp[1].x, temp[0], temp[0]; 2: KIL -|temp[1].xxxx|; 3: SLT temp[1], input[4].zwww, temp[0].0000; 4: DP4_SAT temp[1].x, temp[1], temp[1]; 5: KIL -|temp[1].xxxx|; 6: ADD temp[0].x, const[0].xxxx, input[3].wwww; 7: FRC temp[1].x, temp[0].xxxx; 8: MOV temp[0].y, temp[1].xxxx; 9: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 10: SUB none., temp[0].xxxx, const[3].xxxx; [aluresult = (x == 0)] 11: IF aluresult.x___; 12: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 13: MOV temp[1].w, input[3].xxxx; 14: MOV temp[0].y, const[0].yyyy; 15: ELSE; 16: SUB none., temp[0].xxxx, const[4].xxxx; [aluresult = (x == 0)] 17: IF aluresult.x___; 18: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 19: TXL temp[3], temp[2].xyyw, 2D[1]; 20: MOV temp[2], temp[3]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 23: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 24: MOV temp[1].w, temp[3].xxxx; 25: MOV temp[0].y, const[0].yyyy; 26: ELSE; 27: SUB none., temp[0].xxxx, const[5].xxxx; [aluresult = (x == 0)] 28: IF aluresult.x___; 29: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 30: TXL temp[3], temp[2].xyyw, 2D[1]; 31: MOV temp[2].w, temp[3]; 32: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 33: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 34: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 35: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 36: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 37: MOV temp[0].z, temp[3].xxxx; 38: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 39: MOV temp[1].w, temp[3].xxxx; 40: MOV temp[0].y, const[0].yyyy; 41: ELSE; 42: SUB none., temp[0].xxxx, const[7].xxxx; [aluresult = (x == 0)] 43: IF aluresult.x___; 44: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 45: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 46: TXL temp[3], temp[2].xyyw, 2D[1]; 47: TXL temp[5], temp[4].xyyw, 2D[0]; 48: MUL temp[2], temp[3], temp[5]; 49: MUL temp[4], temp[2], input[0]; 50: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 51: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 52: MOV temp[1].w, temp[3].xxxx; 53: MOV temp[0].y, const[0].yyyy; 54: ELSE; 55: SUB none., temp[0].xxxx, const[8].xxxx; [aluresult = (x == 0)] 56: IF aluresult.x___; 57: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 58: TXL temp[3], temp[2].xyyw, 2D[1]; 59: MOV temp[2].w, temp[3]; 60: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 61: TXL temp[4], temp[4].xyyw, 2D[0]; 62: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 63: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 64: MOV temp[1].w, temp[3].xxxx; 65: MUL temp[3].x, temp[4].wwww, input[0].wwww; 66: MOV temp[0].z, temp[3].xxxx; 67: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 68: MOV temp[0].y, const[0].yyyy; 69: ELSE; 70: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 71: MOV temp[0].z, temp[3].xxxx; 72: ABS temp[3].x, temp[3].xxxx; 73: SUB none., -temp[3].xxxx, temp[0].0000; [aluresult = (x >= 0)] 74: IF aluresult.x___; 75: MOV temp[3].x, const[0].yyyy; 76: ELSE; 77: MOV temp[3].x, const[0].zzzz; 78: ENDIF; 79: MOV temp[0].y, temp[3].xxxx; 80: SUB none., temp[0].xxxx, const[6].xxxx; [aluresult = (x == 0)] 81: IF aluresult.x___; 82: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 83: TXL temp[3], temp[2].xyyw, 2D[1]; 84: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 85: MUL temp[2], temp[2], input[0]; 86: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 87: MOV temp[1].w, input[0].wwww; 88: ELSE; 89: MOV temp[1], const[0].zzzz; 90: ENDIF; 91: ENDIF; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: SUB none., -temp[0].yyyy, temp[0].0000; [aluresult = (x >= 0)] 97: IF aluresult.x___; 98: MOV temp[0], const[0].zzzz; 99: ELSE; 100: MOV temp[0], temp[1]; 101: ENDIF; 102: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[6], input[4].xyyy, -temp[0].0000; 1: CMP temp[0], temp[6], none.1111, none.0000; 2: DP4_SAT temp[1].x, temp[0], temp[0]; 3: KIL -|temp[1].xxxx|; 4: ADD temp[1], input[4].zwww, -temp[0].0000; 5: CMP temp[1], temp[1], none.1111, none.0000; 6: DP4_SAT temp[1].x, temp[1], temp[1]; 7: KIL -|temp[1].xxxx|; 8: ADD temp[0].x, const[0].xxxx, input[3].wwww; 9: FRC temp[1].x, temp[0].xxxx; 10: MOV temp[0].y, temp[1].xxxx; 11: ADD temp[0].x, -temp[1].xxxx, temp[0].xxxx; 12: ADD none., temp[0].xxxx, -const[3].xxxx; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MUL temp[1].xyz, input[0].wwww, input[0].xyzz; 15: MOV temp[1].w, input[3].xxxx; 16: MOV temp[0].y, const[0].yyyy; 17: ELSE; 18: ADD none., temp[0].xxxx, -const[4].xxxx; [aluresult = (x == 0)] 19: IF aluresult.x___; 20: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 21: TXL temp[3], temp[2].xyyw, 2D[1]; 22: MOV temp[2], temp[3]; 23: MUL temp[4], temp[3], input[0]; 24: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 25: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 26: MOV temp[1].w, temp[3].xxxx; 27: MOV temp[0].y, const[0].yyyy; 28: ELSE; 29: ADD none., temp[0].xxxx, -const[5].xxxx; [aluresult = (x == 0)] 30: IF aluresult.x___; 31: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 32: TXL temp[3], temp[2].xyyw, 2D[1]; 33: MOV temp[2].w, temp[3]; 34: ADD temp[2].xyz, temp[3].xyzz, const[0].wwww; 35: ADD temp[2].xyz, temp[2].xyzz, temp[2].xyzz; 36: DP3 temp[5].x, temp[2].xyzz, const[9].xyzz; 37: MUL temp[1].xyz, temp[3].wwww, temp[5].xxxx; 38: MUL temp[3].x, temp[3].wwww, input[3].xxxx; 39: MOV temp[0].z, temp[3].xxxx; 40: MUL temp[3].x, temp[3].xxxx, input[0].wwww; 41: MOV temp[1].w, temp[3].xxxx; 42: MOV temp[0].y, const[0].yyyy; 43: ELSE; 44: ADD none., temp[0].xxxx, -const[7].xxxx; [aluresult = (x == 0)] 45: IF aluresult.x___; 46: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 47: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 48: TXL temp[3], temp[2].xyyw, 2D[1]; 49: TXL temp[5], temp[4].xyyw, 2D[0]; 50: MUL temp[2], temp[3], temp[5]; 51: MUL temp[4], temp[2], input[0]; 52: MUL temp[1].xyz, temp[4].wwww, temp[4].xyzz; 53: MUL temp[3].x, temp[2].wwww, input[3].xxxx; 54: MOV temp[1].w, temp[3].xxxx; 55: MOV temp[0].y, const[0].yyyy; 56: ELSE; 57: ADD none., temp[0].xxxx, -const[8].xxxx; [aluresult = (x == 0)] 58: IF aluresult.x___; 59: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 60: TXL temp[3], temp[2].xyyw, 2D[1]; 61: MOV temp[2].w, temp[3]; 62: MUL temp[4].xyw, const[0].yyzz, input[2].xyxx; 63: TXL temp[4], temp[4].xyyw, 2D[0]; 64: MUL temp[2].xyz, temp[3].xyzz, input[0].xyzz; 65: MUL temp[3].x, temp[4].wwww, input[3].xxxx; 66: MOV temp[1].w, temp[3].xxxx; 67: MUL temp[3].x, temp[4].wwww, input[0].wwww; 68: MOV temp[0].z, temp[3].xxxx; 69: MUL temp[1].xyz, temp[3].xxxx, temp[2].xyzz; 70: MOV temp[0].y, const[0].yyyy; 71: ELSE; 72: ADD temp[3].x, temp[0].xxxx, -const[6].xxxx; 73: MOV temp[0].z, temp[3].xxxx; 74: MOV temp[3].x, |temp[3].xxxx|; 75: ADD none., -temp[3].xxxx, -temp[0].0000; [aluresult = (x >= 0)] 76: IF aluresult.x___; 77: MOV temp[3].x, const[0].yyyy; 78: ELSE; 79: MOV temp[3].x, const[0].zzzz; 80: ENDIF; 81: MOV temp[0].y, temp[3].xxxx; 82: ADD none., temp[0].xxxx, -const[6].xxxx; [aluresult = (x == 0)] 83: IF aluresult.x___; 84: MUL temp[2].xyw, const[0].yyzz, input[1].xyxx; 85: TXL temp[3], temp[2].xyyw, 2D[1]; 86: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 87: MUL temp[2], temp[2], input[0]; 88: MUL temp[1].xyz, temp[2].wwww, temp[2].xyzz; 89: MOV temp[1].w, input[0].wwww; 90: ELSE; 91: MOV temp[1], const[0].zzzz; 92: ENDIF; 93: ENDIF; 94: ENDIF; 95: ENDIF; 96: ENDIF; 97: ENDIF; 98: ADD none., -temp[0].yyyy, -temp[0].0000; [aluresult = (x >= 0)] 99: IF aluresult.x___; 100: MOV temp[0], const[0].zzzz; 101: ELSE; 102: MOV temp[0], temp[1]; 103: ENDIF; 104: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[6], input[4].xyyy, -temp[0].0000; 1: CMP temp[0], temp[6], none.1111, none.0000; 2: DP4_SAT temp[1].x, temp[0], temp[0]; 3: KIL -|temp[1].xxxx|; 4: ADD temp[1], input[4].zwww, -temp[0].0000; 5: CMP temp[1], temp[1], none.1111, none.0000; 6: DP4_SAT temp[1].x, temp[1], temp[1]; 7: KIL -|temp[1].xxxx|; 8: ADD temp[0].x, const[0].x___, input[3].w___; 9: FRC temp[1].x, temp[0].x___; 10: ADD temp[0].x, -temp[1].x___, temp[0].x___; 11: ADD none., temp[0].x___, -const[3].x___; [aluresult = (x == 0)] 12: IF aluresult.x___; 13: MUL temp[1].xyz, input[0].www_, input[0].xyz_; 14: MOV temp[1].w, input[3].___x; 15: MOV temp[0].y, const[0]._y__; 16: ELSE; 17: ADD none., temp[0].x___, -const[4].x___; [aluresult = (x == 0)] 18: IF aluresult.x___; 19: MUL temp[2].xyw, const[0].yy_z, input[1].xy_x; 20: TXL temp[3], temp[2].xy_w, 2D[1]; 21: MUL temp[4], temp[3], input[0]; 22: MUL temp[1].xyz, temp[4].www_, temp[4].xyz_; 23: MUL temp[3].x, temp[3].w___, input[3].x___; 24: MOV temp[1].w, temp[3].___x; 25: MOV temp[0].y, const[0]._y__; 26: ELSE; 27: ADD none., temp[0].x___, -const[5].x___; [aluresult = (x == 0)] 28: IF aluresult.x___; 29: MUL temp[2].xyw, const[0].yy_z, input[1].xy_x; 30: TXL temp[3], temp[2].xy_w, 2D[1]; 31: ADD temp[2].xyz, temp[3].xyz_, const[0].www_; 32: ADD temp[2].xyz, temp[2].xyz_, temp[2].xyz_; 33: DP3 temp[5].x, temp[2].xyz_, const[9].xyz_; 34: MUL temp[1].xyz, temp[3].www_, temp[5].xxx_; 35: MUL temp[3].x, temp[3].w___, input[3].x___; 36: MUL temp[3].x, temp[3].x___, input[0].w___; 37: MOV temp[1].w, temp[3].___x; 38: MOV temp[0].y, const[0]._y__; 39: ELSE; 40: ADD none., temp[0].x___, -const[7].x___; [aluresult = (x == 0)] 41: IF aluresult.x___; 42: MUL temp[2].xyw, const[0].yy_z, input[1].xy_x; 43: MUL temp[4].xyw, const[0].yy_z, input[2].xy_x; 44: TXL temp[3], temp[2].xy_w, 2D[1]; 45: TXL temp[5], temp[4].xy_w, 2D[0]; 46: MUL temp[2], temp[3], temp[5]; 47: MUL temp[4], temp[2], input[0]; 48: MUL temp[1].xyz, temp[4].www_, temp[4].xyz_; 49: MUL temp[3].x, temp[2].w___, input[3].x___; 50: MOV temp[1].w, temp[3].___x; 51: MOV temp[0].y, const[0]._y__; 52: ELSE; 53: ADD none., temp[0].x___, -const[8].x___; [aluresult = (x == 0)] 54: IF aluresult.x___; 55: MUL temp[2].xyw, const[0].yy_z, input[1].xy_x; 56: TXL temp[3].xyz, temp[2].xy_w, 2D[1]; 57: MUL temp[4].xyw, const[0].yy_z, input[2].xy_x; 58: TXL temp[4].w, temp[4].xy_w, 2D[0]; 59: MUL temp[2].xyz, temp[3].xyz_, input[0].xyz_; 60: MUL temp[3].x, temp[4].w___, input[3].x___; 61: MOV temp[1].w, temp[3].___x; 62: MUL temp[3].x, temp[4].w___, input[0].w___; 63: MUL temp[1].xyz, temp[3].xxx_, temp[2].xyz_; 64: MOV temp[0].y, const[0]._y__; 65: ELSE; 66: ADD temp[3].x, temp[0].x___, -const[6].x___; 67: MOV temp[3].x, |temp[3].x___|; 68: ADD none., -temp[3].x___, -temp[0].0___; [aluresult = (x >= 0)] 69: IF aluresult.x___; 70: MOV temp[3].x, const[0].y___; 71: ELSE; 72: MOV temp[3].x, const[0].z___; 73: ENDIF; 74: MOV temp[0].y, temp[3]._x__; 75: ADD none., temp[0].x___, -const[6].x___; [aluresult = (x == 0)] 76: IF aluresult.x___; 77: MUL temp[2].xyw, const[0].yy_z, input[1].xy_x; 78: TXL temp[3].xyz, temp[2].xy_w, 2D[1]; 79: MAD temp[2], temp[3].xyzx, const[0].yyyz, const[0].zzzy; 80: MUL temp[2], temp[2], input[0]; 81: MUL temp[1].xyz, temp[2].www_, temp[2].xyz_; 82: MOV temp[1].w, input[0].___w; 83: ELSE; 84: MOV temp[1], const[0].zzzz; 85: ENDIF; 86: ENDIF; 87: ENDIF; 88: ENDIF; 89: ENDIF; 90: ENDIF; 91: ADD none., -temp[0].y___, -temp[0].0___; [aluresult = (x >= 0)] 92: IF aluresult.x___; 93: MOV temp[0], const[0].zzzz; 94: ELSE; 95: MOV temp[0], temp[1]; 96: ENDIF; 97: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[7], input[4].xyyy, -temp[0].0000; 1: CMP temp[8], temp[7], none.1111, none.0000; 2: DP4_SAT temp[9].x, temp[8], temp[8]; 3: KIL -|temp[9].xxxx|; 4: ADD temp[10], input[4].zwww, -temp[0].0000; 5: CMP temp[11], temp[10], none.1111, none.0000; 6: DP4_SAT temp[12].x, temp[11], temp[11]; 7: KIL -|temp[12].xxxx|; 8: ADD temp[13].x, const[0].x___, input[3].w___; 9: FRC temp[14].x, temp[13].x___; 10: ADD temp[15].x, -temp[14].x___, temp[13].x___; 11: ADD none., temp[15].x___, -const[3].x___; [aluresult = (x == 0)] 12: IF aluresult.x___; 13: MUL temp[1].xyz, input[0].www_, input[0].xyz_; 14: MOV temp[1].w, input[3].___x; 15: MOV temp[0].y, const[0]._y__; 16: ELSE; 17: ADD none., temp[15].x___, -const[4].x___; [aluresult = (x == 0)] 18: IF aluresult.x___; 19: MUL temp[16].xyw, const[0].yy_z, input[1].xy_x; 20: TXL temp[17], temp[16].xy_w, 2D[1]; 21: MUL temp[18], temp[17], input[0]; 22: MUL temp[1].xyz, temp[18].www_, temp[18].xyz_; 23: MUL temp[19].x, temp[17].w___, input[3].x___; 24: MOV temp[1].w, temp[19].___x; 25: MOV temp[0].y, const[0]._y__; 26: ELSE; 27: ADD none., temp[15].x___, -const[5].x___; [aluresult = (x == 0)] 28: IF aluresult.x___; 29: MUL temp[20].xyw, const[0].yy_z, input[1].xy_x; 30: TXL temp[21], temp[20].xy_w, 2D[1]; 31: ADD temp[22].xyz, temp[21].xyz_, const[0].www_; 32: ADD temp[23].xyz, temp[22].xyz_, temp[22].xyz_; 33: DP3 temp[24].x, temp[23].xyz_, const[9].xyz_; 34: MUL temp[1].xyz, temp[21].www_, temp[24].xxx_; 35: MUL temp[25].x, temp[21].w___, input[3].x___; 36: MUL temp[26].x, temp[25].x___, input[0].w___; 37: MOV temp[1].w, temp[26].___x; 38: MOV temp[0].y, const[0]._y__; 39: ELSE; 40: ADD none., temp[15].x___, -const[7].x___; [aluresult = (x == 0)] 41: IF aluresult.x___; 42: MUL temp[27].xyw, const[0].yy_z, input[1].xy_x; 43: MUL temp[28].xyw, const[0].yy_z, input[2].xy_x; 44: TXL temp[29], temp[27].xy_w, 2D[1]; 45: TXL temp[30], temp[28].xy_w, 2D[0]; 46: MUL temp[31], temp[29], temp[30]; 47: MUL temp[32], temp[31], input[0]; 48: MUL temp[1].xyz, temp[32].www_, temp[32].xyz_; 49: MUL temp[33].x, temp[31].w___, input[3].x___; 50: MOV temp[1].w, temp[33].___x; 51: MOV temp[0].y, const[0]._y__; 52: ELSE; 53: ADD none., temp[15].x___, -const[8].x___; [aluresult = (x == 0)] 54: IF aluresult.x___; 55: MUL temp[34].xyw, const[0].yy_z, input[1].xy_x; 56: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 57: MUL temp[36].xyw, const[0].yy_z, input[2].xy_x; 58: TXL temp[37].w, temp[36].xy_w, 2D[0]; 59: MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_; 60: MUL temp[39].x, temp[37].w___, input[3].x___; 61: MOV temp[1].w, temp[39].___x; 62: MUL temp[40].x, temp[37].w___, input[0].w___; 63: MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_; 64: MOV temp[0].y, const[0]._y__; 65: ELSE; 66: ADD temp[41].x, temp[15].x___, -const[6].x___; 67: MOV temp[42].x, |temp[41].x___|; 68: ADD none., -temp[42].x___, -temp[0].0___; [aluresult = (x >= 0)] 69: IF aluresult.x___; 70: MOV temp[3].x, const[0].y___; 71: ELSE; 72: MOV temp[3].x, const[0].z___; 73: ENDIF; 74: MOV temp[0].y, temp[3]._x__; 75: ADD none., temp[15].x___, -const[6].x___; [aluresult = (x == 0)] 76: IF aluresult.x___; 77: MUL temp[43].xyw, const[0].yy_z, input[1].xy_x; 78: TXL temp[44].xyz, temp[43].xy_w, 2D[1]; 79: MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy; 80: MUL temp[46], temp[45], input[0]; 81: MUL temp[1].xyz, temp[46].www_, temp[46].xyz_; 82: MOV temp[1].w, input[0].___w; 83: ELSE; 84: MOV temp[1], const[0].zzzz; 85: ENDIF; 86: ENDIF; 87: ENDIF; 88: ENDIF; 89: ENDIF; 90: ENDIF; 91: ADD none., -temp[0].y___, -temp[0].0___; [aluresult = (x >= 0)] 92: IF aluresult.x___; 93: MOV temp[0], const[0].zzzz; 94: ELSE; 95: MOV temp[0], temp[1]; 96: ENDIF; 97: MOV_SAT output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: CMP temp[8], input[4].xyyy, none.1111, none.0000; 1: DP4_SAT temp[9].x, temp[8], temp[8]; 2: KIL -|temp[9].xxxx|; 3: CMP temp[11], input[4].zwww, none.1111, none.0000; 4: DP4_SAT temp[12].x, temp[11], temp[11]; 5: KIL -|temp[12].xxxx|; 6: ADD temp[13].x, const[0].x___, input[3].w___; 7: FRC temp[14].x, temp[13].x___; 8: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)] 9: IF aluresult.x___; 10: MUL temp[1].xyz, input[0].www_, input[0].xyz_; 11: MOV temp[1].w, input[3].___x; 12: MOV temp[0].y, const[0]._y__; 13: ELSE; 14: ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)] 15: IF aluresult.x___; 16: MUL temp[16].xyw, const[0].yy_z, input[1].xy_x; 17: TXL temp[17], temp[16].xy_w, 2D[1]; 18: MUL temp[18], temp[17], input[0]; 19: MUL temp[1].xyz, temp[18].www_, temp[18].xyz_; 20: MUL temp[19].x, temp[17].w___, input[3].x___; 21: MOV temp[1].w, temp[19].___x; 22: MOV temp[0].y, const[0]._y__; 23: ELSE; 24: ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)] 25: IF aluresult.x___; 26: MUL temp[20].xyw, const[0].yy_z, input[1].xy_x; 27: TXL temp[21], temp[20].xy_w, 2D[1]; 28: ADD temp[22].xyz, temp[21].xyz_, const[0].www_; 29: DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_; 30: MUL temp[1].xyz, temp[21].www_, temp[24].xxx_; 31: MUL temp[25].x, temp[21].w___, input[3].x___; 32: MUL temp[26].x, temp[25].x___, input[0].w___; 33: MOV temp[1].w, temp[26].___x; 34: MOV temp[0].y, const[0]._y__; 35: ELSE; 36: ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)] 37: IF aluresult.x___; 38: MUL temp[27].xyw, const[0].yy_z, input[1].xy_x; 39: MUL temp[28].xyw, const[0].yy_z, input[2].xy_x; 40: TXL temp[29], temp[27].xy_w, 2D[1]; 41: TXL temp[30], temp[28].xy_w, 2D[0]; 42: MUL temp[31], temp[29], temp[30]; 43: MUL temp[32], temp[31], input[0]; 44: MUL temp[1].xyz, temp[32].www_, temp[32].xyz_; 45: MUL temp[33].x, temp[31].w___, input[3].x___; 46: MOV temp[1].w, temp[33].___x; 47: MOV temp[0].y, const[0]._y__; 48: ELSE; 49: ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)] 50: IF aluresult.x___; 51: MUL temp[34].xyw, const[0].yy_z, input[1].xy_x; 52: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 53: MUL temp[36].xyw, const[0].yy_z, input[2].xy_x; 54: TXL temp[37].w, temp[36].xy_w, 2D[0]; 55: MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_; 56: MUL temp[39].x, temp[37].w___, input[3].x___; 57: MOV temp[1].w, temp[39].___x; 58: MUL temp[40].x, temp[37].w___, input[0].w___; 59: MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_; 60: MOV temp[0].y, const[0]._y__; 61: ELSE; 62: ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___; 63: MOV none., -|temp[41].x___|; [aluresult = (x >= 0)] 64: IF aluresult.x___; 65: MOV temp[3].x, const[0].y___; 66: ELSE; 67: MOV temp[3].x, const[0].z___; 68: ENDIF; 69: MOV temp[0].y, temp[3]._x__; 70: ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)] 71: IF aluresult.x___; 72: MUL temp[43].xyw, const[0].yy_z, input[1].xy_x; 73: TXL temp[44].xyz, temp[43].xy_w, 2D[1]; 74: MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy; 75: MUL temp[46], temp[45], input[0]; 76: MUL temp[1].xyz, temp[46].www_, temp[46].xyz_; 77: MOV temp[1].w, input[0].___w; 78: ELSE; 79: MOV temp[1], const[0].zzzz; 80: ENDIF; 81: ENDIF; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: MOV none., -temp[0].y___; [aluresult = (x >= 0)] 87: IF aluresult.x___; 88: MOV temp[0], const[0].zzzz; 89: ELSE; 90: MOV temp[0], temp[1]; 91: ENDIF; 92: MOV_SAT output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: CMP temp[8], input[4].xyyy, none.1111, none.0000; 1: DP4_SAT temp[9].x, temp[8], temp[8]; 2: MOV temp[2], -|temp[9].xxxx|; 3: KIL temp[2]; 4: CMP temp[11], input[4].zwww, none.1111, none.0000; 5: DP4_SAT temp[12].x, temp[11], temp[11]; 6: MOV temp[4], -|temp[12].xxxx|; 7: KIL temp[4]; 8: ADD temp[13].x, const[0].x___, input[3].w___; 9: FRC temp[14].x, temp[13].x___; 10: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)] 11: IF aluresult.x___; 12: MUL temp[1].xyz, input[0].www_, input[0].xyz_; 13: MOV temp[1].w, input[3].___x; 14: MOV temp[0].y, const[0]._y__; 15: ELSE; 16: ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)] 17: IF aluresult.x___; 18: MUL temp[16].xyw, const[0].yy_z, input[1].xy_x; 19: TXL temp[17], temp[16].xy_w, 2D[1]; 20: MUL temp[18], temp[17], input[0]; 21: MUL temp[1].xyz, temp[18].www_, temp[18].xyz_; 22: MUL temp[19].x, temp[17].w___, input[3].x___; 23: MOV temp[1].w, temp[19].___x; 24: MOV temp[0].y, const[0]._y__; 25: ELSE; 26: ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)] 27: IF aluresult.x___; 28: MUL temp[20].xyw, const[0].yy_z, input[1].xy_x; 29: TXL temp[21], temp[20].xy_w, 2D[1]; 30: ADD temp[22].xyz, temp[21].xyz_, const[0].www_; 31: DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_; 32: MUL temp[1].xyz, temp[21].www_, temp[24].xxx_; 33: MUL temp[25].x, temp[21].w___, input[3].x___; 34: MUL temp[26].x, temp[25].x___, input[0].w___; 35: MOV temp[1].w, temp[26].___x; 36: MOV temp[0].y, const[0]._y__; 37: ELSE; 38: ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)] 39: IF aluresult.x___; 40: MUL temp[27].xyw, const[0].yy_z, input[1].xy_x; 41: MUL temp[28].xyw, const[0].yy_z, input[2].xy_x; 42: TXL temp[29], temp[27].xy_w, 2D[1]; 43: TXL temp[30], temp[28].xy_w, 2D[0]; 44: MUL temp[31], temp[29], temp[30]; 45: MUL temp[32], temp[31], input[0]; 46: MUL temp[1].xyz, temp[32].www_, temp[32].xyz_; 47: MUL temp[33].x, temp[31].w___, input[3].x___; 48: MOV temp[1].w, temp[33].___x; 49: MOV temp[0].y, const[0]._y__; 50: ELSE; 51: ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)] 52: IF aluresult.x___; 53: MUL temp[34].xyw, const[0].yy_z, input[1].xy_x; 54: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 55: MUL temp[36].xyw, const[0].yy_z, input[2].xy_x; 56: TXL temp[37].w, temp[36].xy_w, 2D[0]; 57: MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_; 58: MUL temp[39].x, temp[37].w___, input[3].x___; 59: MOV temp[1].w, temp[39].___x; 60: MUL temp[40].x, temp[37].w___, input[0].w___; 61: MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_; 62: MOV temp[0].y, const[0]._y__; 63: ELSE; 64: ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___; 65: MOV none., -|temp[41].x___|; [aluresult = (x >= 0)] 66: IF aluresult.x___; 67: MOV temp[3].x, const[0].y___; 68: ELSE; 69: MOV temp[3].x, const[0].z___; 70: ENDIF; 71: MOV temp[0].y, temp[3]._x__; 72: ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)] 73: IF aluresult.x___; 74: MUL temp[43].xyw, const[0].yy_z, input[1].xy_x; 75: TXL temp[44].xyz, temp[43].xy_w, 2D[1]; 76: MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy; 77: MUL temp[46], temp[45], input[0]; 78: MUL temp[1].xyz, temp[46].www_, temp[46].xyz_; 79: MOV temp[1].w, input[0].___w; 80: ELSE; 81: MOV temp[1], const[0].zzzz; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: ENDIF; 87: ENDIF; 88: MOV none., -temp[0].y___; [aluresult = (x >= 0)] 89: IF aluresult.x___; 90: MOV temp[0], const[0].zzzz; 91: ELSE; 92: MOV temp[0], temp[1]; 93: ENDIF; 94: MOV_SAT output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: CMP temp[8], input[4].xyyy, none.1111, none.0000; 1: DP4_SAT temp[9].x, temp[8], temp[8]; 2: MOV temp[2], -|temp[9].xxxx|; 3: KIL temp[2]; 4: CMP temp[11], input[4].zwww, none.1111, none.0000; 5: DP4_SAT temp[12].x, temp[11], temp[11]; 6: MOV temp[4], -|temp[12].xxxx|; 7: KIL temp[4]; 8: ADD temp[13].x, const[0].x___, input[3].w___; 9: FRC temp[14].x, temp[13].x___; 10: ADD none., (temp[13] - temp[14]).x___, -const[3].x___; [aluresult = (x == 0)] 11: IF aluresult.x___; 12: MUL temp[1].xyz, input[0].www_, input[0].xyz_; 13: MOV temp[1].w, input[3].___x; 14: MOV temp[0].y, const[0]._y__; 15: ELSE; 16: ADD none., (temp[13] - temp[14]).x___, -const[4].x___; [aluresult = (x == 0)] 17: IF aluresult.x___; 18: MUL temp[16].xyw, const[0].yy_z, input[1].xy_x; 19: TXL temp[17], temp[16].xy_w, 2D[1]; 20: MUL temp[18], temp[17], input[0]; 21: MUL temp[1].xyz, temp[18].www_, temp[18].xyz_; 22: MUL temp[19].x, temp[17].w___, input[3].x___; 23: MOV temp[1].w, temp[19].___x; 24: MOV temp[0].y, const[0]._y__; 25: ELSE; 26: ADD none., (temp[13] - temp[14]).x___, -const[5].x___; [aluresult = (x == 0)] 27: IF aluresult.x___; 28: MUL temp[20].xyw, const[0].yy_z, input[1].xy_x; 29: TXL temp[21], temp[20].xy_w, 2D[1]; 30: ADD temp[22].xyz, temp[21].xyz_, const[0].www_; 31: DP3 temp[24].x, (temp[22] + temp[22]).xyz_, const[9].xyz_; 32: MUL temp[1].xyz, temp[21].www_, temp[24].xxx_; 33: MUL temp[25].x, temp[21].w___, input[3].x___; 34: MUL temp[26].x, temp[25].x___, input[0].w___; 35: MOV temp[1].w, temp[26].___x; 36: MOV temp[0].y, const[0]._y__; 37: ELSE; 38: ADD none., (temp[13] - temp[14]).x___, -const[7].x___; [aluresult = (x == 0)] 39: IF aluresult.x___; 40: MUL temp[27].xyw, const[0].yy_z, input[1].xy_x; 41: MUL temp[28].xyw, const[0].yy_z, input[2].xy_x; 42: TXL temp[29], temp[27].xy_w, 2D[1]; 43: TXL temp[30], temp[28].xy_w, 2D[0]; 44: MUL temp[31], temp[29], temp[30]; 45: MUL temp[32], temp[31], input[0]; 46: MUL temp[1].xyz, temp[32].www_, temp[32].xyz_; 47: MUL temp[33].x, temp[31].w___, input[3].x___; 48: MOV temp[1].w, temp[33].___x; 49: MOV temp[0].y, const[0]._y__; 50: ELSE; 51: ADD none., (temp[13] - temp[14]).x___, -const[8].x___; [aluresult = (x == 0)] 52: IF aluresult.x___; 53: MUL temp[34].xyw, const[0].yy_z, input[1].xy_x; 54: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 55: MUL temp[36].xyw, const[0].yy_z, input[2].xy_x; 56: TXL temp[37].w, temp[36].xy_w, 2D[0]; 57: MUL temp[38].xyz, temp[35].xyz_, input[0].xyz_; 58: MUL temp[39].x, temp[37].w___, input[3].x___; 59: MOV temp[1].w, temp[39].___x; 60: MUL temp[40].x, temp[37].w___, input[0].w___; 61: MUL temp[1].xyz, temp[40].xxx_, temp[38].xyz_; 62: MOV temp[0].y, const[0]._y__; 63: ELSE; 64: ADD temp[41].x, (temp[13] - temp[14]).x___, -const[6].x___; 65: MOV none., -|temp[41].x___|; [aluresult = (x >= 0)] 66: IF aluresult.x___; 67: MOV temp[3].x, const[0].y___; 68: ELSE; 69: MOV temp[3].x, const[0].z___; 70: ENDIF; 71: MOV temp[0].y, temp[3]._x__; 72: ADD none., (temp[13] - temp[14]).x___, -const[6].x___; [aluresult = (x == 0)] 73: IF aluresult.x___; 74: MUL temp[43].xyw, const[0].yy_z, input[1].xy_x; 75: TXL temp[44].xyz, temp[43].xy_w, 2D[1]; 76: MAD temp[45], temp[44].xyzx, const[0].yyyz, const[0].zzzy; 77: MUL temp[46], temp[45], input[0]; 78: MUL temp[1].xyz, temp[46].www_, temp[46].xyz_; 79: MOV temp[1].w, input[0].___w; 80: ELSE; 81: MOV temp[1], const[0].zzzz; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: ENDIF; 87: ENDIF; 88: MOV none., -temp[0].y___; [aluresult = (x >= 0)] 89: IF aluresult.x___; 90: MOV temp[0], const[0].zzzz; 91: ELSE; 92: MOV temp[0], temp[1]; 93: ENDIF; 94: MOV_SAT output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[4] CMP temp[8].xyz, src0.000, src0.111, src0.xyy CMP temp[8].w, src0.0, src0.1, src0.y 1: src0.xyz = temp[8], src0.w = temp[8] DP4_SAT temp[9].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 2: src0.xyz = temp[9] MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[2].w, -|src0.x|, src0.1, src0.0 3: KIL temp[2]; 4: src0.xyz = input[4], src0.w = input[4] CMP temp[11].xyz, src0.000, src0.111, src0.zww CMP temp[11].w, src0.0, src0.1, src0.w 5: src0.xyz = temp[11], src0.w = temp[11] DP4_SAT temp[12].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 6: src0.xyz = temp[12] MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[4].w, -|src0.x|, src0.1, src0.0 7: KIL temp[4]; 8: src0.xyz = const[0], src0.w = input[3] MAD temp[13].x, src0.x__, src0.111, src0.w__ 9: src0.xyz = temp[13] FRC temp[14].x, src0.x__ 10: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 11: IF aluresult.x___; 12: src0.xyz = input[0], src0.w = input[0] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 13: src0.xyz = input[3] MAD temp[1].w, src0.x, src0.1, src0.0 14: src0.xyz = const[0] MAD temp[0].y, src0._y_, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 17: IF aluresult.x___; 18: src0.xyz = const[0], src1.xyz = input[1] MAD temp[16].xy, src0.yy_, src1.xy_, src0.000 MAD temp[16].w, src0.z, src1.x, src0.0 19: TXL temp[17], temp[16].xy_w, 2D[1]; 20: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0] MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 21: src0.xyz = temp[18], src0.w = temp[18] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 22: src0.xyz = input[3], src0.w = temp[17] MAD temp[19].x, src0.w__, src0.x__, src0.000 23: src0.xyz = temp[19] MAD temp[1].w, src0.x, src0.1, src0.0 24: src0.xyz = const[0] MAD temp[0].y, src0._y_, src0.111, src0.000 25: ELSE; 26: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 27: IF aluresult.x___; 28: src0.xyz = const[0], src1.xyz = input[1] MAD temp[20].xy, src0.yy_, src1.xy_, src0.000 MAD temp[20].w, src0.z, src1.x, src0.0 29: TXL temp[21], temp[20].xy_w, 2D[1]; 30: src0.xyz = temp[21], src0.w = const[0] MAD temp[22].xyz, src0.xyz, src0.111, src0.www 31: src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0) DP3 temp[24].x, srcp.xyz, src2.xyz 32: src0.xyz = temp[24], src0.w = temp[21] MAD temp[1].xyz, src0.www, src0.xxx, src0.000 33: src0.xyz = input[3], src0.w = temp[21] MAD temp[25].x, src0.w__, src0.x__, src0.000 34: src0.xyz = temp[25], src0.w = input[0] MAD temp[26].x, src0.x__, src0.w__, src0.000 35: src0.xyz = temp[26] MAD temp[1].w, src0.x, src0.1, src0.0 36: src0.xyz = const[0] MAD temp[0].y, src0._y_, src0.111, src0.000 37: ELSE; 38: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 39: IF aluresult.x___; 40: src0.xyz = const[0], src1.xyz = input[1] MAD temp[27].xy, src0.yy_, src1.xy_, src0.000 MAD temp[27].w, src0.z, src1.x, src0.0 41: src0.xyz = const[0], src1.xyz = input[2] MAD temp[28].xy, src0.yy_, src1.xy_, src0.000 MAD temp[28].w, src0.z, src1.x, src0.0 42: TXL temp[29], temp[27].xy_w, 2D[1]; 43: TXL temp[30], temp[28].xy_w, 2D[0]; 44: src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30] MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[31].w, src0.w, src1.w, src0.0 45: src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0] MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[32].w, src0.w, src1.w, src0.0 46: src0.xyz = temp[32], src0.w = temp[32] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 47: src0.xyz = input[3], src0.w = temp[31] MAD temp[33].x, src0.w__, src0.x__, src0.000 48: src0.xyz = temp[33] MAD temp[1].w, src0.x, src0.1, src0.0 49: src0.xyz = const[0] MAD temp[0].y, src0._y_, src0.111, src0.000 50: ELSE; 51: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 52: IF aluresult.x___; 53: src0.xyz = const[0], src1.xyz = input[1] MAD temp[34].xy, src0.yy_, src1.xy_, src0.000 MAD temp[34].w, src0.z, src1.x, src0.0 54: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 55: src0.xyz = const[0], src1.xyz = input[2] MAD temp[36].xy, src0.yy_, src1.xy_, src0.000 MAD temp[36].w, src0.z, src1.x, src0.0 56: TXL temp[37].w, temp[36].xy_w, 2D[0]; 57: src0.xyz = temp[35], src1.xyz = input[0] MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000 58: src0.xyz = input[3], src0.w = temp[37] MAD temp[39].x, src0.w__, src0.x__, src0.000 59: src0.xyz = temp[39] MAD temp[1].w, src0.x, src0.1, src0.0 60: src0.w = temp[37], src1.w = input[0] MAD temp[40].x, src0.w__, src1.w__, src0.000 61: src0.xyz = temp[40], src1.xyz = temp[38] MAD temp[1].xyz, src0.xxx, src1.xyz, src0.000 62: src0.xyz = const[0] MAD temp[0].y, src0._y_, src0.111, src0.000 63: ELSE; 64: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD temp[41].x, srcp.x__, src0.111, -src2.x__ 65: src0.xyz = temp[41] MAD aluresult, -|src0.x__|, src0.111, src0.000 [aluresult = (result >= 0)] 66: IF aluresult.x___; 67: src0.xyz = const[0] MAD temp[3].x, src0.y__, src0.111, src0.000 68: ELSE; 69: src0.xyz = const[0] MAD temp[3].x, src0.z__, src0.111, src0.000 70: ENDIF; 71: src0.xyz = temp[3] MAD temp[0].y, src0._x_, src0.111, src0.000 72: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 73: IF aluresult.x___; 74: src0.xyz = const[0], src1.xyz = input[1] MAD temp[43].xy, src0.yy_, src1.xy_, src0.000 MAD temp[43].w, src0.z, src1.x, src0.0 75: TXL temp[44].xyz, temp[43].xy_w, 2D[1]; 76: src0.xyz = temp[44], src1.xyz = const[0] MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz MAD temp[45].w, src0.x, src1.z, src1.y 77: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0] MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[46].w, src0.w, src1.w, src0.0 78: src0.xyz = temp[46], src0.w = temp[46] MAD temp[1].xyz, src0.www, src0.xyz, src0.000 79: src0.w = input[0] MAD temp[1].w, src0.w, src0.1, src0.0 80: ELSE; 81: src0.xyz = const[0] MAD temp[1].xyz, src0.zzz, src0.111, src0.000 MAD temp[1].w, src0.z, src0.1, src0.0 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: ENDIF; 87: ENDIF; 88: src0.xyz = temp[0] MAD aluresult, -src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 89: IF aluresult.x___; 90: src0.xyz = const[0] MAD temp[0].xyz, src0.zzz, src0.111, src0.000 MAD temp[0].w, src0.z, src0.1, src0.0 91: ELSE; 92: src0.xyz = temp[1], src0.w = temp[1] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 93: ENDIF; 94: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[4] CMP temp[8].xyz, src0.000, src0.111, src0.xyy CMP temp[8].w, src0.0, src0.1, src0.y 1: src0.xyz = temp[8], src0.w = temp[8] DP4_SAT temp[9].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 2: src0.xyz = temp[9] MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[2].w, -|src0.x|, src0.1, src0.0 3: src0.xyz = input[4], src0.w = input[4] CMP temp[11].xyz, src0.000, src0.111, src0.zww CMP temp[11].w, src0.0, src0.1, src0.w 4: src0.xyz = temp[11], src0.w = temp[11] DP4_SAT temp[12].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 5: src0.xyz = temp[12] MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[4].w, -|src0.x|, src0.1, src0.0 6: src0.xyz = const[0], src0.w = input[3] MAD temp[13].x, src0.x__, src0.111, src0.w__ 7: src0.xyz = temp[13] FRC temp[14].x, src0.x__ 8: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 9: BEGIN_TEX; 10: KIL temp[2]; 11: KIL temp[4]; 12: IF aluresult.x___; 13: src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.x, src0.1, src0.0 14: src0.xyz = const[0] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 17: IF aluresult.x___; 18: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[16].xy, src0.yy_, src1.xy_, src0.000 MAD temp[16].w, src0.z, src1.x, src0.0 19: BEGIN_TEX; 20: TXL temp[17], temp[16].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 23: src0.xyz = const[0], src0.w = temp[17], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[19].w, src0.w, src1.x, src0.0 24: src0.xyz = temp[19], src0.w = temp[19] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 25: ELSE; 26: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 27: IF aluresult.x___; 28: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[20].xy, src0.yy_, src1.xy_, src0.000 MAD temp[20].w, src0.z, src1.x, src0.0 29: BEGIN_TEX; 30: TXL temp[21], temp[20].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 31: src0.xyz = temp[21], src0.w = const[0] SEM_WAIT MAD temp[22].xyz, src0.xyz, src0.111, src0.www 32: src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT DP3 temp[24].x, srcp.xyz, src2.xyz 33: src0.xyz = temp[24], src0.w = temp[21] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xxx, src0.000 34: src0.xyz = const[0], src0.w = temp[21], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[25].w, src0.w, src1.x, src0.0 35: src0.xyz = temp[25], src0.w = input[0], src1.w = temp[25] SEM_WAIT MAD temp[26].x, src1.w__, src0.w__, src0.000 36: src0.xyz = temp[26] SEM_WAIT MAD temp[1].w, src0.x, src0.1, src0.0 37: ELSE; 38: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 39: IF aluresult.x___; 40: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[27].xy, src0.yy_, src1.xy_, src0.000 MAD temp[27].w, src0.z, src1.x, src0.0 41: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[28].xy, src0.yy_, src1.xy_, src0.000 MAD temp[28].w, src0.z, src1.x, src0.0 42: BEGIN_TEX; 43: TXL temp[29], temp[27].xy_w, 2D[1]; 44: TXL temp[30], temp[28].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30] SEM_WAIT MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[31].w, src0.w, src1.w, src0.0 46: src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[32].w, src0.w, src1.w, src0.0 47: src0.xyz = temp[32], src0.w = temp[32] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 48: src0.xyz = const[0], src0.w = temp[31], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[33].w, src0.w, src1.x, src0.0 49: src0.xyz = temp[33], src0.w = temp[33] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 50: ELSE; 51: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 52: IF aluresult.x___; 53: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[34].xy, src0.yy_, src1.xy_, src0.000 MAD temp[34].w, src0.z, src1.x, src0.0 54: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[36].xy, src0.yy_, src1.xy_, src0.000 MAD temp[36].w, src0.z, src1.x, src0.0 55: BEGIN_TEX; 56: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 57: TXL temp[37].w, temp[36].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 58: src0.xyz = temp[35], src0.w = temp[37], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[39].w, src0.w, src2.x, src0.0 59: src0.xyz = const[0], src0.w = temp[37], src1.w = input[0] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[40].w, src0.w, src1.w, src0.0 60: src0.xyz = temp[40], src0.w = temp[40], src1.xyz = temp[38], src1.w = temp[39] SEM_WAIT MAD temp[1].xyz, src0.www, src1.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 61: ELSE; 62: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD temp[41].x, srcp.x__, src0.111, -src2.x__ 63: src0.xyz = temp[41] SEM_WAIT MAD aluresult, -|src0.x__|, src0.111, src0.000 [aluresult = (result >= 0)] 64: IF aluresult.x___; 65: src0.xyz = const[0] SEM_WAIT MAD temp[3].x, src0.y__, src0.111, src0.000 66: ELSE; 67: src0.xyz = const[0] SEM_WAIT MAD temp[3].x, src0.z__, src0.111, src0.000 68: ENDIF; 69: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 70: src0.xyz = temp[3] SEM_WAIT MAD temp[0].y, src0._x_, src0.111, src0.000 71: IF aluresult.x___; 72: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[43].xy, src0.yy_, src1.xy_, src0.000 MAD temp[43].w, src0.z, src1.x, src0.0 73: BEGIN_TEX; 74: TXL temp[44].xyz, temp[43].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 75: src0.xyz = temp[44], src1.xyz = const[0] SEM_WAIT MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz MAD temp[45].w, src0.x, src1.z, src1.y 76: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[46].w, src0.w, src1.w, src0.0 77: src0.xyz = temp[46], src0.w = temp[46], src1.w = input[0] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 78: ELSE; 79: src0.xyz = const[0] SEM_WAIT MAD temp[1].xyz, src0.zzz, src0.111, src0.000 MAD temp[1].w, src0.z, src0.1, src0.0 80: ENDIF; 81: ENDIF; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: src0.xyz = temp[0] SEM_WAIT MAD aluresult, -src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 87: IF aluresult.x___; 88: src0.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.zzz, src0.111, src0.000 MAD temp[0].w, src0.z, src0.1, src0.0 89: ELSE; 90: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src0.111, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 91: ENDIF; 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[4] CMP temp[8].xyz, src0.000, src0.111, src0.xyy CMP temp[8].w, src0.0, src0.1, src0.y 1: src0.xyz = temp[8], src0.w = temp[8] DP4_SAT temp[9].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 2: src0.xyz = temp[9] MAD temp[2].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[2].w, -|src0.x|, src0.1, src0.0 3: src0.xyz = input[4], src0.w = input[4] CMP temp[11].xyz, src0.000, src0.111, src0.zww CMP temp[11].w, src0.0, src0.1, src0.w 4: src0.xyz = temp[11], src0.w = temp[11] DP4_SAT temp[12].x, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 5: src0.xyz = temp[12] MAD temp[4].xyz, -|src0.xxx|, src0.111, src0.000 MAD temp[4].w, -|src0.x|, src0.1, src0.0 6: src0.xyz = const[0], src0.w = input[3] MAD temp[13].x, src0.x__, src0.111, src0.w__ 7: src0.xyz = temp[13] FRC temp[14].x, src0.x__ 8: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[3], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 9: BEGIN_TEX; 10: KIL temp[2]; 11: KIL temp[4]; 12: IF aluresult.x___; 13: src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.x, src0.1, src0.0 14: src0.xyz = const[0] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 17: IF aluresult.x___; 18: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[16].xy, src0.yy_, src1.xy_, src0.000 MAD temp[16].w, src0.z, src1.x, src0.0 19: BEGIN_TEX; 20: TXL temp[17], temp[16].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[18].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[18].w, src0.w, src1.w, src0.0 22: src0.xyz = temp[18], src0.w = temp[18] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 23: src0.xyz = const[0], src0.w = temp[17], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[19].w, src0.w, src1.x, src0.0 24: src0.w = temp[19] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 25: ELSE; 26: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 27: IF aluresult.x___; 28: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[20].xy, src0.yy_, src1.xy_, src0.000 MAD temp[20].w, src0.z, src1.x, src0.0 29: BEGIN_TEX; 30: TXL temp[21], temp[20].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 31: src0.xyz = temp[21], src0.w = const[0] SEM_WAIT MAD temp[22].xyz, src0.xyz, src0.111, src0.www 32: src0.xyz = temp[22], src1.xyz = temp[22], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT DP3 temp[24].x, srcp.xyz, src2.xyz 33: src0.xyz = temp[24], src0.w = temp[21] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xxx, src0.000 34: src0.xyz = const[0], src0.w = temp[21], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[25].w, src0.w, src1.x, src0.0 35: src0.w = input[0], src1.w = temp[25] SEM_WAIT MAD temp[26].x, src1.w__, src0.w__, src0.000 36: src0.xyz = temp[26] SEM_WAIT MAD temp[1].w, src0.x, src0.1, src0.0 37: ELSE; 38: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 39: IF aluresult.x___; 40: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[27].xy, src0.yy_, src1.xy_, src0.000 MAD temp[27].w, src0.z, src1.x, src0.0 41: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[28].xy, src0.yy_, src1.xy_, src0.000 MAD temp[28].w, src0.z, src1.x, src0.0 42: BEGIN_TEX; 43: TXL temp[29], temp[27].xy_w, 2D[1]; 44: TXL temp[30], temp[28].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.xyz = temp[29], src0.w = temp[29], src1.xyz = temp[30], src1.w = temp[30] SEM_WAIT MAD temp[31].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[31].w, src0.w, src1.w, src0.0 46: src0.xyz = temp[31], src0.w = temp[31], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[32].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[32].w, src0.w, src1.w, src0.0 47: src0.xyz = temp[32], src0.w = temp[32] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 48: src0.xyz = const[0], src0.w = temp[31], src1.xyz = input[3] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[33].w, src0.w, src1.x, src0.0 49: src0.w = temp[33] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 50: ELSE; 51: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 52: IF aluresult.x___; 53: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[34].xy, src0.yy_, src1.xy_, src0.000 MAD temp[34].w, src0.z, src1.x, src0.0 54: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[36].xy, src0.yy_, src1.xy_, src0.000 MAD temp[36].w, src0.z, src1.x, src0.0 55: BEGIN_TEX; 56: TXL temp[35].xyz, temp[34].xy_w, 2D[1]; 57: TXL temp[37].w, temp[36].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 58: src0.xyz = temp[35], src0.w = temp[37], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT MAD temp[38].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[39].w, src0.w, src2.x, src0.0 59: src0.xyz = const[0], src0.w = temp[37], src1.w = input[0] SEM_WAIT MAD temp[0].y, src0._y_, src0.111, src0.000 MAD temp[40].w, src0.w, src1.w, src0.0 60: src0.w = temp[40], src1.xyz = temp[38], src1.w = temp[39] SEM_WAIT MAD temp[1].xyz, src0.www, src1.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 61: ELSE; 62: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD temp[41].x, srcp.x__, src0.111, -src2.x__ 63: src0.xyz = temp[41] SEM_WAIT MAD aluresult, -|src0.x__|, src0.111, src0.000 [aluresult = (result >= 0)] 64: IF aluresult.x___; 65: src0.xyz = const[0] SEM_WAIT MAD temp[3].x, src0.y__, src0.111, src0.000 66: ELSE; 67: src0.xyz = const[0] SEM_WAIT MAD temp[3].x, src0.z__, src0.111, src0.000 68: ENDIF; 69: src0.xyz = temp[14], src1.xyz = temp[13], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 70: src0.xyz = temp[3] SEM_WAIT MAD temp[0].y, src0._x_, src0.111, src0.000 71: IF aluresult.x___; 72: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[43].xy, src0.yy_, src1.xy_, src0.000 MAD temp[43].w, src0.z, src1.x, src0.0 73: BEGIN_TEX; 74: TXL temp[44].xyz, temp[43].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 75: src0.xyz = temp[44], src1.xyz = const[0] SEM_WAIT MAD temp[45].xyz, src0.xyz, src1.yyy, src1.zzz MAD temp[45].w, src0.x, src1.z, src1.y 76: src0.xyz = temp[45], src0.w = temp[45], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[46].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[46].w, src0.w, src1.w, src0.0 77: src0.xyz = temp[46], src0.w = temp[46], src1.w = input[0] SEM_WAIT MAD temp[1].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 78: ELSE; 79: src0.xyz = const[0] SEM_WAIT MAD temp[1].xyz, src0.zzz, src0.111, src0.000 MAD temp[1].w, src0.z, src0.1, src0.0 80: ENDIF; 81: ENDIF; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: src0.xyz = temp[0] SEM_WAIT MAD aluresult, -src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 87: IF aluresult.x___; 88: src0.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.zzz, src0.111, src0.000 MAD temp[0].w, src0.z, src0.1, src0.0 89: ELSE; 90: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src0.111, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 91: ENDIF; 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[4] CMP temp[5].xyz, src0.000, src0.111, src0.xyy CMP temp[1].w, src0.0, src0.1, src0.y 1: src0.xyz = temp[5], src0.w = temp[1] DP4_SAT temp[1].z, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 2: src0.xyz = temp[1] MAD temp[5].xyz, -|src0.zzz|, src0.111, src0.000 MAD temp[5].w, -|src0.z|, src0.1, src0.0 3: src0.xyz = input[4], src0.w = input[4] CMP temp[4].xyz, src0.000, src0.111, src0.zww CMP temp[1].w, src0.0, src0.1, src0.w 4: src0.xyz = temp[4], src0.w = temp[1] DP4_SAT temp[1].z, src0.xyz, src0.xyz DP4_SAT, src0.w, src0.w 5: src0.xyz = temp[1] MAD temp[4].xyz, -|src0.zzz|, src0.111, src0.000 MAD temp[4].w, -|src0.z|, src0.1, src0.0 6: src0.xyz = const[0], src0.w = input[3] MAD temp[6].x, src0.x__, src0.1__, src0.w__ 7: src0.xyz = temp[6] FRC temp[7].x, src0.x__ 8: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[3], srcp.xyz = (src1 - src0) MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 9: BEGIN_TEX; 10: KIL temp[5]; 11: KIL temp[4]; 12: IF aluresult.x___; 13: src0.xyz = input[0], src0.w = input[0], src1.xyz = input[3] SEM_WAIT MAD temp[4].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.x, src0.1, src0.0 14: src0.xyz = const[0] SEM_WAIT MAD temp[1].z, src0.__y, src0.__1, src0.__0 15: ELSE; 16: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[4], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 17: IF aluresult.x___; 18: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[5].w, src0.z, src1.x, src0.0 19: BEGIN_TEX; 20: TXL temp[5], temp[5].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 22: src0.xyz = temp[8], src0.w = temp[2] SEM_WAIT MAD temp[4].xyz, src0.www, src0.xyz, src0.000 23: src0.xyz = const[0], src0.w = temp[5], src1.xyz = input[3] SEM_WAIT MAD temp[1].z, src0.__y, src0.__1, src0.__0 MAD temp[2].w, src0.w, src1.x, src0.0 24: src0.w = temp[2] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 25: ELSE; 26: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[5], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 27: IF aluresult.x___; 28: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[5].w, src0.z, src1.x, src0.0 29: BEGIN_TEX; 30: TXL temp[5], temp[5].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 31: src0.xyz = temp[5], src0.w = const[0] SEM_WAIT MAD temp[8].xyz, src0.xyz, src0.111, src0.www 32: src0.xyz = temp[8], src1.xyz = temp[8], src2.xyz = const[9], srcp.xyz = (src1 + src0) SEM_WAIT DP3 temp[2].z, srcp.xyz, src2.xyz 33: src0.xyz = temp[2], src0.w = temp[5] SEM_WAIT MAD temp[4].xyz, src0.www, src0.zzz, src0.000 34: src0.xyz = const[0], src0.w = temp[5], src1.xyz = input[3] SEM_WAIT MAD temp[1].z, src0.__y, src0.__1, src0.__0 MAD temp[2].w, src0.w, src1.x, src0.0 35: src0.w = input[0], src1.w = temp[2] SEM_WAIT MAD temp[2].z, src1.__w, src0.__w, src0.__0 36: src0.xyz = temp[2] SEM_WAIT MAD temp[1].w, src0.z, src0.1, src0.0 37: ELSE; 38: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[7], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 39: IF aluresult.x___; 40: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[5].w, src0.z, src1.x, src0.0 41: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[6].yz, src0._yy, src1._xy, src0._00 MAD temp[6].w, src0.z, src1.x, src0.0 42: BEGIN_TEX; 43: TXL temp[5], temp[5].xy_w, 2D[1]; 44: TXL temp[8], temp[6].yz_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 45: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[8], src1.w = temp[8] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 46: src0.xyz = temp[5], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 47: src0.xyz = temp[5], src0.w = temp[4] SEM_WAIT MAD temp[4].xyz, src0.www, src0.xyz, src0.000 48: src0.xyz = const[0], src0.w = temp[2], src1.xyz = input[3] SEM_WAIT MAD temp[1].z, src0.__y, src0.__1, src0.__0 MAD temp[2].w, src0.w, src1.x, src0.0 49: src0.w = temp[2] SEM_WAIT MAD temp[1].w, src0.w, src0.1, src0.0 50: ELSE; 51: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[8], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 52: IF aluresult.x___; 53: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[5].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[5].w, src0.z, src1.x, src0.0 54: src0.xyz = const[0], src1.xyz = input[2] SEM_WAIT MAD temp[2].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[2].w, src0.z, src1.x, src0.0 55: BEGIN_TEX; 56: TXL temp[5].xyz, temp[5].xy_w, 2D[1]; 57: TXL temp[2].w, temp[2].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 58: src0.xyz = temp[5], src0.w = temp[2], src1.xyz = input[0], src2.xyz = input[3] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src2.x, src0.0 59: src0.xyz = const[0], src0.w = temp[2], src1.w = input[0] SEM_WAIT MAD temp[1].z, src0.__y, src0.__1, src0.__0 MAD temp[2].w, src0.w, src1.w, src0.0 60: src0.w = temp[2], src1.xyz = temp[2], src1.w = temp[3] SEM_WAIT MAD temp[4].xyz, src0.www, src1.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 61: ELSE; 62: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD temp[2].x, srcp.x__, src0.1__, -src2.x__ 63: src0.xyz = temp[2] SEM_WAIT MAD aluresult, -|src0.x__|, src0.111, src0.000 [aluresult = (result >= 0)] 64: IF aluresult.x___; 65: src0.xyz = const[0] SEM_WAIT MAD temp[2].x, src0.y__, src0.1__, src0.0__ 66: ELSE; 67: src0.xyz = const[0] SEM_WAIT MAD temp[2].x, src0.z__, src0.1__, src0.0__ 68: ENDIF; 69: src0.xyz = temp[7], src1.xyz = temp[6], src2.xyz = const[6], srcp.xyz = (src1 - src0) SEM_WAIT MAD aluresult, srcp.x__, src0.111, -src2.x__ [aluresult = (result == 0)] 70: src0.xyz = temp[2] SEM_WAIT MAD temp[1].z, src0.__x, src0.__1, src0.__0 71: IF aluresult.x___; 72: src0.xyz = const[0], src1.xyz = input[1] SEM_WAIT MAD temp[2].xy, src0.yy_, src1.xy_, src0.00_ MAD temp[2].w, src0.z, src1.x, src0.0 73: BEGIN_TEX; 74: TXL temp[2].xyz, temp[2].xy_w, 2D[1] SEM_WAIT SEM_ACQUIRE; 75: src0.xyz = temp[2], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.yyy, src1.zzz MAD temp[2].w, src0.x, src1.z, src1.y 76: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 77: src0.xyz = temp[2], src0.w = temp[2], src1.w = input[0] SEM_WAIT MAD temp[4].xyz, src0.www, src0.xyz, src0.000 MAD temp[1].w, src1.w, src0.1, src0.0 78: ELSE; 79: src0.xyz = const[0] SEM_WAIT MAD temp[4].xyz, src0.zzz, src0.111, src0.000 MAD temp[1].w, src0.z, src0.1, src0.0 80: ENDIF; 81: ENDIF; 82: ENDIF; 83: ENDIF; 84: ENDIF; 85: ENDIF; 86: src0.xyz = temp[1] SEM_WAIT MAD aluresult, -src0.z__, src0.111, src0.000 [aluresult = (result >= 0)] 87: IF aluresult.x___; 88: src0.xyz = const[0] SEM_WAIT MAD temp[0].xyz, src0.zzz, src0.111, src0.000 MAD temp[0].w, src0.z, src0.1, src0.0 89: ELSE; 90: src0.xyz = temp[4], src0.w = temp[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src0.111, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 91: ENDIF; 92: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0490:rgb_A_src:0 0/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c10016:CMP dest:1 alp_A_src:0 0 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x08120058:CMP dest:5 rgb_C_src:0 R/G/G 0 alp_C_src:0 G 0 1 0:CMN_INST 0x00182000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0060c001:DP dest:0 alp_A_src:0 A 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000012:DP4 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db1a48:rgb_A_src:0 B/B/B 3 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c68050:MAD dest:5 alp_A_src:0 B 3 alp_B_src:0 1 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 3 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0490:rgb_A_src:0 0/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c10016:CMP dest:1 alp_A_src:0 0 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x18368048:CMP dest:4 rgb_C_src:0 B/A/A 0 alp_C_src:0 A 0 4 0:CMN_INST 0x00182000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0060c001:DP dest:0 alp_A_src:0 A 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x00000012:DP4 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db1a48:rgb_A_src:0 B/B/B 3 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c68040:MAD dest:4 alp_A_src:0 B 3 alp_B_src:0 1 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 6 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/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: 0x0048c060:MAD dest:6 rgb_C_src:0 A/0/0 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00000a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020006:Addr0: 6t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000480:rgb_A_src:0 R/0/0 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: 0x00000079:FRC dest:7 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x50301807:Addr0: 7t, Addr1: 6t, Addr2: 3c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82010:MAD dest:1 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 9 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00800000: id: 0 op:TEXKILL, , SCALED 2:TEX_ADDR: 0x0000e405: src: 5 R/G/B/A dst: 0 R/R/R/R 3:TEX_DXDY: 0x00000000 10 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02800000: id: 0 op:TEXKILL, ACQ, SCALED 2:TEX_ADDR: 0x0000e404: src: 4 R/G/B/A dst: 0 R/R/R/R 3:TEX_DXDY: 0x00000000 11 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC 3:FC_ADDR 0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0 12 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 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 13 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 80 3:FC_ADDR 0x00500000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 80, JMP_GLBL: 0 15 0:CMN_INST 0x00000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x50401807:Addr0: 7t, Addr1: 6t, Addr2: 4c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82020:MAD dest:2 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 16 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 24 IGN_UNC 3:FC_ADDR 0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0 17 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 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 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x03410000: id: 1 op:LOD, ACQ, SCALED 2:TEX_ADDR: 0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 19 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, 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:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 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 20 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08020008:Addr0: 8t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, 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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00006004:ALU TEX_WAIT wmask: AB omask: NONE 1:RGB_ADDR 0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 22 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, 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:0x00c0c010:MAD dest:1 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 23 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 79 3:FC_ADDR 0x004f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 79, JMP_GLBL: 0 24 0:CMN_INST 0x00000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x50501807:Addr0: 7t, Addr1: 6t, Addr2: 5c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 25 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 35 IGN_UNC 3:FC_ADDR 0x00230000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 35, JMP_GLBL: 0 26 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 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 27 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x03410000: id: 1 op:LOD, ACQ, SCALED 2:TEX_ADDR: 0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 28 0:CMN_INST 0x00003a04:ALU TEX_WAIT NOP wmask: RGB omask: NONE 1:RGB_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, 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: 0x0036c080:MAD dest:8 rgb_C_src:0 A/A/A 0 alp_C_src:0 R 0 29 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x90902008:Addr0: 8t, Addr1: 8t, Addr2: 9c, srcp:2 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00444223:rgb_A_src:3 R/G/B 0 rgb_B_src:2 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 30 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0049036c:rgb_A_src:0 A/A/A 0 rgb_B_src:0 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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 31 0:CMN_INST 0x00006004:ALU TEX_WAIT wmask: AB omask: NONE 1:RGB_ADDR 0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 32 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000800:Addr0: 0t, Addr1: 2t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00720391:rgb_A_src:1 0/0/A 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 33 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00c08010:MAD dest:1 alp_A_src:0 B 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 34 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 78 3:FC_ADDR 0x004e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 78, JMP_GLBL: 0 35 0:CMN_INST 0x00000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x50701807:Addr0: 7t, Addr1: 6t, Addr2: 7c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 36 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 47 IGN_UNC 3:FC_ADDR 0x002f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 47, JMP_GLBL: 0 37 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 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 38 0:CMN_INST 0x00007004:ALU TEX_WAIT wmask: AGB omask: NONE 1:RGB_ADDR 0x08000900:Addr0: 0c, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00222130:rgb_A_src:0 0/G/G 0 rgb_B_src:1 0/R/G 0 targ: 0 4 ALPHA_INST:0x00088060:MAD dest:6 alp_A_src:0 B 0 alp_B_src:1 R 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 39 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x01410000: id: 1 op:LOD, , SCALED 2:TEX_ADDR: 0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 40 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x03400000: id: 0 op:LOD, ACQ, SCALED 2:TEX_ADDR: 0xe408f906: src: 6 G/B/A/A dst: 8 R/G/B/A 3:TEX_DXDY: 0x00000000 41 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08002005:Addr0: 5t, Addr1: 8t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08002005:Addr0: 5t, Addr1: 8t, Addr2: 128t, 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:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 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 42 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, 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:0x0068c040:MAD dest:4 alp_A_src:0 A 0 alp_B_src:1 A 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 43 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, 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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 44 0:CMN_INST 0x00006004:ALU TEX_WAIT wmask: AB omask: NONE 1:RGB_ADDR 0x08000d00:Addr0: 0c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 45 0:CMN_INST 0x00004004:ALU TEX_WAIT wmask: A omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, 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:0x00c0c010:MAD dest:1 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 46 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 77 3:FC_ADDR 0x004d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 77, JMP_GLBL: 0 47 0:CMN_INST 0x00000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x50801807:Addr0: 7t, Addr1: 6t, Addr2: 8c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 48 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 57 IGN_UNC 3:FC_ADDR 0x00390000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 57, JMP_GLBL: 0 49 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088050:MAD dest:5 alp_A_src:0 B 0 alp_B_src:1 R 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 50 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000900:Addr0: 0c, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088020:MAD dest:2 alp_A_src:0 B 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 51 0:CMN_INST 0x00003803:TEX wmask: RGB omask: NONE 1:TEX_INST: 0x01410000: id: 1 op:LOD, , SCALED 2:TEX_ADDR: 0xe405f405: src: 5 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 52 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x03400000: id: 0 op:LOD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 53 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x00300005:Addr0: 5t, Addr1: 0t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, 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:0x0010c030:MAD dest:3 alp_A_src:0 A 0 alp_B_src:2 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 54 0:CMN_INST 0x00006004:ALU TEX_WAIT wmask: AB omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20190:rgb_A_src:0 0/0/G 0 rgb_B_src:0 0/0/1 0 targ: 0 4 ALPHA_INST:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 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 55 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000880:Addr0: 128t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000c02:Addr0: 2t, Addr1: 3t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0044236c:rgb_A_src:0 A/A/A 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 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 56 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 76 3:FC_ADDR 0x004c0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 76, JMP_GLBL: 0 57 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x50601807:Addr0: 7t, Addr1: 6t, Addr2: 6c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930483:rgb_A_src:3 R/0/0 0 rgb_B_src:0 1/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: 0x00c82020:MAD dest:2 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 58 0:CMN_INST 0x01000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db1c80:rgb_A_src:0 R/0/0 3 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: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 59 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 62 IGN_UNC 3:FC_ADDR 0x003e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 62, JMP_GLBL: 0 60 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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 61 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 64 3:FC_ADDR 0x00400000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 64, JMP_GLBL: 0 62 0:CMN_INST 0x00000804:ALU TEX_WAIT wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/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 63 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 64 3:FC_ADDR 0x00400000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 64, JMP_GLBL: 0 64 0:CMN_INST 0x00000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x50601807:Addr0: 7t, Addr1: 6t, Addr2: 6c, srcp:1 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0483:rgb_A_src:3 R/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: 0x00c82030:MAD dest:3 rgb_C_src:2 R/0/0 1 alp_C_src:0 R 0 65 0:CMN_INST 0x00002004:ALU TEX_WAIT wmask: B omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20090:rgb_A_src:0 0/0/R 0 rgb_B_src:0 0/0/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 66 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 73 IGN_UNC 3:FC_ADDR 0x00490000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 73, JMP_GLBL: 0 67 0:CMN_INST 0x00005804:ALU TEX_WAIT wmask: ARG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842424:rgb_A_src:0 G/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00088020:MAD dest:2 alp_A_src:0 B 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 68 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x03410000: id: 1 op:LOD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 69 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040002:Addr0: 2t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00480020:MAD dest:2 alp_A_src:0 R 0 alp_B_src:1 B 0 targ 0 w:0 5 RGBA_INST: 0x0a249020:MAD dest:2 rgb_C_src:1 B/B/B 0 alp_C_src:1 G 0 70 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, 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:0x0068c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:1 A 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 71 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, 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:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 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 72 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 75 3:FC_ADDR 0x004b0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 75, JMP_GLBL: 0 73 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0248:rgb_A_src:0 B/B/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c08010:MAD dest:1 alp_A_src:0 B 0 alp_B_src:0 1 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 74 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 75 3:FC_ADDR 0x004b0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 75, JMP_GLBL: 0 75 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 76 3:FC_ADDR 0x004c0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 76, JMP_GLBL: 0 76 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 77 3:FC_ADDR 0x004d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 77, JMP_GLBL: 0 77 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 78 3:FC_ADDR 0x004e0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 78, JMP_GLBL: 0 78 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 79 3:FC_ADDR 0x004f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 79, JMP_GLBL: 0 79 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 80 3:FC_ADDR 0x00500000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 80, JMP_GLBL: 0 80 0:CMN_INST 0x01000004:ALU TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0c88:rgb_A_src:0 B/0/0 1 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: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 81 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 84 IGN_UNC 3:FC_ADDR 0x00540000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 84, JMP_GLBL: 0 82 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0248:rgb_A_src:0 B/B/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c08000:MAD dest:0 alp_A_src:0 B 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 83 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 86 3:FC_ADDR 0x00560000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 86, JMP_GLBL: 0 84 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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 85 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 86 3:FC_ADDR 0x00560000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 86, JMP_GLBL: 0 86 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0..1] DCL CONST[4] DCL TEMP[0..4] IMM FLT32 { 0.0000, 0.0000, 0.0000, 0.0000} 0: MUL TEMP[0].xyz, CONST[0].xzxx, IN[0].zzxx 1: ABS TEMP[1].x, IN[0].yyyy 2: ABS TEMP[2].x, IN[0].zzzz 3: MAX TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 4: ABS TEMP[2].x, IN[0].xxxx 5: MAX TEMP[1].x, TEMP[2].xxxx, TEMP[1].xxxx 6: ABS TEMP[2].xyz, IN[0].xyzz 7: ADD TEMP[2].xyz, -TEMP[1].xxxx, TEMP[2].xyzz 8: RCP TEMP[1].x, TEMP[1].xxxx 9: SGE TEMP[3].x, TEMP[2].xxxx, IMM[0].xxxx 10: IF TEMP[3].xxxx :0 11: MOV TEMP[3].x, CONST[0].xxxx 12: ELSE :0 13: MOV TEMP[3].x, CONST[0].yyyy 14: ENDIF 15: MOV TEMP[3].x, TEMP[3].xxxx 16: SGE TEMP[4].x, TEMP[2].yyyy, IMM[0].xxxx 17: IF TEMP[4].xxxx :0 18: MOV TEMP[4].x, CONST[0].xxxx 19: ELSE :0 20: MOV TEMP[4].x, CONST[0].yyyy 21: ENDIF 22: MOV TEMP[3].y, TEMP[4].xxxx 23: SGE TEMP[2].x, TEMP[2].zzzz, IMM[0].xxxx 24: IF TEMP[2].xxxx :0 25: MOV TEMP[2].x, CONST[0].xxxx 26: ELSE :0 27: MOV TEMP[2].x, CONST[0].yyyy 28: ENDIF 29: MOV TEMP[3].z, TEMP[2].xxxx 30: DP3 TEMP[0].x, TEMP[3].xyzz, TEMP[0].xyzz 31: MUL TEMP[2].xyz, CONST[0].xxzz, IN[0].yxyy 32: DP3 TEMP[2].x, TEMP[3].xyzz, TEMP[2].xyzz 33: MOV TEMP[0].y, TEMP[2].xxxx 34: MAD TEMP[0].xy, TEMP[0].xyyy, TEMP[1].xxxx, CONST[0].xxxx 35: MUL TEMP[0].xy, TEMP[0].xyyy, CONST[4].xxxx 36: MUL TEMP[0].xy, TEMP[0].xyyy, CONST[0].wwww 37: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D 38: MUL TEMP[0], TEMP[1], CONST[0].wwww 39: TEX TEMP[1], IN[0].xyzz, SAMP[1], CUBE 40: MAD OUT[0], TEMP[1], CONST[1].xxxx, TEMP[0] 41: END Fragment Program: before compilation # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SGE temp[3].x, temp[2].xxxx, temp[0].0000; 10: IF temp[3].xxxx; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SGE temp[4].x, temp[2].yyyy, temp[0].0000; 17: IF temp[4].xxxx; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SGE temp[2].x, temp[2].zzzz, temp[0].0000; 24: IF temp[2].xxxx; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: ABS temp[1].x, input[0].yyyy; 2: ABS temp[2].x, input[0].zzzz; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: ABS temp[2].x, input[0].xxxx; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: ABS temp[2].xyz, input[0].xyzz; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: SUB none., temp[2].xxxx, temp[0].0000; [aluresult = (x >= 0)] 10: IF aluresult.x___; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: SUB none., temp[2].yyyy, temp[0].0000; [aluresult = (x >= 0)] 17: IF aluresult.x___; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: SUB none., temp[2].zzzz, temp[0].0000; [aluresult = (x >= 0)] 24: IF aluresult.x___; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzxx, input[0].zzxx; 1: MOV temp[1].x, |input[0].yyyy|; 2: MOV temp[2].x, |input[0].zzzz|; 3: MAX temp[1].x, temp[1].xxxx, temp[2].xxxx; 4: MOV temp[2].x, |input[0].xxxx|; 5: MAX temp[1].x, temp[2].xxxx, temp[1].xxxx; 6: MOV temp[2].xyz, |input[0].xyzz|; 7: ADD temp[2].xyz, -temp[1].xxxx, temp[2].xyzz; 8: RCP temp[1].x, temp[1].xxxx; 9: ADD none., temp[2].xxxx, -temp[0].0000; [aluresult = (x >= 0)] 10: IF aluresult.x___; 11: MOV temp[3].x, const[0].xxxx; 12: ELSE; 13: MOV temp[3].x, const[0].yyyy; 14: ENDIF; 15: MOV temp[3].x, temp[3].xxxx; 16: ADD none., temp[2].yyyy, -temp[0].0000; [aluresult = (x >= 0)] 17: IF aluresult.x___; 18: MOV temp[4].x, const[0].xxxx; 19: ELSE; 20: MOV temp[4].x, const[0].yyyy; 21: ENDIF; 22: MOV temp[3].y, temp[4].xxxx; 23: ADD none., temp[2].zzzz, -temp[0].0000; [aluresult = (x >= 0)] 24: IF aluresult.x___; 25: MOV temp[2].x, const[0].xxxx; 26: ELSE; 27: MOV temp[2].x, const[0].yyyy; 28: ENDIF; 29: MOV temp[3].z, temp[2].xxxx; 30: DP3 temp[0].x, temp[3].xyzz, temp[0].xyzz; 31: MUL temp[2].xyz, const[0].xxzz, input[0].yxyy; 32: DP3 temp[2].x, temp[3].xyzz, temp[2].xyzz; 33: MOV temp[0].y, temp[2].xxxx; 34: MAD temp[0].xy, temp[0].xyyy, temp[1].xxxx, const[0].xxxx; 35: MUL temp[0].xy, temp[0].xyyy, const[4].xxxx; 36: MUL temp[0].xy, temp[0].xyyy, const[0].wwww; 37: TEX temp[1], temp[0].xyyy, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyzz, CUBE[1]; 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xyz, const[0].xzx_, input[0].zzx_; 1: MOV temp[1].x, |input[0].y___|; 2: MOV temp[2].x, |input[0].z___|; 3: MAX temp[1].x, temp[1].x___, temp[2].x___; 4: MOV temp[2].x, |input[0].x___|; 5: MAX temp[1].x, temp[2].x___, temp[1].x___; 6: MOV temp[2].xyz, |input[0].xyz_|; 7: ADD temp[2].xyz, -temp[1].xxx_, temp[2].xyz_; 8: RCP temp[1].x, temp[1].x___; 9: ADD none., temp[2].x___, -temp[0].0___; [aluresult = (x >= 0)] 10: IF aluresult.x___; 11: MOV temp[3].x, const[0].x___; 12: ELSE; 13: MOV temp[3].x, const[0].y___; 14: ENDIF; 15: MOV temp[3].x, temp[3].x___; 16: ADD none., temp[2].y___, -temp[0].0___; [aluresult = (x >= 0)] 17: IF aluresult.x___; 18: MOV temp[4].x, const[0].x___; 19: ELSE; 20: MOV temp[4].x, const[0].y___; 21: ENDIF; 22: MOV temp[3].y, temp[4]._x__; 23: ADD none., temp[2].z___, -temp[0].0___; [aluresult = (x >= 0)] 24: IF aluresult.x___; 25: MOV temp[2].x, const[0].x___; 26: ELSE; 27: MOV temp[2].x, const[0].y___; 28: ENDIF; 29: MOV temp[3].z, temp[2].__x_; 30: DP3 temp[0].x, temp[3].xyz_, temp[0].xyz_; 31: MUL temp[2].xyz, const[0].xxz_, input[0].yxy_; 32: DP3 temp[2].x, temp[3].xyz_, temp[2].xyz_; 33: MOV temp[0].y, temp[2]._x__; 34: MAD temp[0].xy, temp[0].xy__, temp[1].xx__, const[0].xx__; 35: MUL temp[0].xy, temp[0].xy__, const[4].xx__; 36: MUL temp[0].xy, temp[0].xy__, const[0].ww__; 37: TEX temp[1], temp[0].xy__, 2D[0]; 38: MUL temp[0], temp[1], const[0].wwww; 39: TEX temp[1], input[0].xyz_, CUBE[1]; 40: MAD_SAT output[0], temp[1], const[1].xxxx, temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_; 1: MOV temp[6].x, |input[0].y___|; 2: MOV temp[7].x, |input[0].z___|; 3: MAX temp[8].x, temp[6].x___, temp[7].x___; 4: MOV temp[9].x, |input[0].x___|; 5: MAX temp[10].x, temp[9].x___, temp[8].x___; 6: MOV temp[11].xyz, |input[0].xyz_|; 7: ADD temp[12].xyz, -temp[10].xxx_, temp[11].xyz_; 8: RCP temp[13].x, temp[10].x___; 9: ADD none., temp[12].x___, -temp[0].0___; [aluresult = (x >= 0)] 10: IF aluresult.x___; 11: MOV temp[3].x, const[0].x___; 12: ELSE; 13: MOV temp[3].x, const[0].y___; 14: ENDIF; 15: MOV temp[3].x, temp[3].x___; 16: ADD none., temp[12].y___, -temp[0].0___; [aluresult = (x >= 0)] 17: IF aluresult.x___; 18: MOV temp[4].x, const[0].x___; 19: ELSE; 20: MOV temp[4].x, const[0].y___; 21: ENDIF; 22: MOV temp[3].y, temp[4]._x__; 23: ADD none., temp[12].z___, -temp[0].0___; [aluresult = (x >= 0)] 24: IF aluresult.x___; 25: MOV temp[2].x, const[0].x___; 26: ELSE; 27: MOV temp[2].x, const[0].y___; 28: ENDIF; 29: MOV temp[3].z, temp[2].__x_; 30: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_; 31: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_; 32: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_; 33: MOV temp[0].y, temp[15]._x__; 34: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__; 35: MUL temp[17].xy, temp[16].xy__, const[4].xx__; 36: MUL temp[18].xy, temp[17].xy__, const[0].ww__; 37: TEX temp[19], temp[18].xy__, 2D[0]; 38: MUL temp[20], temp[19], const[0].wwww; 39: TEX temp[21], input[0].xyz_, CUBE[1]; 40: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_; 1: MAX temp[8].x, |input[0].y___|, |input[0].z___|; 2: MAX temp[10].x, |input[0].x___|, temp[8].x___; 3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|; 4: RCP temp[13].x, temp[10].x___; 5: MOV none., temp[12].x___; [aluresult = (x >= 0)] 6: IF aluresult.x___; 7: MOV temp[3].x, const[0].x___; 8: ELSE; 9: MOV temp[3].x, const[0].y___; 10: ENDIF; 11: MOV temp[3].x, temp[3].x___; 12: MOV none., temp[12].y___; [aluresult = (x >= 0)] 13: IF aluresult.x___; 14: MOV temp[4].x, const[0].x___; 15: ELSE; 16: MOV temp[4].x, const[0].y___; 17: ENDIF; 18: MOV temp[3].y, temp[4]._x__; 19: MOV none., temp[12].z___; [aluresult = (x >= 0)] 20: IF aluresult.x___; 21: MOV temp[2].x, const[0].x___; 22: ELSE; 23: MOV temp[2].x, const[0].y___; 24: ENDIF; 25: MOV temp[3].z, temp[2].__x_; 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_; 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_; 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_; 29: MOV temp[0].y, temp[15]._x__; 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__; 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__; 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__; 33: TEX temp[19], temp[18].xy__, 2D[0]; 34: MUL temp[20], temp[19], const[0].wwww; 35: TEX temp[21], input[0].xyz_, CUBE[1]; 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_; 1: MAX temp[8].x, |input[0].y___|, |input[0].z___|; 2: MAX temp[10].x, |input[0].x___|, temp[8].x___; 3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|; 4: RCP temp[13].x, temp[10].x___; 5: MOV none., temp[12].x___; [aluresult = (x >= 0)] 6: IF aluresult.x___; 7: MOV temp[3].x, const[0].x___; 8: ELSE; 9: MOV temp[3].x, const[0].y___; 10: ENDIF; 11: MOV temp[3].x, temp[3].x___; 12: MOV none., temp[12].y___; [aluresult = (x >= 0)] 13: IF aluresult.x___; 14: MOV temp[4].x, const[0].x___; 15: ELSE; 16: MOV temp[4].x, const[0].y___; 17: ENDIF; 18: MOV temp[3].y, temp[4]._x__; 19: MOV none., temp[12].z___; [aluresult = (x >= 0)] 20: IF aluresult.x___; 21: MOV temp[2].x, const[0].x___; 22: ELSE; 23: MOV temp[2].x, const[0].y___; 24: ENDIF; 25: MOV temp[3].z, temp[2].__x_; 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_; 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_; 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_; 29: MOV temp[0].y, temp[15]._x__; 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__; 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__; 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__; 33: TEX temp[19], temp[18].xy__, 2D[0]; 34: MUL temp[20], temp[19], const[0].wwww; 35: TEX temp[21], input[0].xyz_, CUBE[1]; 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[5].xyz, const[0].xzx_, input[0].zzx_; 1: MAX temp[8].x, |input[0].y___|, |input[0].z___|; 2: MAX temp[10].x, |input[0].x___|, temp[8].x___; 3: ADD temp[12].xyz, -temp[10].xxx_, |input[0].xyz_|; 4: RCP temp[13].x, temp[10].x___; 5: MOV none., temp[12].x___; [aluresult = (x >= 0)] 6: IF aluresult.x___; 7: MOV temp[3].x, const[0].x___; 8: ELSE; 9: MOV temp[3].x, const[0].y___; 10: ENDIF; 11: MOV temp[3].x, temp[3].x___; 12: MOV none., temp[12].y___; [aluresult = (x >= 0)] 13: IF aluresult.x___; 14: MOV temp[4].x, const[0].x___; 15: ELSE; 16: MOV temp[4].x, const[0].y___; 17: ENDIF; 18: MOV temp[3].y, temp[4]._x__; 19: MOV none., temp[12].z___; [aluresult = (x >= 0)] 20: IF aluresult.x___; 21: MOV temp[2].x, const[0].x___; 22: ELSE; 23: MOV temp[2].x, const[0].y___; 24: ENDIF; 25: MOV temp[3].z, temp[2].__x_; 26: DP3 temp[0].x, temp[3].xyz_, temp[5].xyz_; 27: MUL temp[14].xyz, const[0].xxz_, input[0].yxy_; 28: DP3 temp[15].x, temp[3].xyz_, temp[14].xyz_; 29: MOV temp[0].y, temp[15]._x__; 30: MAD temp[16].xy, temp[0].xy__, temp[13].xx__, const[0].xx__; 31: MUL temp[17].xy, temp[16].xy__, const[4].xx__; 32: MUL temp[18].xy, temp[17].xy__, const[0].ww__; 33: TEX temp[19], temp[18].xy__, 2D[0]; 34: MUL temp[20], temp[19], const[0].wwww; 35: TEX temp[21], input[0].xyz_, CUBE[1]; 36: MAD_SAT output[0], temp[21], const[1].xxxx, temp[20]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[0] MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000 1: src0.xyz = input[0] MAX temp[8].x, |src0.y__|, |src0.z__| 2: src0.xyz = input[0], src1.xyz = temp[8] MAX temp[10].x, |src0.x__|, src1.x__ 3: src0.xyz = temp[10], src1.xyz = input[0] MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz| 4: src0.xyz = temp[10] REPL_ALPHA temp[13].x RCP, src0.x 5: src0.xyz = temp[12] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result >= 0)] 6: IF aluresult.x___; 7: src0.xyz = const[0] MAD temp[3].x, src0.x__, src0.111, src0.000 8: ELSE; 9: src0.xyz = const[0] MAD temp[3].x, src0.y__, src0.111, src0.000 10: ENDIF; 11: src0.xyz = temp[3] MAD temp[3].x, src0.x__, src0.111, src0.000 12: src0.xyz = temp[12] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 13: IF aluresult.x___; 14: src0.xyz = const[0] MAD temp[4].x, src0.x__, src0.111, src0.000 15: ELSE; 16: src0.xyz = const[0] MAD temp[4].x, src0.y__, src0.111, src0.000 17: ENDIF; 18: src0.xyz = temp[4] MAD temp[3].y, src0._x_, src0.111, src0.000 19: src0.xyz = temp[12] MAD aluresult, src0.z__, src0.111, src0.000 [aluresult = (result >= 0)] 20: IF aluresult.x___; 21: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.111, src0.000 22: ELSE; 23: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.111, src0.000 24: ENDIF; 25: src0.xyz = temp[2] MAD temp[3].z, src0.__x, src0.111, src0.000 26: src0.xyz = temp[3], src1.xyz = temp[5] DP3 temp[0].x, src0.xyz, src1.xyz 27: src0.xyz = const[0], src1.xyz = input[0] MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000 28: src0.xyz = temp[3], src1.xyz = temp[14] DP3 temp[15].x, src0.xyz, src1.xyz 29: src0.xyz = temp[15] MAD temp[0].y, src0._x_, src0.111, src0.000 30: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_ 31: src0.xyz = temp[16], src1.xyz = const[4] MAD temp[17].xy, src0.xy_, src1.xx_, src0.000 32: src0.xyz = temp[17], src0.w = const[0] MAD temp[18].xy, src0.xy_, src0.ww_, src0.000 33: TEX temp[19], temp[18].xy__, 2D[0]; 34: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0] MAD temp[20].xyz, src0.xyz, src1.www, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 35: TEX temp[21], input[0].xyz_, CUBE[1]; 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD_SAT color[0].w, src0.w, src1.x, src1.w Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[0] MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000 MAX temp[8].w, |src1.y|, |src1.z| 1: src0.xyz = input[0], src0.w = temp[8], src1.xyz = temp[8] MAX temp[10].x, |src0.x__|, src0.w__ 2: src0.xyz = temp[10] REPL_ALPHA temp[13].x RCP, src0.x 3: src0.xyz = temp[10], src1.xyz = input[0] MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz| 4: src0.xyz = temp[12] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result >= 0)] 5: IF aluresult.x___; 6: src0.xyz = const[0] MAD temp[3].x, src0.x__, src0.111, src0.000 7: ELSE; 8: src0.xyz = const[0] MAD temp[3].x, src0.y__, src0.111, src0.000 9: ENDIF; 10: src0.xyz = temp[12] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 11: src0.xyz = temp[3] MAD temp[3].x, src0.x__, src0.111, src0.000 12: IF aluresult.x___; 13: src0.xyz = const[0] MAD temp[4].x, src0.x__, src0.111, src0.000 14: ELSE; 15: src0.xyz = const[0] MAD temp[4].x, src0.y__, src0.111, src0.000 16: ENDIF; 17: src0.xyz = temp[12] MAD aluresult, src0.z__, src0.111, src0.000 [aluresult = (result >= 0)] 18: src0.xyz = temp[4] MAD temp[3].y, src0._x_, src0.111, src0.000 19: IF aluresult.x___; 20: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.111, src0.000 21: ELSE; 22: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.111, src0.000 23: ENDIF; 24: src0.xyz = temp[2] MAD temp[3].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[3], src1.xyz = temp[5] DP3 temp[0].x, src0.xyz, src1.xyz 26: src0.xyz = const[0], src1.xyz = input[0] MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000 27: src0.xyz = temp[3], src1.xyz = temp[14] DP3 temp[15].x, src0.xyz, src1.xyz 28: src0.xyz = temp[15] MAD temp[0].y, src0._x_, src0.111, src0.000 29: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_ 30: src0.xyz = temp[16], src1.xyz = const[4] MAD temp[17].xy, src0.xy_, src1.xx_, src0.000 31: src0.xyz = temp[17], src0.w = const[0] MAD temp[18].xy, src0.xy_, src0.ww_, src0.000 32: BEGIN_TEX; 33: TEX temp[21], input[0].xyz_, CUBE[1]; 34: TEX temp[19], temp[18].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 35: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.www, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD_SAT color[0].w, src0.w, src1.x, src1.w Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[0] MAD temp[5].xyz, src0.xzx, src1.zzx, src0.000 MAX temp[8].w, |src1.y|, |src1.z| 1: src0.xyz = input[0], src0.w = temp[8] MAX temp[10].x, |src0.x__|, src0.w__ 2: src0.xyz = temp[10] REPL_ALPHA temp[13].x RCP, src0.x 3: src0.xyz = temp[10], src1.xyz = input[0] MAD temp[12].xyz, -src0.xxx, |src0.111|, |src1.xyz| 4: src0.xyz = temp[12] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result >= 0)] 5: IF aluresult.x___; 6: src0.xyz = const[0] MAD temp[3].x, src0.x__, src0.111, src0.000 7: ELSE; 8: src0.xyz = const[0] MAD temp[3].x, src0.y__, src0.111, src0.000 9: ENDIF; 10: src0.xyz = temp[12] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 11: src0.xyz = temp[3] MAD temp[3].x, src0.x__, src0.111, src0.000 12: IF aluresult.x___; 13: src0.xyz = const[0] MAD temp[4].x, src0.x__, src0.111, src0.000 14: ELSE; 15: src0.xyz = const[0] MAD temp[4].x, src0.y__, src0.111, src0.000 16: ENDIF; 17: src0.xyz = temp[12] MAD aluresult, src0.z__, src0.111, src0.000 [aluresult = (result >= 0)] 18: src0.xyz = temp[4] MAD temp[3].y, src0._x_, src0.111, src0.000 19: IF aluresult.x___; 20: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.111, src0.000 21: ELSE; 22: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.111, src0.000 23: ENDIF; 24: src0.xyz = temp[2] MAD temp[3].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[3], src1.xyz = temp[5] DP3 temp[0].x, src0.xyz, src1.xyz 26: src0.xyz = const[0], src1.xyz = input[0] MAD temp[14].xyz, src0.xxz, src1.yxy, src0.000 27: src0.xyz = temp[3], src1.xyz = temp[14] DP3 temp[15].x, src0.xyz, src1.xyz 28: src0.xyz = temp[15] MAD temp[0].y, src0._x_, src0.111, src0.000 29: src0.xyz = temp[0], src1.xyz = temp[13], src2.xyz = const[0] MAD temp[16].xy, src0.xy_, src1.xx_, src2.xx_ 30: src0.xyz = temp[16], src1.xyz = const[4] MAD temp[17].xy, src0.xy_, src1.xx_, src0.000 31: src0.xyz = temp[17], src0.w = const[0] MAD temp[18].xy, src0.xy_, src0.ww_, src0.000 32: BEGIN_TEX; 33: TEX temp[21], input[0].xyz_, CUBE[1]; 34: TEX temp[19], temp[18].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 35: src0.xyz = temp[19], src0.w = temp[19], src1.w = const[0] SEM_WAIT MAD temp[20].xyz, src0.xyz, src1.www, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 36: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = const[1], src1.w = temp[20], src2.xyz = temp[20] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD_SAT color[0].w, src0.w, src1.x, src1.w Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[0] MAD temp[1].xyz, src0.xzx, src1.zzx, src0.000 MAX temp[0].w, |src1.y|, |src1.z| 1: src0.xyz = input[0], src0.w = temp[0] MAX temp[2].x, |src0.x__|, src0.w__ 2: src0.xyz = temp[2] REPL_ALPHA temp[2].y RCP, src0.x 3: src0.xyz = temp[2], src1.xyz = input[0] MAD temp[3].xyz, -src0.xxx, |src0.111|, |src1.xyz| 4: src0.xyz = temp[3] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result >= 0)] 5: IF aluresult.x___; 6: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.1__, src0.0__ 7: ELSE; 8: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.1__, src0.0__ 9: ENDIF; 10: src0.xyz = temp[3] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result >= 0)] 11: src0.xyz = temp[2] MAD temp[4].x, src0.x__, src0.111, src0.000 12: IF aluresult.x___; 13: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.1__, src0.0__ 14: ELSE; 15: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.1__, src0.0__ 16: ENDIF; 17: src0.xyz = temp[3] MAD aluresult, src0.z__, src0.111, src0.000 [aluresult = (result >= 0)] 18: src0.xyz = temp[2] MAD temp[4].y, src0._x_, src0.111, src0.000 19: IF aluresult.x___; 20: src0.xyz = const[0] MAD temp[2].x, src0.x__, src0.1__, src0.0__ 21: ELSE; 22: src0.xyz = const[0] MAD temp[2].x, src0.y__, src0.1__, src0.0__ 23: ENDIF; 24: src0.xyz = temp[2] MAD temp[4].z, src0.__x, src0.111, src0.000 25: src0.xyz = temp[4], src1.xyz = temp[1] DP3 temp[1].x, src0.xyz, src1.xyz 26: src0.xyz = const[0], src1.xyz = input[0] MAD temp[3].xyz, src0.xxz, src1.yxy, src0.000 27: src0.xyz = temp[4], src1.xyz = temp[3] DP3 temp[1].z, src0.xyz, src1.xyz 28: src0.xyz = temp[1] MAD temp[1].y, src0._z_, src0.11_, src0.00_ 29: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = const[0] MAD temp[1].xy, src0.xy_, src1.yy_, src2.xx_ 30: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_ 31: src0.xyz = temp[1], src0.w = const[0] MAD temp[1].xy, src0.xy_, src0.ww_, src0.00_ 32: BEGIN_TEX; 33: TEX temp[0], input[0].xyz_, CUBE[1]; 34: TEX temp[1], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 35: src0.xyz = temp[1], src0.w = temp[1], src1.w = const[0] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.www, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 36: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = temp[1], src2.xyz = temp[1] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD_SAT color[0].w, src0.w, src1.x, src1.w R500 Fragment Program: -------- 0 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000100:Addr0: 0c, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00092040:rgb_A_src:0 R/B/R 0 rgb_B_src:1 B/B/R 0 targ: 0 4 ALPHA_INST:0x024c5003:MAX dest:0 alp_A_src:1 G 2 alp_B_src:1 B 2 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 1 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00919480:rgb_A_src:0 R/0/0 2 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: 0x00000025:MAX dest:2 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x0000000a:RCP dest:0 alp_A_src:0 R 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 3 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x02db0800:rgb_A_src:0 R/R/R 1 rgb_B_src:0 1/1/1 2 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: 0x01221030:MAD dest:3 rgb_C_src:1 R/G/B 2 alp_C_src:0 R 0 4 0:CMN_INST 0x01000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0480:rgb_A_src:0 R/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: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 8 IGN_UNC 3:FC_ADDR 0x00080000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 8, JMP_GLBL: 0 6 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/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 7 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 8 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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 9 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 10 0:CMN_INST 0x01000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0484:rgb_A_src:0 G/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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: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 12 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC 3:FC_ADDR 0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0 13 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/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 14 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 17 3:FC_ADDR 0x00110000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 17, JMP_GLBL: 0 15 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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 16 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 17 3:FC_ADDR 0x00110000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 17, JMP_GLBL: 0 17 0:CMN_INST 0x01000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0488: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: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 18 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0410:rgb_A_src:0 0/R/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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 22 IGN_UNC 3:FC_ADDR 0x00160000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 22, JMP_GLBL: 0 20 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/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 21 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 24 3:FC_ADDR 0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0 22 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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 23 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 24 3:FC_ADDR 0x00180000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 24, JMP_GLBL: 0 24 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0090:rgb_A_src:0 0/0/R 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: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 25 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08000404:Addr0: 4t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 26 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000100:Addr0: 0c, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0020a200:rgb_A_src:0 R/R/B 0 rgb_B_src:1 G/R/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: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 27 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08000c04:Addr0: 4t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 28 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0450:rgb_A_src:0 0/B/0 0 rgb_B_src:0 1/1/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 29 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x10000801:Addr0: 1t, Addr1: 2t, Addr2: 0c, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0084a420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 G/G/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: 0x00402010:MAD dest:1 rgb_C_src:2 R/R/0 0 alp_C_src:0 R 0 30 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x08041001:Addr0: 1t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 31 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, 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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 32 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe400e400: src: 0 R/G/B/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 33 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 34 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 3 RGB_INST: 0x006da220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 A/A/A 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 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 35 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00140400:Addr0: 0t, Addr1: 1c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL TEMP[0..2] 0: MUL TEMP[0].xy, CONST[0].xyyy, IN[1].xxxx 1: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D 2: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D 3: MUL TEMP[0], TEMP[1], TEMP[2] 4: MUL TEMP[0], TEMP[0], IN[2].xxxx 5: MOV_SAT TEMP[0], TEMP[0] 6: MUL OUT[0], TEMP[0], IN[3].xxxx 7: END Fragment Program: before compilation # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL output[0], temp[0], input[3].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL output[0], temp[0], input[3].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL output[0], temp[0], input[3].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL output[0], temp[0], input[3].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL_SAT output[0], temp[0], input[3].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL_SAT output[0], temp[0], input[3].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL_SAT output[0], temp[0], input[3].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xyyy, input[1].xxxx; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL_SAT output[0], temp[0], input[3].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MUL temp[0].xy, const[0].xy__, input[1].xx__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: TEX temp[2], input[0].xy__, 2D[1]; 3: MUL temp[0], temp[1], temp[2]; 4: MUL temp[0], temp[0], input[2].xxxx; 5: MOV_SAT temp[0], temp[0]; 6: MUL_SAT output[0], temp[0], input[3].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MUL temp[3].xy, const[0].xy__, input[1].xx__; 1: TEX temp[4], temp[3].xy__, 2D[0]; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: MUL temp[6], temp[4], temp[5]; 4: MUL temp[7], temp[6], input[2].xxxx; 5: MOV_SAT temp[8], temp[7]; 6: MUL_SAT output[0], temp[8], input[3].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MUL temp[3].xy, const[0].xy__, input[1].xx__; 1: TEX temp[4], temp[3].xy__, 2D[0]; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: MUL temp[6], temp[4], temp[5]; 4: MUL temp[7], temp[6], input[2].xxxx; 5: MOV_SAT temp[8], temp[7]; 6: MUL_SAT output[0], temp[8], input[3].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MUL temp[3].xy, const[0].xy__, input[1].xx__; 1: TEX temp[4], temp[3].xy__, 2D[0]; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: MUL temp[6], temp[4], temp[5]; 4: MUL temp[7], temp[6], input[2].xxxx; 5: MOV_SAT temp[8], temp[7]; 6: MUL_SAT output[0], temp[8], input[3].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MUL temp[3].xy, const[0].xy__, input[1].xx__; 1: TEX temp[4], temp[3].xy__, 2D[0]; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: MUL temp[6], temp[4], temp[5]; 4: MUL temp[7], temp[6], input[2].xxxx; 5: MOV_SAT temp[8], temp[7]; 6: MUL_SAT output[0], temp[8], input[3].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[1] MAD temp[3].xy, src0.xy_, src1.xx_, src0.000 1: TEX temp[4], temp[3].xy__, 2D[0]; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[6].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2] MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[7].w, src0.w, src1.x, src0.0 5: src0.xyz = temp[7], src0.w = temp[7] MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[8].w, src0.w, src0.1, src0.0 6: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[1] MAD temp[3].xy, src0.xy_, src1.xx_, src0.000 1: BEGIN_TEX; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: TEX temp[4], temp[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5] SEM_WAIT MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[6].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2] MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[7].w, src0.w, src1.x, src0.0 6: src0.xyz = temp[7], src0.w = temp[7] MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[8].w, src0.w, src0.1, src0.0 7: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[1] MAD temp[3].xy, src0.xy_, src1.xx_, src0.000 1: BEGIN_TEX; 2: TEX temp[5], input[0].xy__, 2D[1]; 3: TEX temp[4], temp[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = temp[5], src1.w = temp[5] SEM_WAIT MAD temp[6].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[6].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = input[2] MAD temp[7].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[7].w, src0.w, src1.x, src0.0 6: src0.xyz = temp[7], src0.w = temp[7] MAD_SAT temp[8].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[8].w, src0.w, src0.1, src0.0 7: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = input[3] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[0], src1.xyz = input[1] MAD temp[1].xy, src0.xy_, src1.xx_, src0.00_ 1: BEGIN_TEX; 2: TEX temp[0], input[0].xy__, 2D[1]; 3: TEX temp[1], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 6: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT temp[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[0].w, src0.w, src0.1, src0.0 7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[3] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 1 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , 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 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, 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 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, 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 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000800:Addr0: 0t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 5 0:CMN_INST 0x00187800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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 6 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3..5] DCL TEMP[0..3] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D 1: MUL TEMP[0], TEMP[0], CONST[3] 2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx 3: IF TEMP[1].xxxx :0 4: MOV TEMP[1].x, IMM[0].yyyy 5: ELSE :0 6: ABS TEMP[2].x, IN[0].zzzz 7: POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx 8: ENDIF 9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx 12: IF TEMP[2].xxxx :0 13: MOV TEMP[2].x, IMM[0].yyyy 14: ELSE :0 15: ABS TEMP[3].x, TEMP[1].xxxx 16: POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy 17: ENDIF 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy 22: MOV_SAT TEMP[2].x, CONST[4].yyyy 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx 24: MUL TEMP[0], TEMP[0], TEMP[1] 25: MUL OUT[0], TEMP[0], CONST[4].xxxx 26: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)] 12: IF aluresult.x___; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: MOV temp[2].x, |input[0].zzzz|; 7: LG2 temp[1].w, temp[2].xxxx; 8: MUL temp[1].w, temp[1].wwww, const[5].xxxx; 9: EX2 temp[1].x, temp[1].wwww; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1111; 16: ELSE; 17: MOV temp[3].x, |temp[1].xxxx|; 18: LG2 temp[2].w, temp[3].xxxx; 19: MUL temp[2].w, temp[2].wwww, const[5].yyyy; 20: EX2 temp[2].x, temp[2].wwww; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xyyy, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].yyyy; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[2].x, |input[0].z___|; 7: LG2 temp[1].w, temp[2].___x; 8: MUL temp[1].w, temp[1].___w, const[5].___x; 9: EX2 temp[1].x, temp[1].w___; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[3].x, |temp[1].x___|; 18: LG2 temp[2].w, temp[3].___x; 19: MUL temp[2].w, temp[2].___w, const[5].___y; 20: EX2 temp[2].x, temp[2].w___; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xy__, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].y___; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[6].x, |input[0].z___|; 7: LG2 temp[7].w, temp[6].___x; 8: MUL temp[8].w, temp[7].___w, const[5].___x; 9: EX2 temp[1].x, temp[8].w___; 10: ENDIF; 11: MUL temp[9], temp[5], temp[1].xxxx; 12: ADD temp[10].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[11].x, |temp[10].x___|; 18: LG2 temp[12].w, temp[11].___x; 19: MUL temp[13].w, temp[12].___w, const[5].___y; 20: EX2 temp[2].x, temp[13].w___; 21: ENDIF; 22: MUL temp[14], temp[9], temp[2].xxxx; 23: MUL temp[15], temp[14], const[4].zzzz; 24: TEX temp[16], input[0].xy__, 2D[0]; 25: ADD temp[17], temp[16], const[0].yyyy; 26: MOV_SAT temp[18].x, const[4].y___; 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 28: MUL temp[20], temp[15], temp[19]; 29: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: IF aluresult.x___; 4: MAD temp[1].x, src0.1__, src0.111, src0.000 5: ELSE; 6: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 7: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 8: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 9: ENDIF; 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 11: src0.xyz = const[0], src1.xyz = input[0] MAD temp[10].x, src0.x__, src0.111, -src1.z__ 12: src0.xyz = const[5] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10] LG2 temp[12].w, |src0.x| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 22: TEX temp[16], input[0].xy__, 2D[0]; 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10], src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 6: ELSE; 7: src0.xyz = input[0] LG2 temp[1].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.x, src0.0 9: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[1].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 15: ELSE; 16: src0.w = temp[1] LG2 temp[1].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.y, src0.0 18: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[0].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__ 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy MAD temp[1].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[1].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02410000: id: 1 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0480:rgb_A_src:0 R/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC 3:FC_ADDR 0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0 4 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 5 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 6 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00048019:LN2 dest:1 alp_A_src:0 B 2 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 7 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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 8 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 9 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 10 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 11 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1 12 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC 3:FC_ADDR 0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0 13 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 14 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 15 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 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 16 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 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 17 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 18 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 19 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 20 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 21 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 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 22 0:CMN_INST 0x00080800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, 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: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0 24 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0 25 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, 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 26 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3..5] DCL TEMP[0..3] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D 1: MUL TEMP[0], TEMP[0], CONST[3] 2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx 3: IF TEMP[1].xxxx :0 4: MOV TEMP[1].x, IMM[0].yyyy 5: ELSE :0 6: ABS TEMP[2].x, IN[0].zzzz 7: POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx 8: ENDIF 9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx 12: IF TEMP[2].xxxx :0 13: MOV TEMP[2].x, IMM[0].yyyy 14: ELSE :0 15: ABS TEMP[3].x, TEMP[1].xxxx 16: POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy 17: ENDIF 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy 22: MOV_SAT TEMP[2].x, CONST[4].yyyy 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx 24: MUL TEMP[0], TEMP[0], TEMP[1] 25: MUL OUT[0], TEMP[0], CONST[4].xxxx 26: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)] 12: IF aluresult.x___; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: MOV temp[2].x, |input[0].zzzz|; 7: LG2 temp[1].w, temp[2].xxxx; 8: MUL temp[1].w, temp[1].wwww, const[5].xxxx; 9: EX2 temp[1].x, temp[1].wwww; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1111; 16: ELSE; 17: MOV temp[3].x, |temp[1].xxxx|; 18: LG2 temp[2].w, temp[3].xxxx; 19: MUL temp[2].w, temp[2].wwww, const[5].yyyy; 20: EX2 temp[2].x, temp[2].wwww; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xyyy, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].yyyy; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[2].x, |input[0].z___|; 7: LG2 temp[1].w, temp[2].___x; 8: MUL temp[1].w, temp[1].___w, const[5].___x; 9: EX2 temp[1].x, temp[1].w___; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[3].x, |temp[1].x___|; 18: LG2 temp[2].w, temp[3].___x; 19: MUL temp[2].w, temp[2].___w, const[5].___y; 20: EX2 temp[2].x, temp[2].w___; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xy__, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].y___; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[6].x, |input[0].z___|; 7: LG2 temp[7].w, temp[6].___x; 8: MUL temp[8].w, temp[7].___w, const[5].___x; 9: EX2 temp[1].x, temp[8].w___; 10: ENDIF; 11: MUL temp[9], temp[5], temp[1].xxxx; 12: ADD temp[10].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[11].x, |temp[10].x___|; 18: LG2 temp[12].w, temp[11].___x; 19: MUL temp[13].w, temp[12].___w, const[5].___y; 20: EX2 temp[2].x, temp[13].w___; 21: ENDIF; 22: MUL temp[14], temp[9], temp[2].xxxx; 23: MUL temp[15], temp[14], const[4].zzzz; 24: TEX temp[16], input[0].xy__, 2D[0]; 25: ADD temp[17], temp[16], const[0].yyyy; 26: MOV_SAT temp[18].x, const[4].y___; 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 28: MUL temp[20], temp[15], temp[19]; 29: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: IF aluresult.x___; 4: MAD temp[1].x, src0.1__, src0.111, src0.000 5: ELSE; 6: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 7: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 8: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 9: ENDIF; 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 11: src0.xyz = const[0], src1.xyz = input[0] MAD temp[10].x, src0.x__, src0.111, -src1.z__ 12: src0.xyz = const[5] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10] LG2 temp[12].w, |src0.x| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 22: TEX temp[16], input[0].xy__, 2D[0]; 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10], src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 6: ELSE; 7: src0.xyz = input[0] LG2 temp[1].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.x, src0.0 9: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[1].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 15: ELSE; 16: src0.w = temp[1] LG2 temp[1].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.y, src0.0 18: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[0].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__ 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy MAD temp[1].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[1].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02410000: id: 1 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0480:rgb_A_src:0 R/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC 3:FC_ADDR 0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0 4 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 5 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 6 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00048019:LN2 dest:1 alp_A_src:0 B 2 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 7 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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 8 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 9 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 10 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 11 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1 12 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC 3:FC_ADDR 0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0 13 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 14 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 15 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 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 16 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 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 17 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 18 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 19 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 20 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 21 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 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 22 0:CMN_INST 0x00080800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, 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: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0 24 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0 25 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, 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 26 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL TEMP[0] 0: TEX TEMP[0], IN[0].xyyy, SAMP[0], 2D 1: MOV OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV_SAT 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_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT 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: 0x02400000: id: 0 op:LD, ACQ, 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 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..4] DCL TEMP[0..1] 0: MAD TEMP[0].xy, IN[0].xyyy, CONST[4].xyyy, CONST[3].xyyy 1: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D 2: MUL TEMP[0], TEMP[1], CONST[1] 3: MUL OUT[0], TEMP[0], CONST[2].xxxx 4: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL output[0], temp[0], const[2].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL output[0], temp[0], const[2].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL output[0], temp[0], const[2].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL output[0], temp[0], const[2].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL_SAT output[0], temp[0], const[2].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL_SAT output[0], temp[0], const[2].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL_SAT output[0], temp[0], const[2].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xyyy, const[4].xyyy, const[3].xyyy; 1: TEX temp[1], temp[0].xyyy, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL_SAT output[0], temp[0], const[2].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0].xy, input[0].xy__, const[4].xy__, const[3].xy__; 1: TEX temp[1], temp[0].xy__, 2D[0]; 2: MUL temp[0], temp[1], const[1]; 3: MUL_SAT output[0], temp[0], const[2].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MUL temp[4], temp[3], const[1]; 3: MUL_SAT output[0], temp[4], const[2].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MUL temp[4], temp[3], const[1]; 3: MUL_SAT output[0], temp[4], const[2].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MUL temp[4], temp[3], const[1]; 3: MUL_SAT output[0], temp[4], const[2].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[2].xy, input[0].xy__, const[4].xy__, const[3].xy__; 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: MUL temp[4], temp[3], const[1]; 3: MUL_SAT output[0], temp[4], const[2].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 1: TEX temp[3], temp[2].xy__, 2D[0]; 2: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 1: BEGIN_TEX; 2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3] MAD temp[2].xy, src0.xy_, src1.xy_, src2.xy_ 1: BEGIN_TEX; 2: TEX temp[3], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[1], src1.w = const[1] SEM_WAIT MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[2] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src1.xyz = const[4], src2.xyz = const[3] MAD temp[0].xy, src0.xy_, src1.xy_, src2.xy_ 1: BEGIN_TEX; 2: TEX temp[0], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1], src1.w = const[1] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[2] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x10341000:Addr0: 0t, Addr1: 4c, Addr2: 3c, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/G/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: 0x00422000:MAD dest:0 rgb_C_src:2 R/G/0 0 alp_C_src:0 R 0 1 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, 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 0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, 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 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08040800:Addr0: 0t, Addr1: 2c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3..5] DCL TEMP[0..3] IMM FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[0].xyyy, SAMP[1], 2D 1: MUL TEMP[0], TEMP[0], CONST[3] 2: SEQ TEMP[1].x, CONST[5].xxxx, IMM[0].xxxx 3: IF TEMP[1].xxxx :0 4: MOV TEMP[1].x, IMM[0].yyyy 5: ELSE :0 6: ABS TEMP[2].x, IN[0].zzzz 7: POW TEMP[1].x, TEMP[2].xxxx, CONST[5].xxxx 8: ENDIF 9: MUL TEMP[0], TEMP[0], TEMP[1].xxxx 10: ADD TEMP[1].x, CONST[0].xxxx, -IN[0].zzzz 11: SEQ TEMP[2].x, CONST[5].yyyy, IMM[0].xxxx 12: IF TEMP[2].xxxx :0 13: MOV TEMP[2].x, IMM[0].yyyy 14: ELSE :0 15: ABS TEMP[3].x, TEMP[1].xxxx 16: POW TEMP[2].x, TEMP[3].xxxx, CONST[5].yyyy 17: ENDIF 18: MUL TEMP[0], TEMP[0], TEMP[2].xxxx 19: MUL TEMP[0], TEMP[0], CONST[4].zzzz 20: TEX TEMP[2], IN[0].xyyy, SAMP[0], 2D 21: ADD TEMP[1], TEMP[2], CONST[0].yyyy 22: MOV_SAT TEMP[2].x, CONST[4].yyyy 23: MAD TEMP[1], TEMP[1], TEMP[2].xxxx, CONST[0].xxxx 24: MUL TEMP[0], TEMP[0], TEMP[1] 25: MUL OUT[0], TEMP[0], CONST[4].xxxx 26: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL output[0], temp[0], const[4].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SEQ temp[1].x, const[5].xxxx, temp[0].0000; 3: IF temp[1].xxxx; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SEQ temp[2].x, const[5].yyyy, temp[0].0000; 12: IF temp[2].xxxx; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: SUB none., const[5].xxxx, temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: ABS temp[2].x, input[0].zzzz; 7: POW temp[1].x, temp[2].xxxx, const[5].xxxx; 8: ENDIF; 9: MUL temp[0], temp[0], temp[1].xxxx; 10: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 11: SUB none., const[5].yyyy, temp[0].0000; [aluresult = (x == 0)] 12: IF aluresult.x___; 13: MOV temp[2].x, temp[0].1111; 14: ELSE; 15: ABS temp[3].x, temp[1].xxxx; 16: POW temp[2].x, temp[3].xxxx, const[5].yyyy; 17: ENDIF; 18: MUL temp[0], temp[0], temp[2].xxxx; 19: MUL temp[0], temp[0], const[4].zzzz; 20: TEX temp[2], input[0].xyyy, 2D[0]; 21: ADD temp[1], temp[2], const[0].yyyy; 22: MOV_SAT temp[2].x, const[4].yyyy; 23: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 24: MUL temp[0], temp[0], temp[1]; 25: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[0].xyyy, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].xxxx, -temp[0].0000; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1111; 5: ELSE; 6: MOV temp[2].x, |input[0].zzzz|; 7: LG2 temp[1].w, temp[2].xxxx; 8: MUL temp[1].w, temp[1].wwww, const[5].xxxx; 9: EX2 temp[1].x, temp[1].wwww; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].xxxx, -input[0].zzzz; 13: ADD none., const[5].yyyy, -temp[0].0000; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1111; 16: ELSE; 17: MOV temp[3].x, |temp[1].xxxx|; 18: LG2 temp[2].w, temp[3].xxxx; 19: MUL temp[2].w, temp[2].wwww, const[5].yyyy; 20: EX2 temp[2].x, temp[2].wwww; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xyyy, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].yyyy; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[1]; 1: MUL temp[0], temp[0], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[2].x, |input[0].z___|; 7: LG2 temp[1].w, temp[2].___x; 8: MUL temp[1].w, temp[1].___w, const[5].___x; 9: EX2 temp[1].x, temp[1].w___; 10: ENDIF; 11: MUL temp[0], temp[0], temp[1].xxxx; 12: ADD temp[1].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[3].x, |temp[1].x___|; 18: LG2 temp[2].w, temp[3].___x; 19: MUL temp[2].w, temp[2].___w, const[5].___y; 20: EX2 temp[2].x, temp[2].w___; 21: ENDIF; 22: MUL temp[0], temp[0], temp[2].xxxx; 23: MUL temp[0], temp[0], const[4].zzzz; 24: TEX temp[2], input[0].xy__, 2D[0]; 25: ADD temp[1], temp[2], const[0].yyyy; 26: MOV_SAT temp[2].x, const[4].y___; 27: MAD temp[1], temp[1], temp[2].xxxx, const[0].xxxx; 28: MUL temp[0], temp[0], temp[1]; 29: MUL_SAT output[0], temp[0], const[4].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: ADD none., const[5].x___, -temp[0].0___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, temp[0].1___; 5: ELSE; 6: MOV temp[6].x, |input[0].z___|; 7: LG2 temp[7].w, temp[6].___x; 8: MUL temp[8].w, temp[7].___w, const[5].___x; 9: EX2 temp[1].x, temp[8].w___; 10: ENDIF; 11: MUL temp[9], temp[5], temp[1].xxxx; 12: ADD temp[10].x, const[0].x___, -input[0].z___; 13: ADD none., const[5].y___, -temp[0].0___; [aluresult = (x == 0)] 14: IF aluresult.x___; 15: MOV temp[2].x, temp[0].1___; 16: ELSE; 17: MOV temp[11].x, |temp[10].x___|; 18: LG2 temp[12].w, temp[11].___x; 19: MUL temp[13].w, temp[12].___w, const[5].___y; 20: EX2 temp[2].x, temp[13].w___; 21: ENDIF; 22: MUL temp[14], temp[9], temp[2].xxxx; 23: MUL temp[15], temp[14], const[4].zzzz; 24: TEX temp[16], input[0].xy__, 2D[0]; 25: ADD temp[17], temp[16], const[0].yyyy; 26: MOV_SAT temp[18].x, const[4].y___; 27: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 28: MUL temp[20], temp[15], temp[19]; 29: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: MUL temp[5], temp[4], const[3]; 2: MOV none., const[5].x___; [aluresult = (x == 0)] 3: IF aluresult.x___; 4: MOV temp[1].x, none.1___; 5: ELSE; 6: LG2 temp[7].w, |input[0].___z|; 7: MUL temp[8].w, temp[7].___w, const[5].___x; 8: EX2 temp[1].x, temp[8].w___; 9: ENDIF; 10: MUL temp[9], temp[5], temp[1].xxxx; 11: ADD temp[10].x, const[0].x___, -input[0].z___; 12: MOV none., const[5].y___; [aluresult = (x == 0)] 13: IF aluresult.x___; 14: MOV temp[2].x, none.1___; 15: ELSE; 16: LG2 temp[12].w, |temp[10].___x|; 17: MUL temp[13].w, temp[12].___w, const[5].___y; 18: EX2 temp[2].x, temp[13].w___; 19: ENDIF; 20: MUL temp[14], temp[9], temp[2].xxxx; 21: MUL temp[15], temp[14], const[4].zzzz; 22: TEX temp[16], input[0].xy__, 2D[0]; 23: ADD temp[17], temp[16], const[0].yyyy; 24: MOV_SAT temp[18].x, const[4].y___; 25: MAD temp[19], temp[17], temp[18].xxxx, const[0].xxxx; 26: MUL temp[20], temp[15], temp[19]; 27: MUL_SAT output[0], temp[20], const[4].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[0].xy__, 2D[1]; 1: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: IF aluresult.x___; 4: MAD temp[1].x, src0.1__, src0.111, src0.000 5: ELSE; 6: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 7: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 8: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 9: ENDIF; 10: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 11: src0.xyz = const[0], src1.xyz = input[0] MAD temp[10].x, src0.x__, src0.111, -src1.z__ 12: src0.xyz = const[5] MAD aluresult, src0.y__, src0.111, src0.000 [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10] LG2 temp[12].w, |src0.x| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 21: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 22: TEX temp[16], input[0].xy__, 2D[0]; 23: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 26: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 27: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.xyz = temp[10], src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[1].x, src0.1__, src0.111, src0.000 6: ELSE; 7: src0.xyz = input[0] LG2 temp[7].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[7] MAD temp[8].w, src0.w, src0.x, src0.0 9: src0.w = temp[8] REPL_ALPHA temp[1].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = temp[1] MAD temp[9].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[9].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[10].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.111, src0.000 15: ELSE; 16: src0.w = temp[10] LG2 temp[12].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[12] MAD temp[13].w, src0.w, src0.y, src0.0 18: src0.w = temp[13] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[16], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[2] MAD temp[14].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[14].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[14], src0.w = temp[14], src1.xyz = const[4] MAD temp[15].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[15].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[18].x, src0.y__, src0.111, src0.000 25: src0.xyz = temp[16], src0.w = temp[16], src1.xyz = const[0] SEM_WAIT MAD temp[17].xyz, src0.xyz, src0.111, src1.yyy MAD temp[17].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[18], src2.xyz = const[0] MAD temp[19].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[19].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[15], src0.w = temp[15], src1.xyz = temp[19], src1.w = temp[19] MAD temp[20].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[20].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[20], src0.w = temp[20], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[5] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 3: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[3], src1.w = const[3] SEM_WAIT MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 4: IF aluresult.x___; 5: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 6: ELSE; 7: src0.xyz = input[0] LG2 temp[1].w, |src0.z| 8: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.x, src0.0 9: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 10: ENDIF; 11: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[1].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 12: src0.xyz = const[5], src1.xyz = const[0], src2.xyz = input[0] MAD aluresult, src0.y__, src0.111, src0.000 MAD temp[1].w, src1.x, src0.1, -src2.z [aluresult = (result == 0)] 13: IF aluresult.x___; 14: MAD temp[2].x, src0.1__, src0.1__, src0.0__ 15: ELSE; 16: src0.w = temp[1] LG2 temp[1].w, |src0.w| 17: src0.xyz = const[5], src0.w = temp[1] MAD temp[1].w, src0.w, src0.y, src0.0 18: src0.w = temp[1] REPL_ALPHA temp[2].x EX2, src0.w 19: ENDIF; 20: BEGIN_TEX; 21: TEX temp[3], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 22: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src0.000 MAD temp[0].w, src0.w, src1.x, src0.0 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD temp[0].xyz, src0.xyz, src1.zzz, src0.000 MAD temp[0].w, src0.w, src1.z, src0.0 24: src0.xyz = const[4] MAD_SAT temp[1].x, src0.y__, src0.1__, src0.0__ 25: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = const[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src0.111, src1.yyy MAD temp[1].w, src0.w, src0.1, src1.y 26: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[1], src2.xyz = const[0] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xxx MAD temp[1].w, src0.w, src1.x, src2.x 27: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 28: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02410000: id: 1 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f400: src: 0 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0480:rgb_A_src:0 R/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040c01:Addr0: 1t, Addr1: 3c, Addr2: 128t, 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: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 6 IGN_UNC 3:FC_ADDR 0x00060000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 6, JMP_GLBL: 0 4 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 5 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 6 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00048019:LN2 dest:1 alp_A_src:0 B 2 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 7 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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 8 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 9 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 10 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 10 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 11 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x00040105:Addr0: 5c, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c01010:MAD dest:1 alp_A_src:1 R 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x54490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:2 B 1 12 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 15 IGN_UNC 3:FC_ADDR 0x000f0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 15, JMP_GLBL: 0 13 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930498:rgb_A_src:0 1/0/0 0 rgb_B_src:0 1/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 14 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 15 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0004c019:LN2 dest:1 alp_A_src:0 A 2 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 16 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020105:Addr0: 5c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0020c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 G 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 17 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0000c008:EX2 dest:0 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 18 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 19 3:FC_ADDR 0x00130000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 19, JMP_GLBL: 0 19 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe403f400: src: 0 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 20 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 21 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0048c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 B 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 22 0:CMN_INST 0x00080800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930484:rgb_A_src:0 G/0/0 0 rgb_B_src:0 1/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: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 23 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040003:Addr0: 3t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, 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: 0x0a125020:MAD dest:2 rgb_C_src:1 G/G/G 0 alp_C_src:1 G 0 24 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x10000402:Addr0: 2t, Addr1: 1t, Addr2: 0c, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, 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:0x0008c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x04002010:MAD dest:1 rgb_C_src:2 R/R/R 0 alp_C_src:2 R 0 25 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, 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 26 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #32: fixme:d3d_shader:print_glsl_info_log 0:84(30): error: array index must be < 245 fixme:d3d_shader:print_glsl_info_log 0:84(35): error: type mismatch fixme:d3d_shader:print_glsl_info_log 0:84(35): error: Operands to arithmetic operators must be numeric fixme:d3d_shader:print_glsl_info_log 0:91(30): error: array index must be < 245 fixme:d3d_shader:print_glsl_info_log 0:91(35): error: type mismatch fixme:d3d_shader:print_glsl_info_log 0:91(35): error: Operands to arithmetic operators must be numeric fixme:d3d_shader:print_glsl_info_log 0:93(17): error: array index must be < 245 fixme:d3d_shader:print_glsl_info_log 0:93(22): error: type mismatch fixme:d3d_shader:shader_glsl_validate_link Program 31 link status invalid. fixme:d3d_shader:shader_glsl_dump_program_source Object 33: fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_SUBTYPE_ARB: GL_VERTEX_SHADER_ARB. fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_COMPILE_STATUS_ARB: 1. fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:shader_glsl_dump_program_source #version 120 fixme:d3d_shader:shader_glsl_dump_program_source varying vec4 IN[8]; fixme:d3d_shader:shader_glsl_dump_program_source void order_ps_input(in vec4 OUT[12]) { fixme:d3d_shader:shader_glsl_dump_program_source gl_Position.xyzw = OUT[0].xyzw; fixme:d3d_shader:shader_glsl_dump_program_source IN[0].xyzw = OUT[1].xyzw; fixme:d3d_shader:shader_glsl_dump_program_source IN[1].xyz = OUT[2].xyz; fixme:d3d_shader:shader_glsl_dump_program_source IN[2].xyz = OUT[3].xyz; fixme:d3d_shader:shader_glsl_dump_program_source IN[3].xyz = OUT[4].xyz; fixme:d3d_shader:shader_glsl_dump_program_source IN[4].xyz = OUT[5].xyz; fixme:d3d_shader:shader_glsl_dump_program_source IN[1].w = 0.0; fixme:d3d_shader:shader_glsl_dump_program_source IN[2].w = 0.0; fixme:d3d_shader:shader_glsl_dump_program_source IN[3].w = 0.0; fixme:d3d_shader:shader_glsl_dump_program_source IN[4].w = 0.0; fixme:d3d_shader:shader_glsl_dump_program_source } fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:shader_glsl_dump_program_source Object 32: fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_SUBTYPE_ARB: GL_VERTEX_SHADER_ARB. fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_COMPILE_STATUS_ARB: 0. fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:shader_glsl_dump_program_source #version 120 fixme:d3d_shader:shader_glsl_dump_program_source uniform vec4 VC[245]; fixme:d3d_shader:shader_glsl_dump_program_source uniform vec4 posFixup; fixme:d3d_shader:shader_glsl_dump_program_source void order_ps_input(in vec4[12]); fixme:d3d_shader:shader_glsl_dump_program_source ivec4 A0; fixme:d3d_shader:shader_glsl_dump_program_source vec4 OUT[12]; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R0; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R1; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R2; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R3; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R4; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R5; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R6; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R7; fixme:d3d_shader:shader_glsl_dump_program_source attribute vec4 attrib0; fixme:d3d_shader:shader_glsl_dump_program_source attribute vec4 attrib1; fixme:d3d_shader:shader_glsl_dump_program_source attribute vec4 attrib2; fixme:d3d_shader:shader_glsl_dump_program_source attribute vec4 attrib3; fixme:d3d_shader:shader_glsl_dump_program_source attribute vec4 attrib4; fixme:d3d_shader:shader_glsl_dump_program_source vec4 tmp0; fixme:d3d_shader:shader_glsl_dump_program_source vec4 tmp1; fixme:d3d_shader:shader_glsl_dump_program_source void main() { fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (VC[0].x * attrib4.x); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (fract(R0.x)); fixme:d3d_shader:shader_glsl_dump_program_source R1.x = (attrib4.x); fixme:d3d_shader:shader_glsl_dump_program_source R0.y = ((R1.x * VC[0].x) + attrib1.x); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (-R0.x + R0.y); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (R0.x * VC[0].y); fixme:d3d_shader:shader_glsl_dump_program_source A0.x = (int(floor(abs(R0.x) + 0.5) * sign(R0.x))); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (fract(attrib4.x)); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (-R0.x + attrib4.x); fixme:d3d_shader:shader_glsl_dump_program_source R0.y = (R0.x * VC[0].z); fixme:d3d_shader:shader_glsl_dump_program_source A0.y = (int(floor(abs(R0.x) + 0.5) * sign(R0.x))); fixme:d3d_shader:shader_glsl_dump_program_source OUT[1].z = (VC[A0.y + 21].x); fixme:d3d_shader:shader_glsl_dump_program_source A0.y = (int(floor(abs(R0.y) + 0.5) * sign(R0.y))); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = (VC[A0.x + 37].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyzw = (R0.xyzw * VC[A0.y + 27].yyyy); fixme:d3d_shader:shader_glsl_dump_program_source R2.xyzw = (VC[A0.x + 36].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyzw = ((R2.xyzw * VC[A0.y + 27].xxxx) + R1.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyzw = (VC[A0.x + 38].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyzw = ((R3.xyzw * VC[A0.y + 27].zzzz) + R1.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R4.xy = (VC[1].xy); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyzw = ((VC[A0.y + 27].wwww * R4.xxxy) + R1.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R5.xyzw = ((attrib0.xyzx * VC[1].yyyx) + VC[1].xxxy); fixme:d3d_shader:shader_glsl_dump_program_source R6.w = (dot(R5.xyzw, R1.xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R1.w = (dot(attrib3.xyz, R1.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = (R0.xyzw * VC[A0.y + 24].yyyy); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((R2.xyzw * VC[A0.y + 24].xxxx) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((R3.xyzw * VC[A0.y + 24].zzzz) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((VC[A0.y + 24].wwww * R4.xxxy) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R6.x = (dot(R5.xyzw, R7.xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R1.x = (dot(attrib3.xyz, R7.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = (R0.xyzw * VC[A0.y + 25].yyyy); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((R2.xyzw * VC[A0.y + 25].xxxx) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((R3.xyzw * VC[A0.y + 25].zzzz) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R7.xyzw = ((VC[A0.y + 25].wwww * R4.xxxy) + R7.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R6.y = (dot(R5.xyzw, R7.xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R1.y = (dot(attrib3.xyz, R7.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = (R0.xyzw * VC[A0.y + 26].yyyy); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = ((R2.xyzw * VC[A0.y + 26].xxxx) + R0.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = ((R3.xyzw * VC[A0.y + 26].zzzz) + R0.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R2.x = (dot(R5.xyzw, VC[A0.x + 37].xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[1].w = (R2.x + -VC[16].x); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = ((VC[A0.y + 26].wwww * R4.xxxy) + R0.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R6.z = (dot(R5.xyzw, R0.xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R1.z = (dot(attrib3.xyz, R0.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[0].x = (dot(R6.xyzw, VC[224].xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[0].y = (dot(R6.xyzw, VC[225].xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[0].z = (dot(R6.xyzw, VC[226].xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[0].w = (dot(R6.xyzw, VC[227].xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = (-R6.xyz + VC[223].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (dot(R1.xyzw, R1.xyzw)); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (inversesqrt(abs(R0.w))); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyz = (R1.xyz * R0.www); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (dot(R0.xyz, R0.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (inversesqrt(abs(R0.w))); fixme:d3d_shader:shader_glsl_dump_program_source R2.xyz = (R0.xyz * R0.www); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = ((R0.xyz * R0.www) + VC[244].xyz); fixme:d3d_shader:shader_glsl_dump_program_source tmp0.x = dot(R0.xyz, R0.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyz = (tmp0.x == 0.0 ? vec3(0.0) : (R0.xyz * inversesqrt(tmp0.x))); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (dot(R1.xyz, R3.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = clamp(R0.x, 0.0, 1.0); fixme:d3d_shader:shader_glsl_dump_program_source R1.w = (VC[1].z == 0.0 ? 1.0 : pow(abs(R0.x), VC[1].z)); fixme:d3d_shader:shader_glsl_dump_program_source OUT[4].xyz = (R1.www * VC[245].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (dot(R2.xyz, R1.xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (R0.x + R0.x); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = ((R1.xyz * -R0.xxx) + R2.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (dot(R1.xyz, VC[244].xyz)); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = clamp(R0.w, 0.0, 1.0); fixme:d3d_shader:shader_glsl_dump_program_source R0.w = (R0.w * VC[0].w); fixme:d3d_shader:shader_glsl_dump_program_source OUT[2].xyz = (R0.www * VC[245].xyz); fixme:d3d_shader:shader_glsl_dump_program_source OUT[5].xyz = (-R0.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = (VC[245].xyz); fixme:d3d_shader:shader_glsl_dump_program_source OUT[3].xyz = (R0.xyz * VC[0].www); fixme:d3d_shader:shader_glsl_dump_program_source OUT[1].xy = (attrib2.xy); fixme:d3d_shader:shader_glsl_dump_program_source OUT[5].w = (VC[1].y); fixme:d3d_shader:shader_glsl_dump_program_source OUT[6].xyz = (VC[1].xxx); fixme:d3d_shader:shader_glsl_dump_program_source order_ps_input(OUT); fixme:d3d_shader:shader_glsl_dump_program_source gl_FogFragCoord = 0.0; fixme:d3d_shader:shader_glsl_dump_program_source gl_Position.y = gl_Position.y * posFixup.y; fixme:d3d_shader:shader_glsl_dump_program_source gl_Position.xy += posFixup.zw * gl_Position.ww; fixme:d3d_shader:shader_glsl_dump_program_source gl_Position.z = gl_Position.z * 2.0 - gl_Position.w; fixme:d3d_shader:shader_glsl_dump_program_source } fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:shader_glsl_dump_program_source Object 34: fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_SUBTYPE_ARB: GL_FRAGMENT_SHADER_ARB. fixme:d3d_shader:shader_glsl_dump_program_source GL_OBJECT_COMPILE_STATUS_ARB: 1. fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:shader_glsl_dump_program_source #version 120 fixme:d3d_shader:shader_glsl_dump_program_source #extension GL_ARB_shader_texture_lod : enable fixme:d3d_shader:shader_glsl_dump_program_source uniform vec4 PC[224]; fixme:d3d_shader:shader_glsl_dump_program_source uniform sampler2D Psampler0; fixme:d3d_shader:shader_glsl_dump_program_source uniform sampler2D Psampler2; fixme:d3d_shader:shader_glsl_dump_program_source uniform samplerCube Psampler4; fixme:d3d_shader:shader_glsl_dump_program_source varying vec4 IN[8]; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R0; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R1; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R2; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R3; fixme:d3d_shader:shader_glsl_dump_program_source vec4 R4; fixme:d3d_shader:shader_glsl_dump_program_source vec4 tmp0; fixme:d3d_shader:shader_glsl_dump_program_source vec4 tmp1; fixme:d3d_shader:shader_glsl_dump_program_source uniform vec4 PLC5; fixme:d3d_shader:shader_glsl_dump_program_source void main() { fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = (IN[0].wwww); fixme:d3d_shader:shader_glsl_dump_program_source if (any(lessThan(R0.xyzw, vec4(0.0)))) discard; fixme:d3d_shader:shader_glsl_dump_program_source R0.xyzw = (textureCube(Psampler4, IN[4].xyz).xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyz = (IN[2].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyz = ((R1.xyz * PLC5.xxx) + IN[1].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R2.xyzw = (texture2D(Psampler0, IN[0].xy).xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyzw = (PC[0].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyzw = (-R3.xyzw + PC[1].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R4.xyzw = (texture2D(Psampler2, IN[0].xy).xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyzw = ((R4.zzzz * R3.xyzw) + PC[0].xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R2.xyzw = (R2.xyzw * R3.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source R3.xyz = (R4.yyy * IN[3].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyz = ((R1.xyz * R2.xyz) + R3.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = ((R0.xyz * R4.yyy) + R1.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R2.xyz = ((PC[2].xyz * R4.www) + R0.xyz); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (R4.x + IN[0].z); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = (R0.x + PLC5.y); fixme:d3d_shader:shader_glsl_dump_program_source R0.x = clamp(R0.x, 0.0, 1.0); fixme:d3d_shader:shader_glsl_dump_program_source R1.w = (PLC5.z); fixme:d3d_shader:shader_glsl_dump_program_source R0.y = (1.0 / PC[4].x); fixme:d3d_shader:shader_glsl_dump_program_source R3.x = (R0.y == 0.0 ? 1.0 : pow(abs(R0.x), R0.y)); fixme:d3d_shader:shader_glsl_dump_program_source R4.x = (PC[4].x); fixme:d3d_shader:shader_glsl_dump_program_source R0.xyz = ((R0.xxx * R4.xxx) + PC[3].xyz); fixme:d3d_shader:shader_glsl_dump_program_source R1.xyz = (R3.xxx * R0.xyz); fixme:d3d_shader:shader_glsl_dump_program_source gl_FragData[0].xyzw = (R2.xyzw + R1.xyzw); fixme:d3d_shader:shader_glsl_dump_program_source } fixme:d3d_shader:shader_glsl_dump_program_source fixme:d3d_shader:print_glsl_info_log Info log received from GLSL shader #31: fixme:d3d_shader:print_glsl_info_log error: linking with uncompiled shader Mesa: User error: GL_INVALID_OPERATION in glGetUniformfv(program) err:d3d_shader:set_glsl_shader_program >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from Find glsl program uniform locations @ glsl_shader.c / 4440 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:set_glsl_shader_program >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB(programId) @ glsl_shader.c / 4453 Mesa: User error: GL_INVALID_OPERATION in glGetUniformfv(program) err:d3d_shader:hardcode_local_constants >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from Hardcoding local constants @ glsl_shader.c / 3965 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL IN[4], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0] DCL CONST[4..7] DCL TEMP[0..4] IMM FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: MAD TEMP[0].xyz, IN[2].xyzz, CONST[0].xxxx, IN[1].xyzz 1: ADD TEMP[1], -CONST[7], CONST[5] 2: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D 3: MAD TEMP[1], TEMP[2].xxxx, TEMP[1], CONST[7] 4: TEX TEMP[3], IN[0].xyyy, SAMP[2], 2D 5: ADD TEMP[4], IMM[0].xxxx, -TEMP[2].zzzz 6: MUL TEMP[4], CONST[4], TEMP[4] 7: MAD TEMP[4], TEMP[1], TEMP[2].zzzz, TEMP[4] 8: MUL TEMP[3], TEMP[3], TEMP[4] 9: MUL TEMP[1].xyz, TEMP[2].yyyy, IN[3].xyzz 10: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xyzz, TEMP[1].xyzz 11: MOV OUT[0].w, TEMP[3].wwww 12: TEX TEMP[1].xyz, IN[4].xyzz, SAMP[0], CUBE 13: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].yyyy, TEMP[0].xyzz 14: MAD OUT[0].xyz, CONST[6].xyzz, TEMP[2].wwww, TEMP[0].xyzz 15: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV_SAT output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV_SAT output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV_SAT output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xyyy, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xyyy, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyyy, input[3].xyzz; 10: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[1].xyzz; 11: MOV_SAT output[0].w, temp[3].wwww; 12: TEX temp[1].xyz, input[4].xyzz, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].yyyy, temp[0].xyzz; 14: MAD_SAT output[0].xyz, const[6].xyzz, temp[2].wwww, temp[0].xyzz; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: ADD temp[1], -const[7], const[5]; 2: TEX temp[2], input[0].xy__, 2D[1]; 3: MAD temp[1], temp[2].xxxx, temp[1], const[7]; 4: TEX temp[3], input[0].xy__, 2D[2]; 5: ADD temp[4], temp[0].1111, -temp[2].zzzz; 6: MUL temp[4], const[4], temp[4]; 7: MAD temp[4], temp[1], temp[2].zzzz, temp[4]; 8: MUL temp[3], temp[3], temp[4]; 9: MUL temp[1].xyz, temp[2].yyy_, input[3].xyz_; 10: MAD temp[0].xyz, temp[0].xyz_, temp[3].xyz_, temp[1].xyz_; 11: MOV_SAT output[0].w, temp[3].___w; 12: TEX temp[1].xyz, input[4].xyz_, CUBE[0]; 13: MAD temp[0].xyz, temp[1].xyz_, temp[2].yyy_, temp[0].xyz_; 14: MAD_SAT output[0].xyz, const[6].xyz_, temp[2].www_, temp[0].xyz_; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: ADD temp[6], -const[7], const[5]; 2: TEX temp[7], input[0].xy__, 2D[1]; 3: MAD temp[8], temp[7].xxxx, temp[6], const[7]; 4: TEX temp[9], input[0].xy__, 2D[2]; 5: ADD temp[10], temp[0].1111, -temp[7].zzzz; 6: MUL temp[11], const[4], temp[10]; 7: MAD temp[12], temp[8], temp[7].zzzz, temp[11]; 8: MUL temp[13], temp[9], temp[12]; 9: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_; 10: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_; 11: MOV_SAT output[0].w, temp[13].___w; 12: TEX temp[16].xyz, input[4].xyz_, CUBE[0]; 13: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_; 14: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7]; 3: TEX temp[9], input[0].xy__, 2D[2]; 4: MUL temp[11], const[4], (1 - temp[7]).zzzz; 5: MAD temp[12], temp[8], temp[7].zzzz, temp[11]; 6: MUL temp[13], temp[9], temp[12]; 7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_; 8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_; 9: MOV_SAT output[0].w, temp[13].___w; 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0]; 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_; 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7]; 3: TEX temp[9], input[0].xy__, 2D[2]; 4: MUL temp[11], const[4], (1 - temp[7]).zzzz; 5: MAD temp[12], temp[8], temp[7].zzzz, temp[11]; 6: MUL temp[13], temp[9], temp[12]; 7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_; 8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_; 9: MOV_SAT output[0].w, temp[13].___w; 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0]; 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_; 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[5].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: MAD temp[8], temp[7].xxxx, (const[5] - const[7]), const[7]; 3: TEX temp[9], input[0].xy__, 2D[2]; 4: MUL temp[11], const[4], (1 - temp[7]).zzzz; 5: MAD temp[12], temp[8], temp[7].zzzz, temp[11]; 6: MUL temp[13], temp[9], temp[12]; 7: MUL temp[14].xyz, temp[7].yyy_, input[3].xyz_; 8: MAD temp[15].xyz, temp[5].xyz_, temp[13].xyz_, temp[14].xyz_; 9: MOV_SAT output[0].w, temp[13].___w; 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0]; 11: MAD temp[17].xyz, temp[16].xyz_, temp[7].yyy_, temp[15].xyz_; 12: MAD_SAT output[0].xyz, const[6].xyz_, temp[7].www_, temp[17].xyz_; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 1: TEX temp[7], input[0].xy__, 2D[1]; 2: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0) MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz MAD temp[8].w, src2.x, srcp.w, src0.w 3: TEX temp[9], input[0].xy__, 2D[2]; 4: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000 MAD temp[11].w, src0.w, srcp.z, src0.0 5: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11] MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[12].w, src0.w, src1.z, src1.w 6: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12] MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[13].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[7], src1.xyz = input[3] MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000 8: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14] MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz 9: src0.w = temp[13] MAD_SAT color[0].w, src0.w, src0.1, src0.0 10: TEX temp[16].xyz, input[4].xyz_, CUBE[0]; 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15] MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17] MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[9], input[0].xy__, 2D[2]; 3: TEX temp[16].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[7], src1.xyz = input[3] SEM_WAIT MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000 6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0) MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz MAD temp[8].w, src2.x, srcp.w, src0.w 7: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000 MAD temp[11].w, src0.w, srcp.z, src0.0 8: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11] MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[12].w, src0.w, src1.z, src1.w 9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12] MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[13].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14] MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15] MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17], src1.w = temp[13] MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz MAD_SAT color[0].w, src1.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[7], input[0].xy__, 2D[1]; 2: TEX temp[9], input[0].xy__, 2D[2]; 3: TEX temp[16].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[7], src1.xyz = input[3] SEM_WAIT MAD temp[14].xyz, src0.yyy, src1.xyz, src0.000 6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[7], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0) MAD temp[8].xyz, src2.xxx, srcp.xyz, src0.xyz MAD temp[8].w, src2.x, srcp.w, src0.w 7: src0.xyz = temp[7], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.zzz, src0.000 MAD temp[11].w, src0.w, srcp.z, src0.0 8: src0.xyz = temp[8], src0.w = temp[8], src1.xyz = temp[7], src1.w = temp[11], src2.xyz = temp[11] MAD temp[12].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[12].w, src0.w, src1.z, src1.w 9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = temp[12], src1.w = temp[12] MAD temp[13].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[13].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[5], src1.xyz = temp[13], src2.xyz = temp[14] MAD temp[15].xyz, src0.xyz, src1.xyz, src2.xyz 11: src0.xyz = temp[16], src1.xyz = temp[7], src2.xyz = temp[15] MAD temp[17].xyz, src0.xyz, src1.yyy, src2.xyz 12: src0.xyz = const[6], src0.w = temp[7], src1.xyz = temp[17], src1.w = temp[13] MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz MAD_SAT color[0].w, src1.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[0].xy__, 2D[1]; 2: TEX temp[0], input[0].xy__, 2D[2]; 3: TEX temp[4].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[5], src1.xyz = input[3] SEM_WAIT MAD temp[2].xyz, src0.yyy, src1.xyz, src0.000 6: src0.xyz = const[7], src0.w = const[7], src1.xyz = const[5], src1.w = const[5], src2.xyz = temp[5], srcp.xyz = (src1 - src0), srcp.w = (src1 - src0) MAD temp[3].xyz, src2.xxx, srcp.xyz, src0.xyz MAD temp[1].w, src2.x, srcp.w, src0.w 7: src0.xyz = temp[5], src0.w = const[4], src1.xyz = const[4], srcp.xyz = (1 - src0) MAD temp[6].xyz, src1.xyz, srcp.zzz, src0.000 MAD temp[2].w, src0.w, srcp.z, src0.0 8: src0.xyz = temp[3], src0.w = temp[1], src1.xyz = temp[5], src1.w = temp[2], src2.xyz = temp[6] MAD temp[3].xyz, src0.xyz, src1.zzz, src2.xyz MAD temp[1].w, src0.w, src1.z, src1.w 9: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[3], src1.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[1], src1.xyz = temp[0], src2.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz 11: src0.xyz = temp[4], src1.xyz = temp[5], src2.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src1.yyy, src2.xyz 12: src0.xyz = const[6], src0.w = temp[5], src1.xyz = temp[0], src1.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.www, src1.xyz MAD_SAT color[0].w, src1.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe405f400: src: 0 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00420000: id: 2 op:LD, , 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 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe404e404: src: 4 R/G/B/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00140002:Addr0: 2t, Addr1: 0c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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 4 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08000c05:Addr0: 5t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x40541507:Addr0: 7c, Addr1: 5c, Addr2: 5t, srcp:1 2:ALPHA_ADDR 0x48041507:Addr0: 7c, Addr1: 5c, Addr2: 128t, srcp:1 3 RGB_INST: 0x00446002:rgb_A_src:2 R/R/R 0 rgb_B_src:3 R/G/B 0 targ: 0 4 ALPHA_INST:0x00782010:MAD dest:1 alp_A_src:2 R 0 alp_B_src:3 A 0 targ 0 w:0 5 RGBA_INST: 0x18220030:MAD dest:3 rgb_C_src:0 R/G/B 0 alp_C_src:0 A 0 6 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0xc8041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00496221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 B/B/B 0 targ: 0 4 ALPHA_INST:0x0058c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:3 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 7 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00601403:Addr0: 3t, Addr1: 5t, Addr2: 6t, srcp:0 2:ALPHA_ADDR 0x08000801:Addr0: 1t, Addr1: 2t, Addr2: 128t, 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:0x0048c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 B 0 targ 0 w:0 5 RGBA_INST: 0x1a222030:MAD dest:3 rgb_C_src:2 R/G/B 0 alp_C_src:1 A 0 8 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, 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 9 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00200001:Addr0: 1t, Addr1: 0t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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 10 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00001404:Addr0: 4t, Addr1: 5t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 11 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08000106:Addr0: 6c, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x006d8220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 A/A/A 0 targ: 0 4 ALPHA_INST:0x00c0d000:MAD dest:0 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL IN[2], GENERIC[14], PERSPECTIVE DCL IN[3], GENERIC[15], PERSPECTIVE DCL IN[4], GENERIC[16], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0] DCL CONST[4] DCL TEMP[0..3] 0: MAD TEMP[0].xyz, IN[2].xyzz, CONST[0].xxxx, IN[1].xyzz 1: TEX TEMP[1].y, IN[0].xyyy, SAMP[1], 2D 2: MUL TEMP[2].xyz, TEMP[1].yyyy, IN[3].xyzz 3: TEX TEMP[3], IN[0].xyyy, SAMP[2], 2D 4: MUL TEMP[3], TEMP[3], CONST[4] 5: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[3].xyzz, TEMP[2].xyzz 6: MOV OUT[0].w, TEMP[3].wwww 7: TEX TEMP[2].xyz, IN[4].xyzz, SAMP[0], CUBE 8: MAD OUT[0].xyz, TEMP[2].xyzz, TEMP[1].yyyy, TEMP[0].xyzz 9: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV_SAT output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV_SAT output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV_SAT output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyzz, const[0].xxxx, input[1].xyzz; 1: TEX temp[1].y, input[0].xyyy, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyyy, input[3].xyzz; 3: TEX temp[3], input[0].xyyy, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyzz, temp[3].xyzz, temp[2].xyzz; 6: MOV_SAT output[0].w, temp[3].wwww; 7: TEX temp[2].xyz, input[4].xyzz, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[2].xyzz, temp[1].yyyy, temp[0].xyzz; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[1].y, input[0].xy__, 2D[1]; 2: MUL temp[2].xyz, temp[1].yyy_, input[3].xyz_; 3: TEX temp[3], input[0].xy__, 2D[2]; 4: MUL temp[3], temp[3], const[4]; 5: MAD temp[0].xyz, temp[0].xyz_, temp[3].xyz_, temp[2].xyz_; 6: MOV_SAT output[0].w, temp[3].___w; 7: TEX temp[2].xyz, input[4].xyz_, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[2].xyz_, temp[1].yyy_, temp[0].xyz_; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_; 3: TEX temp[7], input[0].xy__, 2D[2]; 4: MUL temp[8], temp[7], const[4]; 5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_; 6: MOV_SAT output[0].w, temp[8].___w; 7: TEX temp[10].xyz, input[4].xyz_, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_; 3: TEX temp[7], input[0].xy__, 2D[2]; 4: MUL temp[8], temp[7], const[4]; 5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_; 6: MOV_SAT output[0].w, temp[8].___w; 7: TEX temp[10].xyz, input[4].xyz_, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_; 3: TEX temp[7], input[0].xy__, 2D[2]; 4: MUL temp[8], temp[7], const[4]; 5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_; 6: MOV_SAT output[0].w, temp[8].___w; 7: TEX temp[10].xyz, input[4].xyz_, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[4].xyz, input[2].xyz_, const[0].xxx_, input[1].xyz_; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: MUL temp[6].xyz, temp[5].yyy_, input[3].xyz_; 3: TEX temp[7], input[0].xy__, 2D[2]; 4: MUL temp[8], temp[7], const[4]; 5: MAD temp[9].xyz, temp[4].xyz_, temp[8].xyz_, temp[6].xyz_; 6: MOV_SAT output[0].w, temp[8].___w; 7: TEX temp[10].xyz, input[4].xyz_, CUBE[0]; 8: MAD_SAT output[0].xyz, temp[10].xyz_, temp[5].yyy_, temp[9].xyz_; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: src0.xyz = temp[5], src1.xyz = input[3] MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000 3: TEX temp[7], input[0].xy__, 2D[2]; 4: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 5: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6] MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz 6: src0.w = temp[8] MAD_SAT color[0].w, src0.w, src0.1, src0.0 7: TEX temp[10].xyz, input[4].xyz_, CUBE[0]; 8: src0.xyz = temp[10], src1.xyz = temp[5], src2.xyz = temp[9] MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: TEX temp[7], input[0].xy__, 2D[2]; 3: TEX temp[10].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 6: src0.xyz = temp[5], src1.xyz = input[3] MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000 7: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6] MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz 8: src0.xyz = temp[10], src0.w = temp[8], src1.xyz = temp[5], src2.xyz = temp[9] MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5].y, input[0].xy__, 2D[1]; 2: TEX temp[7], input[0].xy__, 2D[2]; 3: TEX temp[10].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[4].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 6: src0.xyz = temp[5], src1.xyz = input[3] MAD temp[6].xyz, src0.yyy, src1.xyz, src0.000 7: src0.xyz = temp[4], src1.xyz = temp[8], src2.xyz = temp[6] MAD temp[9].xyz, src0.xyz, src1.xyz, src2.xyz 8: src0.xyz = temp[10], src0.w = temp[8], src1.xyz = temp[5], src2.xyz = temp[9] MAD_SAT color[0].xyz, src0.xyz, src1.yyy, src2.xyz MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0].z, input[0].xy__, 2D[1]; 2: TEX temp[5], input[0].xy__, 2D[2]; 3: TEX temp[4].xyz, input[4].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 4: src0.xyz = input[2], src1.xyz = const[0], src2.xyz = input[1] MAD temp[1].xyz, src0.xyz, src1.xxx, src2.xyz 5: src0.xyz = temp[5], src0.w = temp[5], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 6: src0.xyz = temp[0], src1.xyz = input[3] MAD temp[3].xyz, src0.zzz, src1.xyz, src0.000 7: src0.xyz = temp[1], src1.xyz = temp[2], src2.xyz = temp[3] MAD temp[1].xyz, src0.xyz, src1.xyz, src2.xyz 8: src0.xyz = temp[4], src0.w = temp[0], src1.xyz = temp[0], src2.xyz = temp[1] MAD_SAT color[0].xyz, src0.xyz, src1.zzz, src2.xyz MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00002003:TEX wmask: B omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xd400f400: src: 0 R/G/A/A dst: 0 R/G/G/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00420000: id: 2 op:LD, , SCALED 2:TEX_ADDR: 0xe405f400: src: 0 R/G/A/A dst: 5 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe404e404: src: 4 R/G/B/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00140002:Addr0: 2t, Addr1: 0c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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 4 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08041005:Addr0: 5t, Addr1: 4c, Addr2: 128t, 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: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 5 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00300801:Addr0: 1t, Addr1: 2t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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 7 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x00100004:Addr0: 4t, Addr1: 0t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 fixme:d3d:resource_check_usage Unhandled usage flags 0x8. r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3..5] DCL TEMP[0..2] 0: MAD TEMP[0].x, CONST[5].xxxx, CONST[3].xxxx, IN[1].xxxx 1: FRC TEMP[1].x, TEMP[0].xxxx 2: ADD TEMP[1].x, TEMP[1].xxxx, IN[0].yyyy 3: MOV TEMP[0].y, TEMP[1].xxxx 4: MOV TEMP[0].x, IN[0].xxxx 5: TEX TEMP[1], TEMP[0].xyyy, SAMP[0], 2D 6: TEX TEMP[2], IN[0].xyyy, SAMP[1], 2D 7: MUL TEMP[2], TEMP[2], CONST[4] 8: MUL TEMP[0], TEMP[1], TEMP[2] 9: MUL TEMP[0], TEMP[0], IN[1].yyyy 10: MUL OUT[0], TEMP[0], CONST[0].xxxx 11: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0].x, const[5].xxxx, const[3].xxxx, input[1].xxxx; 1: FRC temp[1].x, temp[0].xxxx; 2: ADD temp[1].x, temp[1].xxxx, input[0].yyyy; 3: MOV temp[0].y, temp[1].xxxx; 4: MOV temp[0].x, input[0].xxxx; 5: TEX temp[1], temp[0].xyyy, 2D[0]; 6: TEX temp[2], input[0].xyyy, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0].x, const[5].x___, const[3].x___, input[1].x___; 1: FRC temp[1].x, temp[0].x___; 2: ADD temp[1].x, temp[1].x___, input[0].y___; 3: MOV temp[0].y, temp[1]._x__; 4: MOV temp[0].x, input[0].x___; 5: TEX temp[1], temp[0].xy__, 2D[0]; 6: TEX temp[2], input[0].xy__, 2D[1]; 7: MUL temp[2], temp[2], const[4]; 8: MUL temp[0], temp[1], temp[2]; 9: MUL temp[0], temp[0], input[1].yyyy; 10: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___; 1: FRC temp[4].x, temp[3].x___; 2: ADD temp[5].x, temp[4].x___, input[0].y___; 3: MOV temp[0].y, temp[5]._x__; 4: MOV temp[0].x, input[0].x___; 5: TEX temp[6], temp[0].xy__, 2D[0]; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: MUL temp[8], temp[7], const[4]; 8: MUL temp[9], temp[6], temp[8]; 9: MUL temp[10], temp[9], input[1].yyyy; 10: MUL_SAT output[0], temp[10], const[0].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___; 1: FRC temp[4].x, temp[3].x___; 2: ADD temp[5].x, temp[4].x___, input[0].y___; 3: MOV temp[0].y, temp[5]._x__; 4: MOV temp[0].x, input[0].x___; 5: TEX temp[6], temp[0].xy__, 2D[0]; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: MUL temp[8], temp[7], const[4]; 8: MUL temp[9], temp[6], temp[8]; 9: MUL temp[10], temp[9], input[1].yyyy; 10: MUL_SAT output[0], temp[10], const[0].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___; 1: FRC temp[4].x, temp[3].x___; 2: ADD temp[5].x, temp[4].x___, input[0].y___; 3: MOV temp[0].y, temp[5]._x__; 4: MOV temp[0].x, input[0].x___; 5: TEX temp[6], temp[0].xy__, 2D[0]; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: MUL temp[8], temp[7], const[4]; 8: MUL temp[9], temp[6], temp[8]; 9: MUL temp[10], temp[9], input[1].yyyy; 10: MUL_SAT output[0], temp[10], const[0].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[3].x, const[5].x___, const[3].x___, input[1].x___; 1: FRC temp[4].x, temp[3].x___; 2: ADD temp[5].x, temp[4].x___, input[0].y___; 3: MOV temp[0].y, temp[5]._x__; 4: MOV temp[0].x, input[0].x___; 5: TEX temp[6], temp[0].xy__, 2D[0]; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: MUL temp[8], temp[7], const[4]; 8: MUL temp[9], temp[6], temp[8]; 9: MUL temp[10], temp[9], input[1].yyyy; 10: MUL_SAT output[0], temp[10], const[0].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1] MAD temp[3].x, src0.x__, src1.x__, src2.x__ 1: src0.xyz = temp[3] FRC temp[4].x, src0.x__ 2: src0.xyz = temp[4], src1.xyz = input[0] MAD temp[5].x, src0.x__, src0.111, src1.y__ 3: src0.xyz = temp[5] MAD temp[0].y, src0._x_, src0.111, src0.000 4: src0.xyz = input[0] MAD temp[0].x, src0.x__, src0.111, src0.000 5: TEX temp[6], temp[0].xy__, 2D[0]; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 8: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8] MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[9].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1] MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000 MAD temp[10].w, src0.w, src1.y, src0.0 10: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0] MAD temp[0].x, src0.x__, src0.111, src0.000 1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1] MAD temp[3].w, src0.x, src1.x, src2.x 2: src0.xyz = temp[3], src0.w = temp[3] FRC temp[4].x, src0.w__ 3: src0.xyz = temp[4], src1.xyz = input[0] MAD temp[5].x, src0.x__, src0.111, src1.y__ 4: src0.xyz = temp[5] MAD temp[0].y, src0._x_, src0.111, src0.000 5: BEGIN_TEX; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: TEX temp[6], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8] MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[9].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1] MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000 MAD temp[10].w, src0.w, src1.y, src0.0 11: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0] MAD temp[0].x, src0.x__, src0.111, src0.000 1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1] MAD temp[3].w, src0.x, src1.x, src2.x 2: src0.w = temp[3] FRC temp[4].x, src0.w__ 3: src0.xyz = temp[4], src1.xyz = input[0] MAD temp[5].x, src0.x__, src0.111, src1.y__ 4: src0.xyz = temp[5] MAD temp[0].y, src0._x_, src0.111, src0.000 5: BEGIN_TEX; 6: TEX temp[7], input[0].xy__, 2D[1]; 7: TEX temp[6], temp[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[8].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[8].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[8] MAD temp[9].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[9].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[9], src0.w = temp[9], src1.xyz = input[1] MAD temp[10].xyz, src0.xyz, src1.yyy, src0.000 MAD temp[10].w, src0.w, src1.y, src0.0 11: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0] MAD temp[2].x, src0.x__, src0.11_, src0.00_ 1: src0.xyz = const[5], src1.xyz = const[3], src2.xyz = input[1] MAD temp[0].w, src0.x, src1.x, src2.x 2: src0.w = temp[0] FRC temp[0].z, src0.__w 3: src0.xyz = temp[0], src1.xyz = input[0] MAD temp[0].z, src0.__z, src0.__1, src1.__y 4: src0.xyz = temp[0] MAD temp[2].y, src0._z_, src0.11_, src0.00_ 5: BEGIN_TEX; 6: TEX temp[0], input[0].xy__, 2D[1]; 7: TEX temp[2], temp[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 8: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 9: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = temp[0], src1.w = temp[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 10: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = input[1] MAD temp[0].xyz, src0.xyz, src1.yyy, src0.000 MAD temp[0].w, src0.w, src1.y, src0.0 11: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 1/1/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 1 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x00140d05:Addr0: 5c, Addr1: 3c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00080000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:1 R 0 targ 0 w:0 5 RGBA_INST: 0x04000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:2 R 0 2 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000390:rgb_A_src:0 0/0/A 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: 0x00000009:FRC dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08000000:Addr0: 0t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20290:rgb_A_src:0 0/0/B 0 rgb_B_src:0 0/0/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: 0x00191000:MAD dest:0 rgb_C_src:1 0/0/G 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0450:rgb_A_src:0 0/B/0 0 rgb_B_src:0 1/1/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 5 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 6 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 7 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, 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 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, 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 9 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000400:Addr0: 0t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 10 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08040000:Addr0: 0t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0] 0: TEX TEMP[0], IN[1].xyyy, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], IN[0] 2: MUL OUT[0], TEMP[0], CONST[0].xxxx 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL output[0], temp[0], const[0].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MUL temp[0], temp[0], input[0]; 2: MUL_SAT output[0], temp[0], const[0].xxxx; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[1], input[1].xy__, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MUL_SAT output[0], temp[2], const[0].xxxx; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[1], input[1].xy__, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MUL_SAT output[0], temp[2], const[0].xxxx; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[1], input[1].xy__, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MUL_SAT output[0], temp[2], const[0].xxxx; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[1], input[1].xy__, 2D[0]; 1: MUL temp[2], temp[1], input[0]; 2: MUL_SAT output[0], temp[2], const[0].xxxx; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[1], input[1].xy__, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 2: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xxx, src0.000 MAD_SAT color[0].w, src0.w, src1.x, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, 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 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, 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 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08040000:Addr0: 0t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, 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:0x0008c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 R 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 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL IN[1], GENERIC[13], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[0] DCL CONST[3] DCL TEMP[0..1] 0: TEX TEMP[0].xyz, IN[0].xyyy, SAMP[1], 2D 1: MUL TEMP[0].xyz, TEMP[0].xyzz, CONST[3].xyzz 2: TEX TEMP[1].xyz, IN[1].xyzz, SAMP[0], CUBE 3: ADD TEMP[1].xyz, -TEMP[1].xyzz, CONST[0].xxxx 4: MUL OUT[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 5: MOV OUT[0].w, CONST[0].xxxx 6: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV output[0].w, const[0].xxxx; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV output[0].w, const[0].xxxx; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV output[0].w, const[0].xxxx; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV output[0].w, const[0].xxxx; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV_SAT output[0].w, const[0].xxxx; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV_SAT output[0].w, const[0].xxxx; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV_SAT output[0].w, const[0].xxxx; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xyyy, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyzz, const[3].xyzz; 2: TEX temp[1].xyz, input[1].xyzz, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyzz, const[0].xxxx; 4: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 5: MOV_SAT output[0].w, const[0].xxxx; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0].xyz, input[0].xy__, 2D[1]; 1: MUL temp[0].xyz, temp[0].xyz_, const[3].xyz_; 2: TEX temp[1].xyz, input[1].xyz_, CUBE[0]; 3: ADD temp[1].xyz, -temp[1].xyz_, const[0].xxx_; 4: MUL_SAT output[0].xyz, temp[0].xyz_, temp[1].xyz_; 5: MOV_SAT output[0].w, const[0].___x; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[2].xyz, input[0].xy__, 2D[1]; 1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0]; 3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_; 4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_; 5: MOV_SAT output[0].w, const[0].___x; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[2].xyz, input[0].xy__, 2D[1]; 1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0]; 3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_; 4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_; 5: MOV_SAT output[0].w, const[0].___x; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[2].xyz, input[0].xy__, 2D[1]; 1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0]; 3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_; 4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_; 5: MOV_SAT output[0].w, const[0].___x; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[2].xyz, input[0].xy__, 2D[1]; 1: MUL temp[3].xyz, temp[2].xyz_, const[3].xyz_; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0]; 3: ADD temp[5].xyz, -temp[4].xyz_, const[0].xxx_; 4: MUL_SAT output[0].xyz, temp[3].xyz_, temp[5].xyz_; 5: MOV_SAT output[0].w, const[0].___x; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[2].xyz, input[0].xy__, 2D[1]; 1: src0.xyz = temp[2], src1.xyz = const[3] MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0]; 3: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx 4: src0.xyz = temp[3], src1.xyz = temp[5] MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 5: src0.xyz = const[0] MAD_SAT color[0].w, src0.x, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2].xyz, input[0].xy__, 2D[1]; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[2], src1.xyz = const[3] SEM_WAIT MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 4: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx 5: src0.xyz = temp[3], src1.xyz = temp[5], src2.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src2.x, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2].xyz, input[0].xy__, 2D[1]; 2: TEX temp[4].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[2], src1.xyz = const[3] SEM_WAIT MAD temp[3].xyz, src0.xyz, src1.xyz, src0.000 4: src0.xyz = temp[4], src1.xyz = const[0] MAD temp[5].xyz, -src0.xyz, src0.111, src1.xxx 5: src0.xyz = temp[3], src1.xyz = temp[5], src2.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src2.x, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0].xyz, input[0].xy__, 2D[1]; 2: TEX temp[1].xyz, input[1].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = temp[0], src1.xyz = const[3] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 4: src0.xyz = temp[1], src1.xyz = const[0] MAD temp[1].xyz, -src0.xyz, src0.111, src1.xxx 5: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = const[0] MAD_SAT color[0].xyz, src0.xyz, src1.xyz, src0.000 MAD_SAT color[0].w, src2.x, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00003803:TEX wmask: RGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , 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 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401e401: src: 1 R/G/B/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08040c00:Addr0: 0t, Addr1: 3c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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 3 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0a20:rgb_A_src:0 R/G/B 1 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: 0x00001010:MAD dest:1 rgb_C_src:1 R/R/R 0 alp_C_src:0 R 0 4 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x10000400:Addr0: 0t, Addr1: 1t, Addr2: 0c, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, 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:0x00c02000:MAD dest:0 alp_A_src:2 R 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 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 r300: Initial fragment program FRAG DCL IN[0], GENERIC[12], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL CONST[2] DCL TEMP[0..1] 0: ADD TEMP[0].xyz, CONST[2].xyzz, CONST[2].xyzz 1: TEX TEMP[1].xyz, IN[0].zwww, SAMP[0], 2D 2: MUL OUT[0].xyz, TEMP[0].xyzz, TEMP[1].xyzz 3: TEX TEMP[0].w, IN[0].xyyy, SAMP[1], 2D 4: MOV OUT[0].w, TEMP[0].wwww 5: END Fragment Program: before compilation # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV output[0].w, temp[0].wwww; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV output[0].w, temp[0].wwww; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV output[0].w, temp[0].wwww; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV output[0].w, temp[0].wwww; Fragment Program: after 'saturate output writes' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV_SAT output[0].w, temp[0].wwww; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV_SAT output[0].w, temp[0].wwww; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV_SAT output[0].w, temp[0].wwww; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyzz, const[2].xyzz; 1: TEX temp[1].xyz, input[0].zwww, 2D[0]; 2: MUL_SAT output[0].xyz, temp[0].xyzz, temp[1].xyzz; 3: TEX temp[0].w, input[0].xyyy, 2D[1]; 4: MOV_SAT output[0].w, temp[0].wwww; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: ADD temp[0].xyz, const[2].xyz_, const[2].xyz_; 1: TEX temp[1].xyz, input[0].zw__, 2D[0]; 2: MUL_SAT output[0].xyz, temp[0].xyz_, temp[1].xyz_; 3: TEX temp[0].w, input[0].xy__, 2D[1]; 4: MOV_SAT output[0].w, temp[0].___w; Fragment Program: after 'register rename' # Radeon Compiler Program 0: ADD temp[2].xyz, const[2].xyz_, const[2].xyz_; 1: TEX temp[3].xyz, input[0].zw__, 2D[0]; 2: MUL_SAT output[0].xyz, temp[2].xyz_, temp[3].xyz_; 3: TEX temp[4].w, input[0].xy__, 2D[1]; 4: MOV_SAT output[0].w, temp[4].___w; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3].xyz, input[0].zw__, 2D[0]; 1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_; 2: TEX temp[4].w, input[0].xy__, 2D[1]; 3: MOV_SAT output[0].w, temp[4].___w; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3].xyz, input[0].zw__, 2D[0]; 1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_; 2: TEX temp[4].w, input[0].xy__, 2D[1]; 3: MOV_SAT output[0].w, temp[4].___w; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3].xyz, input[0].zw__, 2D[0]; 1: MUL_SAT output[0].xyz, (const[2] + const[2]).xyz_, temp[3].xyz_; 2: TEX temp[4].w, input[0].xy__, 2D[1]; 3: MOV_SAT output[0].w, temp[4].___w; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3].xyz, input[0].zw__, 2D[0]; 1: src0.xyz = const[2], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0) MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000 2: TEX temp[4].w, input[0].xy__, 2D[1]; 3: src0.w = temp[4] MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3].xyz, input[0].zw__, 2D[0]; 2: TEX temp[4].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = const[2], src0.w = temp[4], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0) SEM_WAIT MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3].xyz, input[0].zw__, 2D[0]; 2: TEX temp[4].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = const[2], src0.w = temp[4], src1.xyz = const[2], src2.xyz = temp[3], srcp.xyz = (src1 + src0) SEM_WAIT MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1].xyz, input[0].zw__, 2D[0]; 2: TEX temp[0].w, input[0].xy__, 2D[1] SEM_WAIT SEM_ACQUIRE; 3: src0.xyz = const[2], src0.w = temp[0], src1.xyz = const[2], src2.xyz = temp[1], srcp.xyz = (src1 + src0) SEM_WAIT MAD_SAT color[0].xyz, srcp.xyz, src2.xyz, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00003803:TEX wmask: RGB omask: NONE 1:TEX_INST: 0x00400000: id: 0 op:LD, , SCALED 2:TEX_ADDR: 0xe401fe00: src: 0 B/A/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x02410000: id: 1 op:LD, ACQ, 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 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x80140902:Addr0: 2c, Addr1: 2c, Addr2: 1t, srcp:2 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00444223:rgb_A_src:3 R/G/B 0 rgb_B_src:2 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 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 Mesa: User error: GL_INVALID_OPERATION in glUseProgram(program 31 not linked) err:d3d_shader:shader_glsl_select >>>>>>>>>>>>>>>>> GL_INVALID_OPERATION (0x502) from glUseProgramObjectARB @ glsl_shader.c / 4618 fixme:imm:NotifyIME NI_CLOSECANDIDATE EVE Client version 7.11 build 306979 starting 14:28:02 Network layer using: CarbonIO Multi-Language System: Client using language [CS] Starting up Trinity through _trinity_deploy.dll ... Registering new 'alignCount' stat Registering new 'flagNextCount' stat Registering new 'CarbonUI/labelLayout' stat EVE Client version 7.11 build 306979 started 14:28:10 Starting services Service settings: 0.004s Service dataconfig: 0.015s Service machoNet: 0.002s Service objectCaching: 0.000s Service addressbook: 0.000s Service clientStatsSvc: 0.000s Service godma: 0.000s Service photo: 0.000s Service mailSvc: 0.000s Service notificationSvc: 0.000s Service LSC: 0.000s Service patch: 0.000s Service inv: 0.000s Service pwn: 0.000s Service focus: 0.000s Service debug: 0.000s Service jumpQueue: 0.000s Service scanSvc: 0.000s Service browserHostManager: 0.000s Service jumpMonitor: 0.000s Service calendar: 0.000s Service liveUpdateSvc: 0.000s Service monitor: 0.000s Service processHealth: 0.000s Service devToolsClient: 0.000s Service invCache: 0.000s Service counter: 0.000s Service michelle: 0.000s Starting services - Done Service device: 2.007s Service sceneManager: 0.001s Service gameui: 0.126s Service cider: 0.000s Service mouseInput: 0.000s Service gameWorldClient: 0.000s Service cameraClient: 0.011s Service cmd: 0.063s Service zactionClient: 0.023s Service actionObjectClientSvc: 0.033s Service contextMenuClient: 0.113s Service navigation: 0.000s Service movementClient: 0.000s Service paperDollClient: 0.015s Service apertureClient: 0.000s Service minigameClient: 0.000s Service collisionMeshClient: 0.000s Service playerComponentClient: 0.000s Service animationClient: 0.000s Service perceptionClient: 0.000s Service proximityTrigger: 0.000s Service position: 0.000s Service boundingVolume: 0.000s Service elevatorClient: 0.000s Service aimingClient: 0.000s Service simpleTestClient: 0.000s Service netStateClient: 0.000s Service selectionClient: 0.000s Service worldSpaceClient: 0.000s Service info: 0.000s Service character: 0.000s Service entityRecipeSvc: 0.000s Service graphicClient: 0.000s Service infoClient: 0.000s Service interiorPlaceableClient: 0.000s Service particleObjectClient: 0.000s Service entityProcSvc: 0.000s Service tutorial: 0.004s Service interiorStaticClient: 0.000s Service decisionTreeClient: 0.000s Service lensFlareClient: 0.000s Service spotLightClient: 0.000s Service holoscreen: 0.000s Service genericProcClient: 0.000s Service LightAnimationComponentManager: 0.000s Service uvPickingClient: 0.000s Service physicalPortalClient: 0.000s Service boxLightClient: 0.000s Service loadedLightClient: 0.000s Service occluderClient: 0.000s Service entitySpawnClient: 0.391s Service proximity: 0.427s Service UIDesktopComponentManager: 0.000s Service bracketClient: 0.000s Service shipHologram: 0.000s Service uipointerSvc: 0.000s Service pointLightClient: 0.000s Service station: 0.000s Service audio: 1.114s Service highlightClient: 0.000s Service journal: 0.000s Service insurance: 0.000s Service window: 0.000s Service form: 0.000s Service entityClient: 1.846s Service gps: 1.760s Service font: 0.002s Service registry: 0.000s Service loading: 0.000s Service log: 0.000s Service ime: 0.001s Service connection: 0.000s Service damage: 0.000s Service logger: 0.002s Service vivox: 0.000s Service ownerprimer: 0.000s Service petition: 0.000s Service ui: 0.000s Service z: 0.000s Service consider: 0.000s Service incursion: 0.000s Service moonScan: 0.000s Service webtools: 0.000s Service war: 0.000s Service jukebox: 0.001s