From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 102905] [R600] Miscompilation of TGSI to VLIW causes artifacts
in Gallium Nine with Crysis2 bump mapping
Date: Wed, 20 Sep 2017 16:39:10 +0000
Message-ID:
Bug ID
102905
Summary
[R600] Miscompilation of TGSI to VLIW causes artifacts in Gal=
lium Nine with Crysis2 bump mapping
Product
Mesa
Version
17.2
Hardware
Other
OS
All
Status
NEW
Severity
normal
Priority
medium
Component
Drivers/Gallium/r600
Assignee
dri-devel@lists.freedesktop.org
Reporter
iive@yahoo.com
QA Contact
dri-devel@lists.freedesktop.org
In short, the miscompilation happens at "cmp" instru=
ction where the destination
register is also one of the source registers.
I suspect that the problem is caused by breaking "cmp" on two ope=
rands that are
executed in different VLIW, thus the result of the first one changes the
outcome of the second. Using a temporal register in "cmp" workaro=
unds the
issue.
The bug is NOT related to Shader Backend. Artifacts are still visible with
"R600_DEBUG=3Dnosb".
A D3D9 apitrace could be obtained from the ixit Nine ftp.
The bug is also tracked at https://github.com/iXit/Mesa-3D/issues/288 .
My hardware is Radeon HD5670 (Evergreen, Redwood).
Not reproducible on Radeon SI.
Bellow are D3D9 Pixel Shader, TGSI and R600 VLIW assembly:
--------------------------------------------------------------
445252 @1 IDirect3DDevice9::CreatePixelShader(this =3D 0xf1e0a290, pFun=
ction =3D "
//
// Generated by Microsoft (R) D3DX9 Shader Compiler
//
// Parameters:
//
// sampler2D BlendMapSampler;
// sampler2D BumpMap2Sampler;
// float4 MatSpecColor;
// float3 __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3;
// sampler2D bumpMapSampler;
// sampler2D normalsSampler2D;
//
//
// Registers:
//
// Name Reg Size
// -------------------------------------------------- ----- ----
// MatSpecColor c13 1
// __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3 c20 1
// bumpMapSampler s1 1
// normalsSampler2D s2 1
// BumpMap2Sampler s3 1
// BlendMapSampler s4 1
//
ps_3_0
def c0, 2, -1, 1, 0.5
def c1, 0.00392156886, 0, 0, 0
dcl_texcoord_centroid v0.x
dcl_texcoord1 v1.xy
dcl_texcoord2_pp v2
dcl_texcoord3_pp v3.xyz
dcl_texcoord4 v4.xyz
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_2d s4
mov r0.x, c1.x
mul_pp oC1.w, r0.x, c13.w
texld_pp r0, v4, s4
mul_pp r0.x, r0.x, v4.z
pow_sat_pp r1.x, r0.x, c20.z
texld_pp r0, v1, s1
mad_pp r0.xy, r0, c0.x, c0.y
dp2add_sat_pp r0.w, r0, -r0, c0.z
rsq_pp r0.w, r0.w
rcp_pp r0.z, r0.w
texld_pp r2, v1, s3
mad_pp r1.yz, r2.xxyw, c0.x, c0.y
dp2add_sat_pp r0.w, r1.yzzw, -r1.yzzw, c0.z
rsq_pp r0.w, r0.w
rcp_pp r1.w, r0.w
lrp_pp r2.xyz, r1.x, r1.yzww, r0
mul_pp r0.xyz, r2.y, v3
mad_pp r0.xyz, r2.x, v2, r0
mov_pp r1.xyz, v2
mul_pp r2.xyw, r1.zxzy, v3.yzzx
mad_pp r1.xyz, r1.yzxw, v3.zxyw, -r2.xyww
mul_pp r1.xyz, r1, v2.w
mad_pp r0.xyz, r2.z, r1, r0
mad_pp r0.xyz, r0, c0.w, c0.w
mad_pp r0.xyz, r0, c0.x, c0.y
nrm_pp r1.xyz, r0
max_pp r0.x, r1_abs.x, r1_abs.y
max_pp r2.x, r1_abs.z, r0.x
add r0.xy, r1_abs.zyzw, -r2.x
rcp r0.z, r2.x
cmp_pp r0.yw, r0.y, r1_abs.xxzz, r1_abs.xyzz
cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw //<=3D=3D=3D=3D=3D this one
mul_pp r1.xyz, r1, r0.z
add r0.z, -r0.y, r0.x
cmp r0.xy, r0.z, r0, r0.yxzw
rcp r1.w, r0.x
mul r0.z, r0.y, r1.w
mov r0.w, c1.y
texldl r0, r0.xzww, s2
mul_pp r0.xyz, r1, r0.w
mad_pp oC1.xyz, r0, c0.w, c0.w
mov_pp oC0, v0.x
// approximately 49 instruction slots used (5 texture, 44 arithmetic)
", ppShader =3D [0xbca9a080]) =3D D3D_OK
--------------------------------------------------------------
Making the following change in the above code:
---
- cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw //<=3D=3D=3D=3D=3D this one
+ mov r8, r0
+ cmp_pp r0.xy, r8.x, r1_abs, r0.ywzw
---
workarounds the issue.
Alternative workaround is using different destination register, it just nee=
ds
more changes in the follow up instructions.
With NINE_DEBUG=3Dps R600_DEBUG=3Dps the buggy shader looks like this:
--------------------------------------------------------------
FRAG
PROPERTY FS_COORD_ORIGIN UPPER_LEFT
PROPERTY MUL_ZERO_WINS 1
DCL IN[0], GENERIC[0], PERSPECTIVE, CENTROID
DCL IN[1], GENERIC[1], PERSPECTIVE
DCL IN[2], GENERIC[2], PERSPECTIVE
DCL IN[3], GENERIC[3], PERSPECTIVE
DCL IN[4], GENERIC[4], PERSPECTIVE
DCL OUT[0], COLOR[1]
DCL OUT[1], COLOR
DCL SAMP[1]
DCL SAMP[2]
DCL SAMP[3]
DCL SAMP[4]
DCL CONST[0..20]
DCL TEMP[0..1]
DCL TEMP[2], LOCAL
DCL TEMP[3]
IMM[0] FLT32 { 2.0000, -1.0000, 1.0000, 0.5000}
IMM[1] FLT32 { 0.0039, 0.0000,
340282346638528859811704183484516925440.0000, 0.0000}
0: MOV TEMP[0].x, IMM[1].xxxx
1: MUL OUT[0].w, TEMP[0].xxxx, CONST[13].wwww
2: TEX TEMP[0], IN[4], SAMP[4], 2D
3: MUL TEMP[0].x, TEMP[0].xxxx, IN[4].zzzz
4: POW_SAT TEMP[1].x, |TEMP[0].xxxx|, CONST[20].zzzz
5: TEX TEMP[0], IN[1], SAMP[1], 2D
6: MAD TEMP[0].xy, TEMP[0], IMM[0].xxxx, IMM[0].yyyy
7: DP2 TEMP[2].x, TEMP[0], -TEMP[0]
8: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx
9: RSQ TEMP[2], |TEMP[0].wwww|
10: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2]
11: RCP TEMP[0].z, TEMP[0].wwww
12: TEX TEMP[3], IN[1], SAMP[3], 2D
13: MAD TEMP[1].yz, TEMP[3].xxyw, IMM[0].xxxx, IMM[0].yyyy
14: DP2 TEMP[2].x, TEMP[1].yzzw, -TEMP[1].yzzw
15: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx
16: RSQ TEMP[2], |TEMP[0].wwww|
17: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2]
18: RCP TEMP[1].w, TEMP[0].wwww
19: LRP TEMP[3].xyz, TEMP[1].xxxx, TEMP[1].yzww, TEMP[0]
20: MUL TEMP[0].xyz, TEMP[3].yyyy, IN[3]
21: MAD TEMP[0].xyz, TEMP[3].xxxx, IN[2], TEMP[0]
22: MOV TEMP[1].xyz, IN[2]
23: MUL TEMP[3].xyw, TEMP[1].zxzy, IN[3].yzzx
24: MAD TEMP[1].xyz, TEMP[1].yzxw, IN[3].zxyw, -TEMP[3].xyww
25: MUL TEMP[1].xyz, TEMP[1], IN[2].wwww
26: MAD TEMP[0].xyz, TEMP[3].zzzz, TEMP[1], TEMP[0]
27: MAD TEMP[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww
28: MAD TEMP[0].xyz, TEMP[0], IMM[0].xxxx, IMM[0].yyyy
29: DP3 TEMP[2].x, TEMP[0], TEMP[0]
30: RSQ TEMP[2].x, TEMP[2].xxxx
31: MIN TEMP[2].x, IMM[1].zzzz, TEMP[2].xxxx
32: MUL TEMP[1].xyz, TEMP[0], TEMP[2].xxxx
33: MAX TEMP[0].x, |TEMP[1].xxxx|, |TEMP[1].yyyy|
34: MAX TEMP[3].x, |TEMP[1].zzzz|, TEMP[0].xxxx
35: ADD TEMP[0].xy, |TEMP[1].zyzw|, -TEMP[3].xxxx
36: RCP TEMP[0].z, TEMP[3].xxxx
37: CMP TEMP[0].yw, TEMP[0].yyyy, |TEMP[1].xyzz|, |TEMP[1].xxzz|
38: CMP TEMP[0].xy, TEMP[0].xxxx, TEMP[0].ywzw, |TEMP[1]|
39: MUL TEMP[1].xyz, TEMP[1], TEMP[0].zzzz
40: ADD TEMP[0].z, -TEMP[0].yyyy, TEMP[0].xxxx
41: CMP TEMP[0].xy, TEMP[0].zzzz, TEMP[0].yxzw, TEMP[0]
42: RCP TEMP[1].w, TEMP[0].xxxx
43: MUL TEMP[0].z, TEMP[0].yyyy, TEMP[1].wwww
44: MOV TEMP[0].w, IMM[1].yyyy
45: TXL TEMP[0], TEMP[0].xzww, SAMP[2], 2D
46: MUL TEMP[0].xyz, TEMP[1], TEMP[0].wwww
47: MAD OUT[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww
48: MOV OUT[1], IN[0].xxxx
49: END
=3D=3D=3D=3D=3D SHADER #81 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D PS/REDWOOD/EVE=
RGREEN
=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D 408 dw =3D=3D=3D=3D=3D 18 gprs =3D=3D=3D=3D=3D 0 stack
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
0000 4000000b a0a80000 ALU 43 @22 KC0[CB0:0-15]
0022 00380c00 00146b80 1 x: INTERP_ZW __.x, R0.w, Para=
m0.x
VEC_210
0024 00380800 20146b80 y: INTERP_ZW __.y, R0.z, Para=
m0.x
VEC_210
0026 00380c00 40346b90 z: INTERP_ZW R1.z, R0.w, Para=
m0.x
VEC_210
0028 80380800 60346b90 w: INTERP_ZW R1.w, R0.z, Para=
m0.x
VEC_210
0030 00380c00 00346b10 2 x: INTERP_XY R1.x, R0.w, Para=
m0.x
VEC_210
0032 00380800 20346b10 y: INTERP_XY R1.y, R0.z, Para=
m0.x
VEC_210
0034 00380c00 40146b00 z: INTERP_XY __.z, R0.w, Para=
m0.x
VEC_210
0036 80380800 60146b00 w: INTERP_XY __.w, R0.z, Para=
m0.x
VEC_210
0038 00382400 00146b80 3 x: INTERP_ZW __.x, R0.y, Para=
m1.x
VEC_210
0040 00382000 20146b80 y: INTERP_ZW __.y, R0.x, Para=
m1.x
VEC_210
0042 00382400 40546b90 z: INTERP_ZW R2.z, R0.y, Para=
m1.x
VEC_210
0044 80382000 60546b90 w: INTERP_ZW R2.w, R0.x, Para=
m1.x
VEC_210
0046 00382400 00546b10 4 x: INTERP_XY R2.x, R0.y, Para=
m1.x
VEC_210
0048 00382000 20546b10 y: INTERP_XY R2.y, R0.x, Para=
m1.x
VEC_210
0050 00382400 40146b00 z: INTERP_XY __.z, R0.y, Para=
m1.x
VEC_210
0052 80382000 60146b00 w: INTERP_XY __.w, R0.x, Para=
m1.x
VEC_210
0054 00384400 00146b80 5 x: INTERP_ZW __.x, R0.y, Para=
m2.x
VEC_210
0056 00384000 20146b80 y: INTERP_ZW __.y, R0.x, Para=
m2.x
VEC_210
0058 00384400 40746b90 z: INTERP_ZW R3.z, R0.y, Para=
m2.x
VEC_210
0060 80384000 60746b90 w: INTERP_ZW R3.w, R0.x, Para=
m2.x
VEC_210
0062 00384400 00746b10 6 x: INTERP_XY R3.x, R0.y, Para=
m2.x
VEC_210
0064 00384000 20746b10 y: INTERP_XY R3.y, R0.x, Para=
m2.x
VEC_210
0066 00384400 40146b00 z: INTERP_XY __.z, R0.y, Para=
m2.x
VEC_210
0068 80384000 60146b00 w: INTERP_XY __.w, R0.x, Para=
m2.x
VEC_210
0070 00386400 00146b80 7 x: INTERP_ZW __.x, R0.y, Para=
m3.x
VEC_210
0072 00386000 20146b80 y: INTERP_ZW __.y, R0.x, Para=
m3.x
VEC_210
0074 00386400 40946b90 z: INTERP_ZW R4.z, R0.y, Para=
m3.x
VEC_210
0076 80386000 60946b90 w: INTERP_ZW R4.w, R0.x, Para=
m3.x
VEC_210
0078 00386400 00946b10 8 x: INTERP_XY R4.x, R0.y, Para=
m3.x
VEC_210
0080 00386000 20946b10 y: INTERP_XY R4.y, R0.x, Para=
m3.x
VEC_210
0082 00386400 40146b00 z: INTERP_XY __.z, R0.y, Para=
m3.x
VEC_210
0084 80386000 60146b00 w: INTERP_XY __.w, R0.x, Para=
m3.x
VEC_210
0086 00388400 00146b80 9 x: INTERP_ZW __.x, R0.y, Para=
m4.x
VEC_210
0088 00388000 20146b80 y: INTERP_ZW __.y, R0.x, Para=
m4.x
VEC_210
0090 00388400 40b46b90 z: INTERP_ZW R5.z, R0.y, Para=
m4.x
VEC_210
0092 80388000 60b46b90 w: INTERP_ZW R5.w, R0.x, Para=
m4.x
VEC_210
0094 00388400 00b46b10 10 x: INTERP_XY R5.x, R0.y, Para=
m4.x
VEC_210
0096 00388000 20b46b10 y: INTERP_XY R5.y, R0.x, Para=
m4.x
VEC_210
0098 00388400 40146b00 z: INTERP_XY __.z, R0.y, Para=
m4.x
VEC_210
0100 00388000 60146b00 w: INTERP_XY __.w, R0.x, Para=
m4.x
VEC_210
0102 800000fd 01000c90 t: MOV R8.x, [0x3b808081
0.00392157].x
0104 3b808081=20
0106 8191a0ff 60c00090 11 w: MUL R6.w, PS, KC0[13=
].w
0002 00000036 80400000 TEX 1 @108
0108 00051410 f00d1008 fc820000 SAMPLE R8.xyzw, R5.xy__,=20=
=20
RID:20, SID:4 CT:NNNN
0004 40000038 a01c0004 ALU 8 @112 KC0[CB0:16-31]
0112 8100a008 01000090 12 x: MUL R8.x, R8.x, R5.z
0114 800000fe 01e04191 13 t: LOG_IEEE R15.x, |PV.x|
0116 801fe884 01e00090 14 x: MUL R15.x, KC0[4].z,=
PS
0118 800000fe 01e04090 15 t: EXP_IEEE R15.x, PV.x
0120 000000ff 81200c90 16 x: MOV_sat R9.x, PS
0122 000000ff a1200c80 y: MOV_sat __.y, PS
0124 000000ff c1200c80 z: MOV_sat __.z, PS
0126 800000ff e1200c80 w: MOV_sat __.w, PS
0006 00000040 80400000 TEX 1 @128
0128 00021110 f00d1008 fc808000 SAMPLE R8.xyzw, R2.xy__,=20=
=20
RID:17, SID:1 CT:NNNN
0008 00000042 a04c0000 ALU 20 @132
0132 001fa008 010294f9 17 x: MULADD R8.x, R8.x,
[0x40000000 2].x, -1.0
0134 801fa408 210294f9 y: MULADD R8.y, R8.y,
[0x40000000 2].x, -1.0
0136 40000000=20
0138 021fc0fe 01405f10 18 x: DOT4 R10.x, PV.x, -PV=
.x
0140 029fc4fe 21405f00 y: DOT4 __.y, PV.y, -PV.y
0142 021f00f8 41405f00 z: DOT4 __.z, 0, -0
0144 821f00f8 61405f00 w: DOT4 __.w, 0, -0
0146 801fc8f9 e1000010 19 w: ADD_sat R8.w, 1.0, PV.x
0148 80000cfe 01e04391 20 t: RECIPSQRT_CLAMPED R15.x, |PV.w|
0150 000000ff 01400c90 21 x: MOV R10.x, PS
0152 000000ff 21400c90 y: MOV R10.y, PS
0154 000000ff 41400c90 z: MOV R10.z, PS
0156 800000ff 61400c90 w: MOV R10.w, PS
0158 819fc0fd 61000210 22 w: MIN R8.w, [0x7f7fffff
3.40282e+38].x, PV.w
0160 7f7fffff=20
0162 80000cfe 01e04310 23 t: RECIP_IEEE R15.x, PV.w
0164 000000ff 01000c80 24 x: MOV __.x, PS
0166 000000ff 21000c80 y: MOV __.y, PS
0168 000000ff 41000c90 z: MOV R8.z, PS
0170 800000ff 61000c80 w: MOV __.w, PS
0010 00000056 80400000 TEX 1 @172
0172 00021310 f00d100b fc818000 SAMPLE R11.xyzw, R2.xy__,=20=
=20
RID:19, SID:3 CT:NNNN
0012 00000058 a1980000 ALU 103 @176
0176 001fa00b 212294f9 25 y: MULADD R9.y, R11.x,
[0x40000000 2].x, -1.0
0178 801fa40b 412294f9 z: MULADD R9.z, R11.y,
[0x40000000 2].x, -1.0
0180 40000000=20
0182 029fc4fe 01405f10 26 x: DOT4 R10.x, PV.y, -PV=
.y
0184 031fc8fe 21405f00 y: DOT4 __.y, PV.z, -PV.z
0186 021f00f8 41405f00 z: DOT4 __.z, 0, -0
0188 821f00f8 61405f00 w: DOT4 __.w, 0, -0
0190 801fc8f9 e1000010 27 w: ADD_sat R8.w, 1.0, PV.x
0192 80000cfe 01e04391 28 t: RECIPSQRT_CLAMPED R15.x, |PV.w|
0194 000000ff 01400c90 29 x: MOV R10.x, PS
0196 000000ff 21400c90 y: MOV R10.y, PS
0198 000000ff 41400c90 z: MOV R10.z, PS
0200 800000ff 61400c90 w: MOV R10.w, PS
0202 819fc0fd 61000210 30 w: MIN R8.w, [0x7f7fffff
3.40282e+38].x, PV.w
0204 7f7fffff=20
0206 80000cfe 01e04310 31 t: RECIP_IEEE R15.x, PV.w
0208 000000ff 01200c80 32 x: MOV __.x, PS
0210 000000ff 21200c80 y: MOV __.y, PS
0212 000000ff 41200c80 z: MOV __.z, PS
0214 800000ff 61200c90 w: MOV R9.w, PS
0216 020120f9 01e00010 33 x: ADD R15.x, 1.0, -R9.x
0218 020120f9 21e00010 y: ADD R15.y, 1.0, -R9.x
0220 820120f9 41e00010 z: ADD R15.z, 1.0, -R9.x
0222 000100fe 01e00090 34 x: MUL R15.x, PV.x, R8.x
0224 008104fe 21e00090 y: MUL R15.y, PV.y, R8.y
0226 810108fe 41e00090 z: MUL R15.z, PV.z, R8.z
0228 00812009 016280fe 35 x: MULADD R11.x, R9.x, R9.=
y,
PV.x
0230 01012009 216284fe y: MULADD R11.y, R9.x, R9.=
z,
PV.y
0232 81812009 416288fe z: MULADD R11.z, R9.x, R9.=
w,
PV.z
0234 000084fe 01000090 36 x: MUL R8.x, PV.y, R4.x
0236 008084fe 21000090 y: MUL R8.y, PV.y, R4.y
0238 810084fe 41000090 z: MUL R8.z, PV.y, R4.z
0240 0000600b 010280fe 37 x: MULADD R8.x, R11.x, R3.=
x,
PV.x
0242 0080600b 210284fe y: MULADD R8.y, R11.x, R3.=
y,
PV.y
0244 8100600b 410288fe z: MULADD R8.z, R11.x, R3.=
z,
PV.z
0246 00000003 01200c90 38 x: MOV R9.x, R3.x
0248 00000403 21200c90 y: MOV R9.y, R3.y
0250 80000803 41200c90 z: MOV R9.z, R3.z
0252 008088fe 01600090 39 x: MUL R11.x, PV.z, R4.y
0254 010080fe 21600090 y: MUL R11.y, PV.x, R4.z
0256 800084fe 61600090 w: MUL R11.w, PV.y, R4.x
0258 01008409 012290fe 40 x: MULADD R9.x, R9.y, R4.z,
-PV.x
0260 00008809 212294fe y: MULADD R9.y, R9.z, R4.x,
-PV.y
0262 80808009 41229cfe z: MULADD R9.z, R9.x, R4.y,
-PV.w
0264 018060fe 01200090 41 x: MUL R9.x, PV.x, R3.w
0266 018064fe 21200090 y: MUL R9.y, PV.y, R3.w
0268 818068fe 41200090 z: MUL R9.z, PV.z, R3.w
0270 001fc80b 01028008 42 x: MULADD R8.x, R11.z, PV.=
x,
R8.x
0272 009fc80b 21028408 y: MULADD R8.y, R11.z, PV.=
y,
R8.y
0274 811fc80b 41028808 z: MULADD R8.z, R11.z, PV.=
z,
R8.z
0276 019f80fe 01028cfc 43 x: MULADD R8.x, PV.x, 0.5,=
0.5
0278 019f84fe 21028cfc y: MULADD R8.y, PV.y, 0.5,=
0.5
0280 819f88fe 41028cfc z: MULADD R8.z, PV.z, 0.5,=
0.5
0282 001fa0fe 010294f9 44 x: MULADD R8.x, PV.x,
[0x40000000 2].x, -1.0
0284 001fa4fe 210294f9 y: MULADD R8.y, PV.y,
[0x40000000 2].x, -1.0
0286 801fa8fe 410294f9 z: MULADD R8.z, PV.z,
[0x40000000 2].x, -1.0
0288 40000000=20
0290 001fc0fe 01405f10 45 x: DOT4 R10.x, PV.x, PV.x
0292 009fc4fe 21405f00 y: DOT4 __.y, PV.y, PV.y
0294 011fc8fe 41405f00 z: DOT4 __.z, PV.z, PV.z
0296 801f00f8 61405f00 w: DOT4 __.w, 0, 0
0298 800000fe 01e04391 46 t: RECIPSQRT_CLAMPED R15.x, |PV.x|
0300 000000ff 01400c90 47 x: MOV R10.x, PS
0302 000000ff 21400c80 y: MOV __.y, PS
0304 000000ff 41400c80 z: MOV __.z, PS
0306 800000ff 61400c80 w: MOV __.w, PS
0308 801fc0fd 01400210 48 x: MIN R10.x, [0x7f7fff=
ff
3.40282e+38].x, PV.x
0310 7f7fffff=20
0312 001fc008 01200090 49 x: MUL R9.x, R8.x, PV.x
0314 001fc408 21200090 y: MUL R9.y, R8.y, PV.x
0316 801fc808 41200090 z: MUL R9.z, R8.z, PV.x
0318 809fc0fe 01000193 50 x: MAX R8.x, |PV.x|, |P=
V.y|
0320 801fc809 01600191 51 x: MAX R11.x, |R9.z|, P=
V.x
0322 021fc809 01000011 52 x: ADD R8.x, |R9.z|, -P=
V.x
0324 021fc409 21000011 y: ADD R8.y, |R9.y|, -P=
V.x
0326 800000fe 01e04310 t: RECIP_IEEE R15.x, PV.x
0328 000000ff 01000c80 53 x: MOV __.x, PS
0330 000000ff 21000c80 y: MOV __.y, PS
0332 000000ff 41000c90 z: MOV R8.z, PS
0334 000000ff 61000c80 w: MOV __.w, PS
0336 80000009 22200c91 t: MOV R17.y, |R9.x|
0338 80000409 22000c91 54 y: MOV R16.y, |R9.y|
0340 00822408 210364fe 55 y: CNDGE R8.y, R8.y, R17.=
y,
PV.y
0342 00000809 62200c91 w: MOV R17.w, |R9.z|
0344 80000809 62000c91 t: MOV R16.w, |R9.z|
0346 00000009 02000c91 56 x: MOV R16.x, |R9.x|
0348 819fc4fe 610360ff w: CNDGE R8.w, PV.y, PV.w=
, PS
0350 001fc008 01036408 57 x: CNDGE R8.x, R8.x, PV.x,
R8.y
0352 80000409 22000c91 y: MOV R16.y, |R9.y|
0354 01010009 01200090 58 x: MUL R9.x, R9.x, R8.z
0356 009fc0fe 21036c08 y: CNDGE R8.y, PV.x, PV.y,
R8.w
0358 01010809 41200090 z: MUL R9.z, R9.z, R8.z
0360 81010409 21200090 t: MUL R9.y, R9.y, R8.z
0362 800114fe 41000010 59 z: ADD R8.z, -PV.y, R8.x
0364 000108fe 01036408 60 x: CNDGE R8.x, PV.z, R8.x,
R8.y
0366 808108fe 21036008 y: CNDGE R8.y, PV.z, R8.y,
R8.x
0368 800000fe 01e04310 61 t: RECIP_IEEE R15.x, PV.x
0370 000000ff 01200c80 62 x: MOV __.x, PS
0372 000000ff 21200c80 y: MOV __.y, PS
0374 000000ff 41200c80 z: MOV __.z, PS
0376 800000ff 61200c90 w: MOV R9.w, PS
0378 019fc408 41000090 63 z: MUL R8.z, R8.y, PV.w
0380 800004f8 61000c90 w: MOV R8.w, 0
0014 000000c0 80400000 TEX 1 @384
0384 00081211 f00d1008 6d010000 SAMPLE_L R8.xyzw, R8.xzww,=20=
=20
RID:18, SID:2 CT:NNNN
0016 000000c2 a0240000 ALU 10 @388
0388 01810009 01000090 64 x: MUL R8.x, R9.x, R8.w
0390 01810409 21000090 y: MUL R8.y, R9.y, R8.w
0392 81810809 41000090 z: MUL R8.z, R9.z, R8.w
0394 019f80fe 00c28cfc 65 x: MULADD R6.x, PV.x, 0.5,=
0.5
0396 019f84fe 20c28cfc y: MULADD R6.y, PV.y, 0.5,=
0.5
0398 819f88fe 40c28cfc z: MULADD R6.z, PV.z, 0.5,=
0.5
0400 00000001 00e00c90 66 x: MOV R7.x, R1.x
0402 00000001 20e00c90 y: MOV R7.y, R1.x
0404 00000001 40e00c90 z: MOV R7.z, R1.x
0406 80000001 60e00c90 w: MOV R7.w, R1.x
0018 c0030001 94c00688 EXPORT PIXEL 1 R6.xyzw
0020 c0038000 95200688 EXPORT_DONE PIXEL 0 R7.xyzw EOP
=3D=3D=3D=3D=3D SHADER_END
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D