summaryrefslogtreecommitdiffstats
path: root/progs
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2009-09-13 11:59:24 -0700
committerKeith Whitwell <[email protected]>2009-09-13 11:59:24 -0700
commit66a7eedaa2f66e5e941cea0303c5ec348e9cc641 (patch)
treecc5f22903fea5f28f68f6f41eed17eaabe13c97a /progs
parent86226d5ea186d3fc6013bc40a341e0c0a891de39 (diff)
tgsi: handle some src/dst aliasing in tgsi_sse2.c
Src/Dst aliasing (aka SOA dependencies) requires some care to ensure intermediate results do not overwrite yet-to-be read source registers. This change ensures that MOV/SWZ handle this correctly, which is poor but no worse than the current tgsi_exec.c path. Remove the fallback as there is nothing to be gained correctness-wise between the two implementations now. Fixing this properly looks like a bit of work in this code, but might be easily achieved by sending destination writes to temporary storage.
Diffstat (limited to 'progs')
-rw-r--r--progs/fp/mov-alias.txt6
-rw-r--r--progs/fp/mul-alias.txt6
2 files changed, 12 insertions, 0 deletions
diff --git a/progs/fp/mov-alias.txt b/progs/fp/mov-alias.txt
new file mode 100644
index 00000000000..5f04e9c76e2
--- /dev/null
+++ b/progs/fp/mov-alias.txt
@@ -0,0 +1,6 @@
+!!ARBfp1.0
+TEMP R0;
+MOV R0, fragment.color;
+MOV R0, R0.zyxw;
+MOV result.color, R0;
+END
diff --git a/progs/fp/mul-alias.txt b/progs/fp/mul-alias.txt
new file mode 100644
index 00000000000..cf7d359e780
--- /dev/null
+++ b/progs/fp/mul-alias.txt
@@ -0,0 +1,6 @@
+!!ARBfp1.0
+TEMP R0;
+MOV R0, fragment.color;
+MUL R0, R0.zyxw, fragment.color;
+MOV result.color, R0;
+END