or am I missing something ?
I belive the output from the following code should be
R0 = (1.f,2.f,3.f,4.f) but for some strange reason I get R0=(1.f,2.f,4.f,4.f). Is it a IL compiler bug ?
PS. The IL code looks a little bit strange ( could be simpler ) because it's from IL generator i'm working on.
PS2. Linux x64 + driver 9.12+fix
il_cs_2_0 dcl_num_thread_per_group 128 dcl_cb cb0[1] dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float) dcl_resource_id(1)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float) dcl_literal l0, 0x0, 0x0, 0x0, 0x0 dcl_literal l3, 0x3f800000, 0x40000000, 0x0, 0x0 dcl_literal l2, 0x40400000, 0x40800000, 0x0, 0x0 dcl_literal l1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff mov r1.x,cb0[0].z mov r3.x,cb0[0].y mov r5.x,cb0[0].x mov r6.xy,l2.xy mov r7.xy,l3.xy mov r10.x,l0.x mov r8.xy,r7.xy mov r8.zw,r6.xy mov r9,r8 mov g[r10.x],r9 end ShaderType = 3 TargetChip = w ;SC Dep components NumClauseTemps = 4 ; -------- Disassembly -------------------- 00 ALU: ADDR(32) CNT(6) 0 x: MOV R0.x, (0x3F800000, 1.0f).x y: MOV R0.y, (0x40000000, 2.0f).y z: MOV R0.z, (0x40800000, 4.0f).z w: MOV R0.w, (0x40800000, 4.0f).z 01 MEM_EXPORT_WRITE: DWORD_PTR[0], R0, ELEM_SIZE(3) VPM END_OF_PROGRAM