From: Zack Rusin Date: Sun, 28 Apr 2013 14:50:55 +0000 (-0400) Subject: tgsi: allow negation of all integer types X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=999cd79c9e1a5dc2d3f126670a1ca7ea4e7ee128;p=mesa.git 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 Reviewed-by: José Fonseca Reviewed-by: Roland Scheidegger --- 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 ---------------