[i965] short immediate values must be replicated to both halves of the dword
authorKeith Packard <keithp@keithp.com>
Fri, 25 Apr 2008 23:07:12 +0000 (16:07 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 25 Apr 2008 23:08:50 +0000 (16:08 -0700)
The 32-bit immediate value in the i965 instruction word must contain two
copies of any 16-bit constants. brw_imm_uw and brw_imm_w just needed to
copy the value into both halves of the immediate value instruction field.

src/mesa/drivers/dri/i965/brw_eu.h

index 25f1f896f7d436c0935bc0e54116eff49444dcfe..c138d15fe82fad02fc1e691c547f1ace5593db0e 100644 (file)
@@ -335,14 +335,14 @@ static __inline struct brw_reg brw_imm_ud( GLuint ud )
 static __inline struct brw_reg brw_imm_uw( GLushort uw )
 {
    struct brw_reg imm = brw_imm_reg(BRW_REGISTER_TYPE_UW);
-   imm.dw1.ud = uw;
+   imm.dw1.ud = uw | (uw << 16);
    return imm;
 }
 
 static __inline struct brw_reg brw_imm_w( GLshort w )
 {
    struct brw_reg imm = brw_imm_reg(BRW_REGISTER_TYPE_W);
-   imm.dw1.d = w;
+   imm.dw1.d = w | (w << 16);
    return imm;
 }