tgsi: check for SOA dependencies in SSE and PPC code generators
authorBrian Paul <brianp@vmware.com>
Thu, 20 Aug 2009 16:34:45 +0000 (10:34 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 20 Aug 2009 16:34:45 +0000 (10:34 -0600)
Fall back to interpreter for now.  This doesn't happen very often.

src/gallium/auxiliary/tgsi/tgsi_ppc.c
src/gallium/auxiliary/tgsi/tgsi_sse2.c

index 2f8b0c4df0f50dddd6ff2524d743bd412779d1cb..8466d9bc22978b5a38055c5db6d19894c5871826 100644 (file)
@@ -1112,6 +1112,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:
index 571f98ae35e02636036ae19a30c5ea65de04faa2..a13368c80c85c942bb47287fdccc549b6f6cff40 100644 (file)
@@ -1506,6 +1506,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 ) {