summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py
diff options
context:
space:
mode:
authorChris Li <chrisl@vmware.com>2010-07-14 14:19:11 +0100
committerJosé Fonseca <jfonseca@vmware.com>2010-07-14 14:38:02 +0100
commitbed78862d4db044a87d6c3808548abd6df95dd7d (patch)
treec59f9ce51c16d2769bb4dca25b38c8668d748cd3 /src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py
parentc6c62164c369eefe1cac06190a87050977c376c1 (diff)
llvmpipe: Addi ssse3 swizzling for B8G8R8A8_UNORM.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py b/src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py
new file mode 100644
index 0000000000..ea2fc0f375
--- /dev/null
+++ b/src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py
@@ -0,0 +1,32 @@
+
+tile = [[0,1,4,5],
+ [2,3,6,7],
+ [8,9,12,13],
+ [10,11,14,15]]
+shift = 0
+align = 1
+value = 0L
+holder = []
+
+import sys
+
+basemask = [0x
+fd = sys.stdout
+indent = " "*9
+for c in range(4):
+ fd.write(indent + "*pdst++ = \n");
+ for l,line in enumerate(tile):
+ fd.write(indent + " %s_mm_shuffle_epi8(line%d, (__m128i){"%(l and '+' or ' ',l))
+ for i,pos in enumerate(line):
+ mask = 0x00ffffffff & (~(0xffL << shift))
+ value = mask | ((pos) << shift)
+ holder.append(value)
+ if holder and (i + 1) %2 == 0:
+ fd.write("0x%8.0x"%(holder[0] + (holder[1] << 32)))
+ holder = []
+ if (i) %4 == 1:
+ fd.write( ',')
+
+ fd.write("})%s\n"%((l == 3) and ';' or ''))
+ print
+ shift += 8