From ce723d8d8b011f2efaea6588c42b6d11ee2e7115 Mon Sep 17 00:00:00 2001
From: Brian Paul <brianp@vmware.com>
Date: Thu, 20 Aug 2009 10:34:45 -0600
Subject: tgsi: check for SOA dependencies in SSE and PPC code generators

Fall back to interpreter for now.  This doesn't happen very often.
---
 src/gallium/auxiliary/tgsi/tgsi_ppc.c  | 4 ++++
 src/gallium/auxiliary/tgsi/tgsi_sse2.c | 4 ++++
 2 files changed, 8 insertions(+)

(limited to 'src')

diff --git a/src/gallium/auxiliary/tgsi/tgsi_ppc.c b/src/gallium/auxiliary/tgsi/tgsi_ppc.c
index 2f8b0c4df0..8466d9bc22 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ppc.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ppc.c
@@ -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:
diff --git a/src/gallium/auxiliary/tgsi/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/tgsi_sse2.c
index 571f98ae35..a13368c80c 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_sse2.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_sse2.c
@@ -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 ) {
-- 
cgit v1.2.3