diff options
author | Chris Li <chrisl@vmware.com> | 2010-07-14 14:19:11 +0100 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2010-07-14 14:38:02 +0100 |
commit | bed78862d4db044a87d6c3808548abd6df95dd7d (patch) | |
tree | c59f9ce51c16d2769bb4dca25b38c8668d748cd3 /src/gallium/drivers/llvmpipe/lp_tile_shuffle_mask.py | |
parent | c6c62164c369eefe1cac06190a87050977c376c1 (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.py | 32 |
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 |