--- src/gallium/docs/source/tgsi.rst | 1053 ++++++++++++++------------------------ 1 files changed, 387 insertions(+), 666 deletions(-)
diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 2ace544..38b5602 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -48,26 +48,20 @@ used. .. math:: - dst.x = \lfloor src.x\rfloor - - dst.y = \lfloor src.y\rfloor - - dst.z = \lfloor src.z\rfloor - - dst.w = \lfloor src.w\rfloor + dst.x &= \lfloor src.x\rfloor \\ + dst.y &= \lfloor src.y\rfloor \\ + dst.z &= \lfloor src.z\rfloor \\ + dst.w &= \lfloor src.w\rfloor .. opcode:: MOV - Move .. math:: - dst.x = src.x - - dst.y = src.y - - dst.z = src.z - - dst.w = src.w + dst.x &= src.x \\ + dst.y &= src.y \\ + dst.z &= src.z \\ + dst.w &= src.w .. opcode:: LIT - Light Coefficients @@ -131,26 +125,20 @@ This instruction replicates its result. The results are undefined for src < 0. .. math:: - dst.x = src0.x \times src1.x - - dst.y = src0.y \times src1.y - - dst.z = src0.z \times src1.z - - dst.w = src0.w \times src1.w + dst.x &= src0.x \times src1.x \\ + dst.y &= src0.y \times src1.y \\ + dst.z &= src0.z \times src1.z \\ + dst.w &= src0.w \times src1.w .. opcode:: ADD - Add .. math:: - dst.x = src0.x + src1.x - - dst.y = src0.y + src1.y - - dst.z = src0.z + src1.z - - dst.w = src0.w + src1.w + dst.x &= src0.x + src1.x \\ + dst.y &= src0.y + src1.y \\ + dst.z &= src0.z + src1.z \\ + dst.w &= src0.w + src1.w .. opcode:: DP3 - 3-component Dot Product @@ -185,143 +173,110 @@ This instruction replicates its result. .. math:: - dst.x = min(src0.x, src1.x) - - dst.y = min(src0.y, src1.y) - - dst.z = min(src0.z, src1.z) - - dst.w = min(src0.w, src1.w) + dst.x &= min(src0.x, src1.x) \\ + dst.y &= min(src0.y, src1.y) \\ + dst.z &= min(src0.z, src1.z) \\ + dst.w &= min(src0.w, src1.w) .. opcode:: MAX - Maximum .. math:: - dst.x = max(src0.x, src1.x) - - dst.y = max(src0.y, src1.y) - - dst.z = max(src0.z, src1.z) - - dst.w = max(src0.w, src1.w) + dst.x &= max(src0.x, src1.x) \\ + dst.y &= max(src0.y, src1.y) \\ + dst.z &= max(src0.z, src1.z) \\ + dst.w &= max(src0.w, src1.w) .. opcode:: SLT - Set On Less Than .. math:: - dst.x = (src0.x < src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y < src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z < src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w < src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x < src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y < src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z < src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w < src1.w) ? \quad 1.0F : 0.0F .. opcode:: SGE - Set On Greater Equal Than .. math:: - dst.x = (src0.x >= src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y >= src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z >= src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w >= src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x >= src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y >= src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z >= src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w >= src1.w) ? \quad 1.0F : 0.0F .. opcode:: MAD - Multiply And Add .. math:: - dst.x = src0.x \times src1.x + src2.x - - dst.y = src0.y \times src1.y + src2.y - - dst.z = src0.z \times src1.z + src2.z - - dst.w = src0.w \times src1.w + src2.w + dst.x &= src0.x \times src1.x + src2.x \\ + dst.y &= src0.y \times src1.y + src2.y \\ + dst.z &= src0.z \times src1.z + src2.z \\ + dst.w &= src0.w \times src1.w + src2.w .. opcode:: SUB - Subtract .. math:: - dst.x = src0.x - src1.x - - dst.y = src0.y - src1.y - - dst.z = src0.z - src1.z - - dst.w = src0.w - src1.w + dst.x &= src0.x - src1.x \\ + dst.y &= src0.y - src1.y \\ + dst.z &= src0.z - src1.z \\ + dst.w &= src0.w - src1.w .. opcode:: LRP - Linear Interpolate .. math:: - dst.x = src0.x \times src1.x + (1 - src0.x) \times src2.x - - dst.y = src0.y \times src1.y + (1 - src0.y) \times src2.y - - dst.z = src0.z \times src1.z + (1 - src0.z) \times src2.z - - dst.w = src0.w \times src1.w + (1 - src0.w) \times src2.w + dst.x &= src0.x \times src1.x + (1 - src0.x) \times src2.x \\ + dst.y &= src0.y \times src1.y + (1 - src0.y) \times src2.y \\ + dst.z &= src0.z \times src1.z + (1 - src0.z) \times src2.z \\ + dst.w &= src0.w \times src1.w + (1 - src0.w) \times src2.w .. opcode:: CND - Condition .. math:: - dst.x = (src2.x > 0.5) ? \quad src0.x : src1.x - - dst.y = (src2.y > 0.5) ? \quad src0.y : src1.y - - dst.z = (src2.z > 0.5) ? \quad src0.z : src1.z - - dst.w = (src2.w > 0.5) ? \quad src0.w : src1.w + dst.x &= (src2.x > 0.5) ? \quad src0.x : src1.x \\ + dst.y &= (src2.y > 0.5) ? \quad src0.y : src1.y \\ + dst.z &= (src2.z > 0.5) ? \quad src0.z : src1.z \\ + dst.w &= (src2.w > 0.5) ? \quad src0.w : src1.w .. opcode:: DP2A - 2-component Dot Product And Add .. math:: - dst.x = src0.x \times src1.x + src0.y \times src1.y + src2.x - - dst.y = src0.x \times src1.x + src0.y \times src1.y + src2.x - - dst.z = src0.x \times src1.x + src0.y \times src1.y + src2.x - - dst.w = src0.x \times src1.x + src0.y \times src1.y + src2.x + dst.x &= src0.x \times src1.x + src0.y \times src1.y + src2.x \\ + dst.y &= src0.x \times src1.x + src0.y \times src1.y + src2.x \\ + dst.z &= src0.x \times src1.x + src0.y \times src1.y + src2.x \\ + dst.w &= src0.x \times src1.x + src0.y \times src1.y + src2.x .. opcode:: FRC - Fraction .. math:: - dst.x = src.x - \lfloor src.x\rfloor - - dst.y = src.y - \lfloor src.y\rfloor - - dst.z = src.z - \lfloor src.z\rfloor - - dst.w = src.w - \lfloor src.w\rfloor + dst.x &= src.x - \lfloor src.x\rfloor \\ + dst.y &= src.y - \lfloor src.y\rfloor \\ + dst.z &= src.z - \lfloor src.z\rfloor \\ + dst.w &= src.w - \lfloor src.w\rfloor .. opcode:: CLAMP - Clamp .. math:: - dst.x = clamp(src0.x, src1.x, src2.x) - - dst.y = clamp(src0.y, src1.y, src2.y) - - dst.z = clamp(src0.z, src1.z, src2.z) - - dst.w = clamp(src0.w, src1.w, src2.w) + dst.x &= clamp(src0.x, src1.x, src2.x) \\ + dst.y &= clamp(src0.y, src1.y, src2.y) \\ + dst.z &= clamp(src0.z, src1.z, src2.z) \\ + dst.w &= clamp(src0.w, src1.w, src2.w) .. opcode:: FLR - Floor @@ -330,26 +285,20 @@ This is identical to :opcode:`ARL`. .. math:: - dst.x = \lfloor src.x\rfloor - - dst.y = \lfloor src.y\rfloor - - dst.z = \lfloor src.z\rfloor - - dst.w = \lfloor src.w\rfloor + dst.x &= \lfloor src.x\rfloor \\ + dst.y &= \lfloor src.y\rfloor \\ + dst.z &= \lfloor src.z\rfloor \\ + dst.w &= \lfloor src.w\rfloor .. opcode:: ROUND - Round .. math:: - dst.x = round(src.x) - - dst.y = round(src.y) - - dst.z = round(src.z) - - dst.w = round(src.w) + dst.x &= round(src.x) \\ + dst.y &= round(src.y) \\ + dst.z &= round(src.z) \\ + dst.w &= round(src.w) .. opcode:: EX2 - Exponential Base 2 @@ -382,26 +331,20 @@ This instruction replicates its result. .. math:: - dst.x = src0.y \times src1.z - src1.y \times src0.z - - dst.y = src0.z \times src1.x - src1.z \times src0.x - - dst.z = src0.x \times src1.y - src1.x \times src0.y - - dst.w = 1 + dst.x &= src0.y \times src1.z - src1.y \times src0.z \\ + dst.y &= src0.z \times src1.x - src1.z \times src0.x \\ + dst.z &= src0.x \times src1.y - src1.x \times src0.y \\ + dst.w &= 1 .. opcode:: ABS - Absolute .. math:: - dst.x = |src.x| - - dst.y = |src.y| - - dst.z = |src.z| - - dst.w = |src.w| + dst.x &= |src.x| \\ + dst.y &= |src.y| \\ + dst.z &= |src.z| \\ + dst.w &= |src.w| .. opcode:: RCC - Reciprocal Clamped @@ -440,13 +383,10 @@ while DDX is allowed to be the same for the entire 2x2 quad. .. math:: - dst.x = partialx(src.x) - - dst.y = partialx(src.y) - - dst.z = partialx(src.z) - - dst.w = partialx(src.w) + dst.x &= partialx(src.x) \\ + dst.y &= partialx(src.y) \\ + dst.z &= partialx(src.z) \\ + dst.w &= partialx(src.w) .. opcode:: DDY, DDY_FINE - Derivative Relative To Y @@ -457,13 +397,10 @@ while DDY is allowed to be the same for the entire 2x2 quad. .. math:: - dst.x = partialy(src.x) - - dst.y = partialy(src.y) - - dst.z = partialy(src.z) - - dst.w = partialy(src.w) + dst.x &= partialy(src.x) \\ + dst.y &= partialy(src.y) \\ + dst.z &= partialy(src.z) \\ + dst.w &= partialy(src.w) .. opcode:: PK2H - Pack Two 16-bit Floats @@ -490,13 +427,10 @@ while DDY is allowed to be the same for the entire 2x2 quad. .. math:: - dst.x = 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.x} - src1.x - - dst.y = 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.y} - src1.y - - dst.z = 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.z} - src1.z - - dst.w = 1 + dst.x &= 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.x} - src1.x \\ + dst.y &= 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.y} - src1.y \\ + dst.z &= 2 \times \frac{src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z} {((src0.x)^2 + (src0.y)^2 + (src0.z)^2) \times src0.z} - src1.z \\ + dst.w &= 1 .. note:: @@ -507,13 +441,10 @@ while DDY is allowed to be the same for the entire 2x2 quad. .. math:: - dst.x = (src0.x == src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y == src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z == src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w == src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x == src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y == src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z == src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w == src1.w) ? \quad 1.0F : 0.0F .. opcode:: SFL - Set On False @@ -533,13 +464,10 @@ This instruction replicates its result. .. math:: - dst.x = (src0.x > src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y > src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z > src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w > src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x > src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y > src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z > src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w > src1.w) ? \quad 1.0F : 0.0F .. opcode:: SIN - Sine @@ -555,26 +483,20 @@ This instruction replicates its result. .. math:: - dst.x = (src0.x <= src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y <= src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z <= src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w <= src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x <= src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y <= src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z <= src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w <= src1.w) ? \quad 1.0F : 0.0F .. opcode:: SNE - Set On Not Equal .. math:: - dst.x = (src0.x != src1.x) ? \quad 1.0F : 0.0F - - dst.y = (src0.y != src1.y) ? \quad 1.0F : 0.0F - - dst.z = (src0.z != src1.z) ? \quad 1.0F : 0.0F - - dst.w = (src0.w != src1.w) ? \quad 1.0F : 0.0F + dst.x &= (src0.x != src1.x) ? \quad 1.0F : 0.0F \\ + dst.y &= (src0.y != src1.y) ? \quad 1.0F : 0.0F \\ + dst.z &= (src0.z != src1.z) ? \quad 1.0F : 0.0F \\ + dst.w &= (src0.w != src1.w) ? \quad 1.0F : 0.0F .. opcode:: STR - Set On True @@ -603,13 +525,11 @@ This instruction replicates its result. .. math:: - coord = src0 - - shadow_ref = src0.z \quad or \quad src0.w (optional) + coord &= src0 \\ + shadow\_ref &= src0.z \quad or \quad src0.w (optional) \\ + unit &= src1 - unit = src1 - - dst = texture\_sample(unit, coord, shadow_ref) + dst = texture\_sample(unit, coord, shadow\_ref) .. opcode:: TEX2 - Texture Lookup (for shadow cube map arrays only) @@ -619,28 +539,21 @@ This instruction replicates its result. .. math:: - coord = src0 - - shadow_ref = src1.x - - unit = src2 - - dst = texture\_sample(unit, coord, shadow_ref) - + coord &= src0 \\ + shadow\_ref &= src1.x \\ + unit &= src2 + dst = texture\_sample(unit, coord, shadow\_ref) .. opcode:: TXD - Texture Lookup with Derivatives .. math:: - coord = src0 - - ddx = src1 - - ddy = src2 - - unit = src3 + coord &= src0 \\ + ddx &= src1 \\ + ddy &= src2 \\ + unit &= src3 dst = texture\_sample\_deriv(unit, coord, ddx, ddy) @@ -649,15 +562,11 @@ This instruction replicates its result. .. math:: - coord.x = \frac{src0.x}{src0.w} - - coord.y = \frac{src0.y}{src0.w} - - coord.z = \frac{src0.z}{src0.w} - - coord.w = src0.w - - unit = src1 + coord.x &= \frac{src0.x}{src0.w} \\ + coord.y &= \frac{src0.y}{src0.w} \\ + coord.z &= \frac{src0.z}{src0.w} \\ + coord.w &= src0.w \\ + unit &= src1 dst = texture\_sample(unit, coord) @@ -698,13 +607,10 @@ This instruction replicates its result. .. math:: - dst.x = src0.x + src1.x \times src2.x + src1.y \times src2.y - - dst.y = src0.y + src1.x \times src2.z + src1.y \times src2.w - - dst.z = src0.x + src1.x \times src2.x + src1.y \times src2.y - - dst.w = src0.y + src1.x \times src2.z + src1.y \times src2.w + dst.x &= src0.x + src1.x \times src2.x + src1.y \times src2.y \\ + dst.y &= src0.y + src1.x \times src2.z + src1.y \times src2.w \\ + dst.z &= src0.x + src1.x \times src2.x + src1.y \times src2.y \\ + dst.w &= src0.y + src1.x \times src2.z + src1.y \times src2.w .. note:: @@ -723,39 +629,30 @@ This instruction replicates its result. .. math:: - dst.x = round(src.x) - - dst.y = round(src.y) - - dst.z = round(src.z) - - dst.w = round(src.w) + dst.x &= round(src.x) \\ + dst.y &= round(src.y) \\ + dst.z &= round(src.z) \\ + dst.w &= round(src.w) .. opcode:: SSG - Set Sign .. math:: - dst.x = (src.x > 0) ? \quad 1 : ((src.x < 0) ? \quad -1 : 0) - - dst.y = (src.y > 0) ? \quad 1 : ((src.y < 0) ? \quad -1 : 0) - - dst.z = (src.z > 0) ? \quad 1 : ((src.z < 0) ? \quad -1 : 0) - - dst.w = (src.w > 0) ? \quad 1 : ((src.w < 0) ? \quad -1 : 0) + dst.x &= (src.x > 0) ? \quad 1 : ((src.x < 0) ? \quad -1 : 0) \\ + dst.y &= (src.y > 0) ? \quad 1 : ((src.y < 0) ? \quad -1 : 0) \\ + dst.z &= (src.z > 0) ? \quad 1 : ((src.z < 0) ? \quad -1 : 0) \\ + dst.w &= (src.w > 0) ? \quad 1 : ((src.w < 0) ? \quad -1 : 0) .. opcode:: CMP - Compare .. math:: - dst.x = (src0.x < 0) ? \quad src1.x : src2.x - - dst.y = (src0.y < 0) ? \quad src1.y : src2.y - - dst.z = (src0.z < 0) ? \quad src1.z : src2.z - - dst.w = (src0.w < 0) ? \quad src1.w : src2.w + dst.x &= (src0.x < 0) ? \quad src1.x : src2.x \\ + dst.y &= (src0.y < 0) ? \quad src1.y : src2.y \\ + dst.z &= (src0.z < 0) ? \quad src1.z : src2.z \\ + dst.w &= (src0.w < 0) ? \quad src1.w : src2.w .. opcode:: KILL_IF - Conditional Discard @@ -778,13 +675,10 @@ This instruction replicates its result. .. math:: - dst.x = \cos{(src.x)} - - dst.y = \sin{(src.x)} - - dst.z = 0 - - dst.w = 1 + dst.x &= \cos{(src.x)} \\ + dst.y &= \sin{(src.x)} \\ + dst.z &= 0 \\ + dst.w &= 1 .. opcode:: TXB - Texture Lookup With Bias @@ -798,17 +692,12 @@ This instruction replicates its result. .. math:: - coord.x = src0.x - - coord.y = src0.y - - coord.z = src0.z - - coord.w = none - - bias = src0.w - - unit = src1 + coord.x &= src0.x \\ + coord.y &= src0.y \\ + coord.z &= src0.z \\ + coord.w &= none \\ + bias &= src0.w \\ + unit &= src1 dst = texture\_sample(unit, coord, bias) @@ -824,11 +713,9 @@ This instruction replicates its result. .. math:: - coord = src0 - - bias = src1.x - - unit = src2 + coord &= src0 \\ + bias &= src1.x \\ + unit &= src2 dst = texture\_sample(unit, coord, bias) @@ -837,26 +724,20 @@ This instruction replicates its result. .. math:: - dst.x = \frac{src.x} {(src.x)^2 + (src.y)^2 + (src.z)^2} - - dst.y = \frac{src.y} {(src.x)^2 + (src.y)^2 + (src.z)^2} - - dst.z = \frac{src.z} {(src.x)^2 + (src.y)^2 + (src.z)^2} - - dst.w = 1 + dst.x &= \frac{src.x} {(src.x)^2 + (src.y)^2 + (src.z)^2} \\ + dst.y &= \frac{src.y} {(src.x)^2 + (src.y)^2 + (src.z)^2} \\ + dst.z &= \frac{src.z} {(src.x)^2 + (src.y)^2 + (src.z)^2} \\ + dst.w &= 1 .. opcode:: DIV - Divide .. math:: - dst.x = \frac{src0.x}{src1.x} - - dst.y = \frac{src0.y}{src1.y} - - dst.z = \frac{src0.z}{src1.z} - - dst.w = \frac{src0.w}{src1.w} + dst.x &= \frac{src0.x}{src1.x} \\ + dst.y &= \frac{src0.y}{src1.y} \\ + dst.z &= \frac{src0.z}{src1.z} \\ + dst.w &= \frac{src0.w}{src1.w} .. opcode:: DP2 - 2-component Dot Product @@ -879,17 +760,12 @@ This instruction replicates its result. .. math:: - coord.x = src0.x - - coord.y = src0.y - - coord.z = src0.z - - coord.w = none - - lod = src0.w - - unit = src1 + coord.x &= src0.x \\ + coord.y &= src0.y \\ + coord.z &= src0.z \\ + coord.w &= none \\ + lod &= src0.w \\ + unit &= src1 dst = texture\_sample(unit, coord, lod) @@ -905,11 +781,9 @@ This instruction replicates its result. .. math:: - coord = src0 - - lod = src1.x - - unit = src2 + coord &= src0 \\ + lod &= src1.x \\ + unit &= src2 dst = texture\_sample(unit, coord, lod) @@ -979,39 +853,30 @@ XXX doesn't look like most of the opcodes really belong here. .. math:: - dst.x = \lceil src.x\rceil - - dst.y = \lceil src.y\rceil - - dst.z = \lceil src.z\rceil - - dst.w = \lceil src.w\rceil + dst.x &= \lceil src.x\rceil \\ + dst.y &= \lceil src.y\rceil \\ + dst.z &= \lceil src.z\rceil \\ + dst.w &= \lceil src.w\rceil .. opcode:: TRUNC - Truncate .. math:: - dst.x = trunc(src.x) - - dst.y = trunc(src.y) - - dst.z = trunc(src.z) - - dst.w = trunc(src.w) + dst.x &= trunc(src.x) \\ + dst.y &= trunc(src.y) \\ + dst.z &= trunc(src.z) \\ + dst.w &= trunc(src.w) .. opcode:: MOD - Modulus .. math:: - dst.x = src0.x \bmod src1.x - - dst.y = src0.y \bmod src1.y - - dst.z = src0.z \bmod src1.z - - dst.w = src0.w \bmod src1.w + dst.x &= src0.x \bmod src1.x \\ + dst.y &= src0.y \bmod src1.y \\ + dst.z &= src0.z \bmod src1.z \\ + dst.w &= src0.w \bmod src1.w .. opcode:: UARL - Integer Address Register Load @@ -1024,13 +889,10 @@ XXX doesn't look like most of the opcodes really belong here. .. math:: - dst.x = |src0.x - src1.x| + src2.x - - dst.y = |src0.y - src1.y| + src2.y - - dst.z = |src0.z - src1.z| + src2.z - - dst.w = |src0.w - src1.w| + src2.w + dst.x &= |src0.x - src1.x| + src2.x \\ + dst.y &= |src0.y - src1.y| + src2.y \\ + dst.z &= |src0.z - src1.z| + src2.z \\ + dst.w &= |src0.w - src1.w| + src2.w .. opcode:: TXF - Texel Fetch @@ -1060,13 +922,10 @@ XXX doesn't look like most of the opcodes really belong here. lod = src0.x - dst.x = texture\_width(unit, lod) - - dst.y = texture\_height(unit, lod) - - dst.z = texture\_depth(unit, lod) - - dst.w = texture\_levels(unit) + dst.x &= texture\_width(unit, lod) \\ + dst.y &= texture\_height(unit, lod) \\ + dst.z &= texture\_depth(unit, lod) \\ + dst.w &= texture\_levels(unit) .. opcode:: TG4 - Texture Gather @@ -1088,9 +947,8 @@ XXX doesn't look like most of the opcodes really belong here. .. math:: - coord = src0 - - component = src1 + coord &= src0 \\ + component &= src1 dst = texture\_gather4 (unit, coord, component) @@ -1098,9 +956,8 @@ XXX doesn't look like most of the opcodes really belong here. .. math:: - coord = src0 - - compare = src1 + coord &= src0 \\ + compare &= src1 dst = texture\_gather (uint, coord, compare) @@ -1129,13 +986,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (float) src.x - - dst.y = (float) src.y - - dst.z = (float) src.z - - dst.w = (float) src.w + dst.x &= (float) src.x \\ + dst.y &= (float) src.y \\ + dst.z &= (float) src.z \\ + dst.w &= (float) src.w .. opcode:: U2F - Unsigned Integer To Float @@ -1144,13 +998,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (float) src.x - - dst.y = (float) src.y - - dst.z = (float) src.z - - dst.w = (float) src.w + dst.x &= (float) src.x \\ + dst.y &= (float) src.y \\ + dst.z &= (float) src.z \\ + dst.w &= (float) src.w .. opcode:: F2I - Float to Signed Integer @@ -1160,13 +1011,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (int) src.x - - dst.y = (int) src.y - - dst.z = (int) src.z - - dst.w = (int) src.w + dst.x &= (int) src.x \\ + dst.y &= (int) src.y \\ + dst.z &= (int) src.z \\ + dst.w &= (int) src.w .. opcode:: F2U - Float to Unsigned Integer @@ -1176,13 +1024,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (unsigned) src.x - - dst.y = (unsigned) src.y - - dst.z = (unsigned) src.z - - dst.w = (unsigned) src.w + dst.x &= (unsigned) src.x \\ + dst.y &= (unsigned) src.y \\ + dst.z &= (unsigned) src.z \\ + dst.w &= (unsigned) src.w .. opcode:: UADD - Integer Add @@ -1192,13 +1037,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x + src1.x - - dst.y = src0.y + src1.y - - dst.z = src0.z + src1.z - - dst.w = src0.w + src1.w + dst.x &= src0.x + src1.x \\ + dst.y &= src0.y + src1.y \\ + dst.z &= src0.z + src1.z \\ + dst.w &= src0.w + src1.w .. opcode:: UMAD - Integer Multiply And Add @@ -1208,13 +1050,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x \times src1.x + src2.x - - dst.y = src0.y \times src1.y + src2.y - - dst.z = src0.z \times src1.z + src2.z - - dst.w = src0.w \times src1.w + src2.w + dst.x &= src0.x \times src1.x + src2.x \\ + dst.y &= src0.y \times src1.y + src2.y \\ + dst.z &= src0.z \times src1.z + src2.z \\ + dst.w &= src0.w \times src1.w + src2.w .. opcode:: UMUL - Integer Multiply @@ -1224,13 +1063,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x \times src1.x - - dst.y = src0.y \times src1.y - - dst.z = src0.z \times src1.z - - dst.w = src0.w \times src1.w + dst.x &= src0.x \times src1.x \\ + dst.y &= src0.y \times src1.y \\ + dst.z &= src0.z \times src1.z \\ + dst.w &= src0.w \times src1.w .. opcode:: IMUL_HI - Signed Integer Multiply High Bits @@ -1239,13 +1075,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x \times src1.x) >> 32 - - dst.y = (src0.y \times src1.y) >> 32 - - dst.z = (src0.z \times src1.z) >> 32 - - dst.w = (src0.w \times src1.w) >> 32 + dst.x &= (src0.x \times src1.x) >> 32 \\ + dst.y &= (src0.y \times src1.y) >> 32 \\ + dst.z &= (src0.z \times src1.z) >> 32 \\ + dst.w &= (src0.w \times src1.w) >> 32 .. opcode:: UMUL_HI - Unsigned Integer Multiply High Bits @@ -1254,13 +1087,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x \times src1.x) >> 32 - - dst.y = (src0.y \times src1.y) >> 32 - - dst.z = (src0.z \times src1.z) >> 32 - - dst.w = (src0.w \times src1.w) >> 32 + dst.x &= (src0.x \times src1.x) >> 32 \\ + dst.y &= (src0.y \times src1.y) >> 32 \\ + dst.z &= (src0.z \times src1.z) >> 32 \\ + dst.w &= (src0.w \times src1.w) >> 32 .. opcode:: IDIV - Signed Integer Division @@ -1269,13 +1099,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = \frac{src0.x}{src1.x} - - dst.y = \frac{src0.y}{src1.y} - - dst.z = \frac{src0.z}{src1.z} - - dst.w = \frac{src0.w}{src1.w} + dst.x &= \frac{src0.x}{src1.x} \\ + dst.y &= \frac{src0.y}{src1.y} \\ + dst.z &= \frac{src0.z}{src1.z} \\ + dst.w &= \frac{src0.w}{src1.w} .. opcode:: UDIV - Unsigned Integer Division @@ -1284,13 +1111,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = \frac{src0.x}{src1.x} - - dst.y = \frac{src0.y}{src1.y} - - dst.z = \frac{src0.z}{src1.z} - - dst.w = \frac{src0.w}{src1.w} + dst.x &= \frac{src0.x}{src1.x} \\ + dst.y &= \frac{src0.y}{src1.y} \\ + dst.z &= \frac{src0.z}{src1.z} \\ + dst.w &= \frac{src0.w}{src1.w} .. opcode:: UMOD - Unsigned Integer Remainder @@ -1299,117 +1123,90 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x \quad \% \quad src1.x - - dst.y = src0.y \quad \% \quad src1.y - - dst.z = src0.z \quad \% \quad src1.z - - dst.w = src0.w \quad \% \quad src1.w + dst.x &= src0.x \quad \% \quad src1.x \\ + dst.y &= src0.y \quad \% \quad src1.y \\ + dst.z &= src0.z \quad \% \quad src1.z \\ + dst.w &= src0.w \quad \% \quad src1.w .. opcode:: NOT - Bitwise Not .. math:: - dst.x = \quad \sim (src.x) - - dst.y = \quad \sim (src.y) - - dst.z = \quad \sim (src.z) - - dst.w = \quad \sim (src.w) + dst.x &= \quad \sim (src.x) \\ + dst.y &= \quad \sim (src.y) \\ + dst.z &= \quad \sim (src.z) \\ + dst.w &= \quad \sim (src.w) .. opcode:: AND - Bitwise And .. math:: - dst.x = src0.x \quad \& \quad src1.x - - dst.y = src0.y \quad \& \quad src1.y - - dst.z = src0.z \quad \& \quad src1.z - - dst.w = src0.w \quad \& \quad src1.w + dst.x &= src0.x \quad \& \quad src1.x \\ + dst.y &= src0.y \quad \& \quad src1.y \\ + dst.z &= src0.z \quad \& \quad src1.z \\ + dst.w &= src0.w \quad \& \quad src1.w .. opcode:: OR - Bitwise Or .. math:: - dst.x = src0.x \quad | \quad src1.x - - dst.y = src0.y \quad | \quad src1.y - - dst.z = src0.z \quad | \quad src1.z - - dst.w = src0.w \quad | \quad src1.w + dst.x &= src0.x \quad | \quad src1.x \\ + dst.y &= src0.y \quad | \quad src1.y \\ + dst.z &= src0.z \quad | \quad src1.z \\ + dst.w &= src0.w \quad | \quad src1.w .. opcode:: XOR - Bitwise Xor .. math:: - dst.x = src0.x \oplus src1.x - - dst.y = src0.y \oplus src1.y - - dst.z = src0.z \oplus src1.z - - dst.w = src0.w \oplus src1.w + dst.x &= src0.x \oplus src1.x \\ + dst.y &= src0.y \oplus src1.y \\ + dst.z &= src0.z \oplus src1.z \\ + dst.w &= src0.w \oplus src1.w .. opcode:: IMAX - Maximum of Signed Integers .. math:: - dst.x = max(src0.x, src1.x) - - dst.y = max(src0.y, src1.y) - - dst.z = max(src0.z, src1.z) - - dst.w = max(src0.w, src1.w) + dst.x &= max(src0.x, src1.x) \\ + dst.y &= max(src0.y, src1.y) \\ + dst.z &= max(src0.z, src1.z) \\ + dst.w &= max(src0.w, src1.w) .. opcode:: UMAX - Maximum of Unsigned Integers .. math:: - dst.x = max(src0.x, src1.x) - - dst.y = max(src0.y, src1.y) - - dst.z = max(src0.z, src1.z) - - dst.w = max(src0.w, src1.w) + dst.x &= max(src0.x, src1.x) \\ + dst.y &= max(src0.y, src1.y) \\ + dst.z &= max(src0.z, src1.z) \\ + dst.w &= max(src0.w, src1.w) .. opcode:: IMIN - Minimum of Signed Integers .. math:: - dst.x = min(src0.x, src1.x) - - dst.y = min(src0.y, src1.y) - - dst.z = min(src0.z, src1.z) - - dst.w = min(src0.w, src1.w) + dst.x &= min(src0.x, src1.x) \\ + dst.y &= min(src0.y, src1.y) \\ + dst.z &= min(src0.z, src1.z) \\ + dst.w &= min(src0.w, src1.w) .. opcode:: UMIN - Minimum of Unsigned Integers .. math:: - dst.x = min(src0.x, src1.x) - - dst.y = min(src0.y, src1.y) - - dst.z = min(src0.z, src1.z) - - dst.w = min(src0.w, src1.w) + dst.x &= min(src0.x, src1.x) \\ + dst.y &= min(src0.y, src1.y) \\ + dst.z &= min(src0.z, src1.z) \\ + dst.w &= min(src0.w, src1.w) .. opcode:: SHL - Shift Left @@ -1418,13 +1215,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x << (0x1f \quad \& \quad src1.x) - - dst.y = src0.y << (0x1f \quad \& \quad src1.y) - - dst.z = src0.z << (0x1f \quad \& \quad src1.z) - - dst.w = src0.w << (0x1f \quad \& \quad src1.w) + dst.x &= src0.x << (0x1f \quad \& \quad src1.x) \\ + dst.y &= src0.y << (0x1f \quad \& \quad src1.y) \\ + dst.z &= src0.z << (0x1f \quad \& \quad src1.z) \\ + dst.w &= src0.w << (0x1f \quad \& \quad src1.w) .. opcode:: ISHR - Arithmetic Shift Right (of Signed Integer) @@ -1433,13 +1227,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x >> (0x1f \quad \& \quad src1.x) - - dst.y = src0.y >> (0x1f \quad \& \quad src1.y) - - dst.z = src0.z >> (0x1f \quad \& \quad src1.z) - - dst.w = src0.w >> (0x1f \quad \& \quad src1.w) + dst.x &= src0.x >> (0x1f \quad \& \quad src1.x) \\ + dst.y &= src0.y >> (0x1f \quad \& \quad src1.y) \\ + dst.z &= src0.z >> (0x1f \quad \& \quad src1.z) \\ + dst.w &= src0.w >> (0x1f \quad \& \quad src1.w) .. opcode:: USHR - Logical Shift Right @@ -1448,26 +1239,20 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = src0.x >> (unsigned) (0x1f \quad \& \quad src1.x) - - dst.y = src0.y >> (unsigned) (0x1f \quad \& \quad src1.y) - - dst.z = src0.z >> (unsigned) (0x1f \quad \& \quad src1.z) - - dst.w = src0.w >> (unsigned) (0x1f \quad \& \quad src1.w) + dst.x &= src0.x >> (unsigned) (0x1f \quad \& \quad src1.x) \\ + dst.y &= src0.y >> (unsigned) (0x1f \quad \& \quad src1.y) \\ + dst.z &= src0.z >> (unsigned) (0x1f \quad \& \quad src1.z) \\ + dst.w &= src0.w >> (unsigned) (0x1f \quad \& \quad src1.w) .. opcode:: UCMP - Integer Conditional Move .. math:: - dst.x = src0.x ? \quad src1.x : src2.x - - dst.y = src0.y ? \quad src1.y : src2.y - - dst.z = src0.z ? \quad src1.z : src2.z - - dst.w = src0.w ? \quad src1.w : src2.w + dst.x &= src0.x ? \quad src1.x : src2.x \\ + dst.y &= src0.y ? \quad src1.y : src2.y \\ + dst.z &= src0.z ? \quad src1.z : src2.z \\ + dst.w &= src0.w ? \quad src1.w : src2.w @@ -1475,13 +1260,10 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x < 0) ? \quad -1 : ((src0.x > 0) ? \quad 1 : 0) - - dst.y = (src0.y < 0) ? \quad -1 : ((src0.y > 0) ? \quad 1 : 0) - - dst.z = (src0.z < 0) ? \quad -1 : ((src0.z > 0) ? \quad 1 : 0) - - dst.w = (src0.w < 0) ? \quad -1 : ((src0.w > 0) ? \quad 1 : 0) + dst.x &= (src0.x < 0) ? \quad -1 : ((src0.x > 0) ? \quad 1 : 0) \\ + dst.y &= (src0.y < 0) ? \quad -1 : ((src0.y > 0) ? \quad 1 : 0) \\ + dst.z &= (src0.z < 0) ? \quad -1 : ((src0.z > 0) ? \quad 1 : 0) \\ + dst.w &= (src0.w < 0) ? \quad -1 : ((src0.w > 0) ? \quad 1 : 0) @@ -1491,39 +1273,30 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x < src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y < src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z < src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w < src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x < src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y < src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z < src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w < src1.w) ? \quad \sim 0 : 0 .. opcode:: ISLT - Signed Integer Set On Less Than .. math:: - dst.x = (src0.x < src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y < src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z < src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w < src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x < src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y < src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z < src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w < src1.w) ? \quad \sim 0 : 0 .. opcode:: USLT - Unsigned Integer Set On Less Than .. math:: - dst.x = (src0.x < src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y < src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z < src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w < src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x < src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y < src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z < src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w < src1.w) ? \quad \sim 0 : 0 .. opcode:: FSGE - Float Set On Greater Equal Than (ordered) @@ -1532,39 +1305,30 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x >= src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y >= src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z >= src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w >= src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x >= src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y >= src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z >= src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w >= src1.w) ? \quad \sim 0 : 0 .. opcode:: ISGE - Signed Integer Set On Greater Equal Than .. math:: - dst.x = (src0.x >= src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y >= src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z >= src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w >= src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x >= src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y >= src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z >= src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w >= src1.w) ? \quad \sim 0 : 0 .. opcode:: USGE - Unsigned Integer Set On Greater Equal Than .. math:: - dst.x = (src0.x >= src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y >= src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z >= src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w >= src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x >= src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y >= src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z >= src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w >= src1.w) ? \quad \sim 0 : 0 .. opcode:: FSEQ - Float Set On Equal (ordered) @@ -1573,26 +1337,20 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x == src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y == src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z == src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w == src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x == src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y == src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z == src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w == src1.w) ? \quad \sim 0 : 0 .. opcode:: USEQ - Integer Set On Equal .. math:: - dst.x = (src0.x == src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y == src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z == src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w == src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x == src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y == src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z == src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w == src1.w) ? \quad \sim 0 : 0 .. opcode:: FSNE - Float Set On Not Equal (unordered) @@ -1601,26 +1359,20 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = (src0.x != src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y != src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z != src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w != src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x != src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y != src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z != src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w != src1.w) ? \quad \sim 0 : 0 .. opcode:: USNE - Integer Set On Not Equal .. math:: - dst.x = (src0.x != src1.x) ? \quad \sim 0 : 0 - - dst.y = (src0.y != src1.y) ? \quad \sim 0 : 0 - - dst.z = (src0.z != src1.z) ? \quad \sim 0 : 0 - - dst.w = (src0.w != src1.w) ? \quad \sim 0 : 0 + dst.x &= (src0.x != src1.x) ? \quad \sim 0 : 0 \\ + dst.y &= (src0.y != src1.y) ? \quad \sim 0 : 0 \\ + dst.z &= (src0.z != src1.z) ? \quad \sim 0 : 0 \\ + dst.w &= (src0.w != src1.w) ? \quad \sim 0 : 0 .. opcode:: INEG - Integer Negate @@ -1629,26 +1381,20 @@ Support for these opcodes indicated by PIPE_SHADER_CAP_INTEGERS (all of them?) .. math:: - dst.x = -src.x - - dst.y = -src.y - - dst.z = -src.z - - dst.w = -src.w + dst.x &= -src.x \\ + dst.y &= -src.y \\ + dst.z &= -src.z \\ + dst.w &= -src.w .. opcode:: IABS - Integer Absolute Value .. math:: - dst.x = |src.x| - - dst.y = |src.y| - - dst.z = |src.z| - - dst.w = |src.w| + dst.x &= |src.x| \\ + dst.y &= |src.y| \\ + dst.z &= |src.z| \\ + dst.w &= |src.w| Bitwise ISA ^^^^^^^^^^^ @@ -1933,42 +1679,37 @@ Support for these opcodes is XXX undecided. :T .. math:: - dst.xy = src0.xy + src1.xy - - dst.zw = src0.zw + src1.zw + dst.xy &= src0.xy + src1.xy \\ + dst.zw &= src0.zw + src1.zw .. opcode:: DDIV - Divide .. math:: - dst.xy = \frac{src0.xy}{src1.xy} - - dst.zw = \frac{src0.zw}{src1.zw} + dst.xy &= \frac{src0.xy}{src1.xy} \\ + dst.zw &= \frac{src0.zw}{src1.zw} .. opcode:: DSEQ - Set on Equal .. math:: - dst.xy = src0.xy == src1.xy ? \quad 1.0F : 0.0F - - dst.zw = src0.zw == src1.zw ? \quad 1.0F : 0.0F + dst.xy &= src0.xy == src1.xy ? \quad 1.0F : 0.0F \\ + dst.zw &= src0.zw == src1.zw ? \quad 1.0F : 0.0F .. opcode:: DSLT - Set on Less than .. math:: - dst.xy = src0.xy < src1.xy ? \quad 1.0F : 0.0F - - dst.zw = src0.zw < src1.zw ? \quad 1.0F : 0.0F + dst.xy &= src0.xy < src1.xy ? \quad 1.0F : 0.0F \\ + dst.zw &= src0.zw < src1.zw ? \quad 1.0F : 0.0F .. opcode:: DFRAC - Fraction .. math:: - dst.xy = src.xy - \lfloor src.xy\rfloor - - dst.zw = src.zw - \lfloor src.zw\rfloor + dst.xy &= src.xy - \lfloor src.xy\rfloor \\ + dst.zw &= src.zw - \lfloor src.zw\rfloor .. opcode:: DFRACEXP - Convert Number to Fractional and Integral Components @@ -1979,13 +1720,10 @@ exponent of its source to ``dst0``, and the significand to ``dst1``, such that .. math:: - dst0.xy = exp(src.xy) - - dst1.xy = frac(src.xy) - - dst0.zw = exp(src.zw) - - dst1.zw = frac(src.zw) + dst0.xy &= exp(src.xy) \\ + dst1.xy &= frac(src.xy) \\ + dst0.zw &= exp(src.zw) \\ + dst1.zw &= frac(src.zw) .. opcode:: DLDEXP - Multiply Number by Integral Power of 2 @@ -1993,59 +1731,52 @@ This opcode is the inverse of :opcode:`DFRACEXP`. .. math:: - dst.xy = src0.xy \times 2^{src1.xy} - - dst.zw = src0.zw \times 2^{src1.zw} + dst.xy &= src0.xy \times 2^{src1.xy} \\ + dst.zw &= src0.zw \times 2^{src1.zw} .. opcode:: DMIN - Minimum .. math:: - dst.xy = min(src0.xy, src1.xy) - - dst.zw = min(src0.zw, src1.zw) + dst.xy &= min(src0.xy, src1.xy) \\ + dst.zw &= min(src0.zw, src1.zw) .. opcode:: DMAX - Maximum .. math:: - dst.xy = max(src0.xy, src1.xy) - - dst.zw = max(src0.zw, src1.zw) + dst.xy &= max(src0.xy, src1.xy) \\ + dst.zw &= max(src0.zw, src1.zw) .. opcode:: DMUL - Multiply .. math:: - dst.xy = src0.xy \times src1.xy - - dst.zw = src0.zw \times src1.zw + dst.xy &= src0.xy \times src1.xy \\ + dst.zw &= src0.zw \times src1.zw .. opcode:: DMAD - Multiply And Add .. math:: - dst.xy = src0.xy \times src1.xy + src2.xy - - dst.zw = src0.zw \times src1.zw + src2.zw + dst.xy &= src0.xy \times src1.xy + src2.xy \\ + dst.zw &= src0.zw \times src1.zw + src2.zw .. opcode:: DRCP - Reciprocal .. math:: - dst.xy = \frac{1}{src.xy} - - dst.zw = \frac{1}{src.zw} + dst.xy &= \frac{1}{src.xy} \\ + dst.zw &= \frac{1}{src.zw} .. opcode:: DSQRT - Square Root .. math:: - dst.xy = \sqrt{src.xy} - - dst.zw = \sqrt{src.zw} + dst.xy &= \sqrt{src.xy} \\ + dst.zw &= \sqrt{src.zw} .. _samplingopcodes: @@ -2350,9 +2081,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = dst_i + src_i + dst_i &= resource[offset]_i \\ + resource[offset]_i &= dst_i + src_i .. opcode:: ATOMXCHG - Atomic exchange @@ -2365,9 +2095,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = src_i + dst_i &= resource[offset]_i \\ + resource[offset]_i &= src_i .. opcode:: ATOMCAS - Atomic compare-and-exchange @@ -2380,9 +2109,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = (dst_i == cmp_i ? \quad src_i : dst_i) + dst_i &= resource[offset]_i \\ + resource[offset]_i &= (dst_i == cmp_i ? \quad src_i : dst_i) .. opcode:: ATOMAND - Atomic bitwise And @@ -2395,9 +2123,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = dst_i \& src_i + dst_i &= resource[offset]_i \\ + resource[offset]_i &= dst_i \& src_i .. opcode:: ATOMOR - Atomic bitwise Or @@ -2410,9 +2137,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = dst_i | src_i + dst_i &= resource[offset]_i \\ + resource[offset]_i &= dst_i | src_i .. opcode:: ATOMXOR - Atomic bitwise Xor @@ -2425,9 +2151,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = dst_i \oplus src_i + dst_i &= resource[offset]_i \\ + resource[offset]_i &= dst_i \oplus src_i .. opcode:: ATOMUMIN - Atomic unsigned minimum @@ -2440,9 +2165,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = (dst_i < src_i ? \quad dst_i : src_i) + dst_i &= resource[offset]_i \\ + resource[offset]_i &= (dst_i < src_i ? \quad dst_i : src_i) .. opcode:: ATOMUMAX - Atomic unsigned maximum @@ -2455,9 +2179,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = (dst_i > src_i ? \quad dst_i : src_i) + dst_i &= resource[offset]_i \\ + resource[offset]_i &= (dst_i > src_i ? \quad dst_i : src_i) .. opcode:: ATOMIMIN - Atomic signed minimum @@ -2470,9 +2193,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = (dst_i < src_i ? \quad dst_i : src_i) + dst_i &= resource[offset]_i \\ + resource[offset]_i &= (dst_i < src_i ? \quad dst_i : src_i) .. opcode:: ATOMIMAX - Atomic signed maximum @@ -2485,9 +2207,8 @@ For the moment they're only valid in compute programs. .. math:: - dst_i = resource[offset]_i - - resource[offset]_i = (dst_i > src_i ? \quad dst_i : src_i) + dst_i &= resource[offset]_i \\ + resource[offset]_i &= (dst_i > src_i ? \quad dst_i : src_i) -- 1.7.3.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev