From: Brian Paul Date: Thu, 20 Aug 2009 16:34:45 +0000 (-0600) Subject: tgsi: check for SOA dependencies in SSE and PPC code generators X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1645adc55155747708f1f5b1c629ac03cc5126df;p=mesa.git tgsi: check for SOA dependencies in SSE and PPC code generators Fall back to interpreter for now. This doesn't happen very often. --- diff --git a/src/gallium/auxiliary/tgsi/tgsi_ppc.c b/src/gallium/auxiliary/tgsi/tgsi_ppc.c index 3c4dd6e7017..4b1c7d4e01b 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ppc.c +++ b/src/gallium/auxiliary/tgsi/tgsi_ppc.c @@ -1113,6 +1113,10 @@ emit_instruction(struct gen_context *gen, if (inst->Instruction.Saturate != TGSI_SAT_NONE) return 0; + /* need to use extra temps to fix SOA dependencies : */ + if (tgsi_check_soa_dependencies(inst)) + return FALSE; + switch (inst->Instruction.Opcode) { case TGSI_OPCODE_MOV: case TGSI_OPCODE_SWZ: diff --git a/src/gallium/auxiliary/tgsi/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/tgsi_sse2.c index 348357d1bc3..46f2387c158 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_sse2.c +++ b/src/gallium/auxiliary/tgsi/tgsi_sse2.c @@ -1751,6 +1751,10 @@ emit_instruction( if (inst->Instruction.Saturate != TGSI_SAT_NONE) return FALSE; + /* need to use extra temps to fix SOA dependencies : */ + if (tgsi_check_soa_dependencies(inst)) + return FALSE; + switch (inst->Instruction.Opcode) { case TGSI_OPCODE_ARL: FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {