mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-04 15:44:06 +08:00
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 <zackr@vmware.com> Reviewed-by: José Fonseca <jfonseca@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
1dfea559c3
commit
999cd79c9e
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
---------------
|
||||
|
Loading…
Reference in New Issue
Block a user