Commit 7d9bdcb9 by Nicolas Capens Committed by Nicolas Capens

Eliminate unnecessary inverse masks.

~mask[i % size] is the same as mask[~i % size] because it's just an expansion of i, so there's no need for invMask[] to store the former. Change-Id: I754732a2c4978281d35037941ecb74448ab78a8e Reviewed-on: https://swiftshader-review.googlesource.com/3258Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 56dda25f
...@@ -247,11 +247,6 @@ namespace sw ...@@ -247,11 +247,6 @@ namespace sw
mask565Q[i][1] = mask565Q[i][1] =
mask565Q[i][2] = mask565Q[i][2] =
mask565Q[i][3] = (i & 0x1 ? 0x001F : 0) | (i & 0x2 ? 0x07E0 : 0) | (i & 0x4 ? 0xF800 : 0); mask565Q[i][3] = (i & 0x1 ? 0x001F : 0) | (i & 0x2 ? 0x07E0 : 0) | (i & 0x4 ? 0xF800 : 0);
invMask565Q[i][0] =
invMask565Q[i][1] =
invMask565Q[i][2] =
invMask565Q[i][3] = ~mask565Q[i][0];
} }
for(int i = 0; i < 4; i++) for(int i = 0; i < 4; i++)
...@@ -261,20 +256,10 @@ namespace sw ...@@ -261,20 +256,10 @@ namespace sw
maskW01Q[i][2] = -(i >> 0 & 1); maskW01Q[i][2] = -(i >> 0 & 1);
maskW01Q[i][3] = -(i >> 1 & 1); maskW01Q[i][3] = -(i >> 1 & 1);
invMaskW01Q[i][0] = ~maskW01Q[i][0];
invMaskW01Q[i][1] = ~maskW01Q[i][1];
invMaskW01Q[i][2] = ~maskW01Q[i][2];
invMaskW01Q[i][3] = ~maskW01Q[i][3];
maskD01X[i][0] = -(i >> 0 & 1); maskD01X[i][0] = -(i >> 0 & 1);
maskD01X[i][1] = -(i >> 1 & 1); maskD01X[i][1] = -(i >> 1 & 1);
maskD01X[i][2] = -(i >> 0 & 1); maskD01X[i][2] = -(i >> 0 & 1);
maskD01X[i][3] = -(i >> 1 & 1); maskD01X[i][3] = -(i >> 1 & 1);
invMaskD01X[i][0] = ~maskD01X[i][0];
invMaskD01X[i][1] = ~maskD01X[i][1];
invMaskD01X[i][2] = ~maskD01X[i][2];
invMaskD01X[i][3] = ~maskD01X[i][3];
} }
for(int i = 0; i < 256; i++) for(int i = 0; i < 256; i++)
......
...@@ -64,11 +64,8 @@ namespace sw ...@@ -64,11 +64,8 @@ namespace sw
qword2 invMaskQ01X[16]; qword2 invMaskQ01X[16];
qword2 invMaskQ23X[16]; qword2 invMaskQ23X[16];
word4 maskW01Q[4]; word4 maskW01Q[4];
word4 invMaskW01Q[4];
dword4 maskD01X[4]; dword4 maskD01X[4];
dword4 invMaskD01X[4];
word4 mask565Q[8]; word4 mask565Q[8];
word4 invMask565Q[8];
unsigned short sRGBtoLinear8_12[256]; unsigned short sRGBtoLinear8_12[256];
unsigned short sRGBtoLinear6_12[64]; unsigned short sRGBtoLinear6_12[64];
......
...@@ -1573,7 +1573,7 @@ namespace sw ...@@ -1573,7 +1573,7 @@ namespace sw
{ {
Int masked = value; Int masked = value;
c01 &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[bgraWriteMask & 0x7][0])); c01 &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[bgraWriteMask & 0x7][0]));
masked &= *Pointer<Int>(constants + OFFSET(Constants,invMask565Q[bgraWriteMask & 0x7][0])); masked &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[~bgraWriteMask & 0x7][0]));
c01 |= masked; c01 |= masked;
} }
...@@ -1591,7 +1591,7 @@ namespace sw ...@@ -1591,7 +1591,7 @@ namespace sw
{ {
Int masked = value; Int masked = value;
c23 &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[bgraWriteMask & 0x7][0])); c23 &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[bgraWriteMask & 0x7][0]));
masked &= *Pointer<Int>(constants + OFFSET(Constants,invMask565Q[bgraWriteMask & 0x7][0])); masked &= *Pointer<Int>(constants + OFFSET(Constants,mask565Q[~bgraWriteMask & 0x7][0]));
c23 |= masked; c23 |= masked;
} }
...@@ -1791,7 +1791,7 @@ namespace sw ...@@ -1791,7 +1791,7 @@ namespace sw
{ {
Short4 masked = value; Short4 masked = value;
current.x &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[rgbaWriteMask & 0x3][0])); current.x &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[rgbaWriteMask & 0x3][0]));
masked &= *Pointer<Short4>(constants + OFFSET(Constants,invMaskW01Q[rgbaWriteMask & 0x3][0])); masked &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[~rgbaWriteMask & 0x3][0]));
current.x |= masked; current.x |= masked;
} }
...@@ -1808,7 +1808,7 @@ namespace sw ...@@ -1808,7 +1808,7 @@ namespace sw
{ {
Short4 masked = value; Short4 masked = value;
current.y &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[rgbaWriteMask & 0x3][0])); current.y &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[rgbaWriteMask & 0x3][0]));
masked &= *Pointer<Short4>(constants + OFFSET(Constants,invMaskW01Q[rgbaWriteMask & 0x3][0])); masked &= *Pointer<Short4>(constants + OFFSET(Constants,maskW01Q[~rgbaWriteMask & 0x3][0]));
current.y |= masked; current.y |= masked;
} }
...@@ -2389,7 +2389,7 @@ namespace sw ...@@ -2389,7 +2389,7 @@ namespace sw
{ {
Float4 masked = value; Float4 masked = value;
oC.x = As<Float4>(As<Int4>(oC.x) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[rgbaWriteMask & 0x3][0]))); oC.x = As<Float4>(As<Int4>(oC.x) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[rgbaWriteMask & 0x3][0])));
masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants,invMaskD01X[rgbaWriteMask & 0x3][0]))); masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[~rgbaWriteMask & 0x3][0])));
oC.x = As<Float4>(As<Int4>(oC.x) | As<Int4>(masked)); oC.x = As<Float4>(As<Int4>(oC.x) | As<Int4>(masked));
} }
...@@ -2408,7 +2408,7 @@ namespace sw ...@@ -2408,7 +2408,7 @@ namespace sw
masked = value; masked = value;
oC.y = As<Float4>(As<Int4>(oC.y) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[rgbaWriteMask & 0x3][0]))); oC.y = As<Float4>(As<Int4>(oC.y) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[rgbaWriteMask & 0x3][0])));
masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants,invMaskD01X[rgbaWriteMask & 0x3][0]))); masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants,maskD01X[~rgbaWriteMask & 0x3][0])));
oC.y = As<Float4>(As<Int4>(oC.y) | As<Int4>(masked)); oC.y = As<Float4>(As<Int4>(oC.y) | As<Int4>(masked));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment