diff options
author | Zack Rusin <[email protected]> | 2013-04-28 10:50:55 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2013-05-02 02:43:42 -0400 |
commit | 999cd79c9e1a5dc2d3f126670a1ca7ea4e7ee128 (patch) | |
tree | 748b3794ce1a32d90a2ad8f8b6b3fc7c3967dcb9 | |
parent | 1dfea559c3f188a7a82a4abc09765ba09e939522 (diff) |
tgsi: allow negation of all integer types
It's valid because we reuse certain arithmetic operations
for both signed and unsigned types (e.g. uadd, umad, which
have a bit unfortunate naming)
Signed-off-by: Zack Rusin <[email protected]>
Reviewed-by: José Fonseca <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_tgsi.c | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_info.c | 3 | ||||
-rw-r--r-- | src/gallium/docs/source/tgsi.rst | 7 |
3 files changed, 4 insertions, 8 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c index 7255d979439..66ff14c888a 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.c @@ -339,9 +339,9 @@ lp_build_emit_fetch( assert(0); break; case TGSI_TYPE_SIGNED: + case TGSI_TYPE_UNSIGNED: res = lp_build_negate( &bld_base->int_bld, res ); break; - case TGSI_TYPE_UNSIGNED: case TGSI_TYPE_VOID: default: assert(0); diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c index d5db6b953ec..eec49a8d2ef 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_info.c +++ b/src/gallium/auxiliary/tgsi/tgsi_info.c @@ -280,6 +280,7 @@ tgsi_opcode_infer_src_type( uint opcode ) /* XXX some src args may be signed for SAD ? */ case TGSI_OPCODE_SAD: case TGSI_OPCODE_U2F: + case TGSI_OPCODE_UADD: case TGSI_OPCODE_UDIV: case TGSI_OPCODE_UMOD: case TGSI_OPCODE_UMAD: @@ -314,8 +315,6 @@ tgsi_opcode_infer_src_type( uint opcode ) case TGSI_OPCODE_IABS: case TGSI_OPCODE_ISSG: case TGSI_OPCODE_UARL: - /* UADD is both signed and unsigned require signed for working modifiers */ - case TGSI_OPCODE_UADD: return TGSI_TYPE_SIGNED; default: return TGSI_TYPE_FLOAT; diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst index 0a5b2274a9a..a528fd27688 100644 --- a/src/gallium/docs/source/tgsi.rst +++ b/src/gallium/docs/source/tgsi.rst @@ -32,11 +32,8 @@ For inputs which have a floating point type, both absolute value and negation modifiers are supported (with absolute value being applied first). TGSI_OPCODE_MOV is considered to have float input type for applying modifiers. -For inputs which have signed type only the negate modifier is supported. This -includes instructions which are otherwise ignorant if the type is signed or -unsigned, such as TGSI_OPCODE_UADD. - -For inputs with unsigned type no modifiers are allowed. +For inputs which have signed or unsigned type only the negate modifier is +supported. Instruction Set --------------- |