diff options
author | Maciej Cencora <m.cencora@gmail.com> | 2009-04-20 07:31:44 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-04-20 07:31:44 -0600 |
commit | 6900046aad77b3b01feb30af9e50375224747b7d (patch) | |
tree | ceff764b8f3ce040aea0dd7793597abeb84cf7f3 /src/mesa/drivers/dri/r300/radeon_program_alu.c | |
parent | c76a2444a3db4fef4b7892cfd99aa41681b4eb0a (diff) |
r300: fix register-negate branch merge regression
Diffstat (limited to 'src/mesa/drivers/dri/r300/radeon_program_alu.c')
-rw-r--r-- | src/mesa/drivers/dri/r300/radeon_program_alu.c | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/src/mesa/drivers/dri/r300/radeon_program_alu.c b/src/mesa/drivers/dri/r300/radeon_program_alu.c index ebc5c913b2..8283723bad 100644 --- a/src/mesa/drivers/dri/r300/radeon_program_alu.c +++ b/src/mesa/drivers/dri/r300/radeon_program_alu.c @@ -81,19 +81,6 @@ static struct prog_instruction *emit3(struct gl_program* p, return fpi; } -static void set_swizzle(struct prog_src_register *SrcReg, int coordinate, int swz) -{ - SrcReg->Swizzle &= ~(7 << (3*coordinate)); - SrcReg->Swizzle |= swz << (3*coordinate); -} - -static void set_negate_base(struct prog_src_register *SrcReg, int coordinate, int negate) -{ - /* XXX note sure about this negation logic here */ - SrcReg->Negate &= ~(1 << coordinate); - SrcReg->Negate |= (negate << coordinate); -} - static struct prog_dst_register dstreg(int file, int index) { struct prog_dst_register dst; @@ -197,17 +184,9 @@ static void transform_DPH(struct radeon_transform_context* t, struct prog_instruction* inst) { struct prog_src_register src0 = inst->SrcReg[0]; - if (src0.Negate) { - if (src0.Abs) { - int tempreg = radeonFindFreeTemporary(t); - emit1(t->Program, OPCODE_MOV, 0, dstreg(PROGRAM_TEMPORARY, tempreg), src0); - src0 = srcreg(src0.File, src0.Index); - } else { - src0.Negate ^= NEGATE_XYZW; - } - } - set_swizzle(&src0, 3, SWIZZLE_ONE); - set_negate_base(&src0, 3, 0); + src0.Negate &= ~NEGATE_W; + src0.Swizzle &= ~(7 << (3 * 3)); + src0.Swizzle |= SWIZZLE_ONE << (3 * 3); emit2(t->Program, OPCODE_DP4, inst->SaturateMode, inst->DstReg, src0, inst->SrcReg[1]); } |