nir: add atomic isub

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37702>
This commit is contained in:
Georg Lehmann 2025-10-04 14:09:10 +02:00 committed by Marge Bot
parent 2bfc62e825
commit b0d3db3733
4 changed files with 10 additions and 0 deletions

View file

@ -3804,6 +3804,8 @@ nir_atomic_op_to_alu(nir_atomic_op op)
switch (op) {
case nir_atomic_op_iadd:
return nir_op_iadd;
case nir_atomic_op_isub:
return nir_op_isub;
case nir_atomic_op_imin:
return nir_op_imin;
case nir_atomic_op_umin:

View file

@ -1251,6 +1251,7 @@ nir_op nir_type_conversion_op(nir_alu_type src, nir_alu_type dst,
*/
typedef enum {
nir_atomic_op_iadd,
nir_atomic_op_isub,
nir_atomic_op_imin,
nir_atomic_op_umin,
nir_atomic_op_imax,
@ -1284,6 +1285,7 @@ nir_atomic_op_type(nir_atomic_op op)
return nir_type_float;
case nir_atomic_op_iadd:
case nir_atomic_op_isub:
case nir_atomic_op_iand:
case nir_atomic_op_ior:
case nir_atomic_op_ixor:

View file

@ -191,6 +191,9 @@ static void
reduce_data(nir_builder *b, nir_op op, nir_def *data,
nir_def **reduce, nir_def **scan)
{
if (op == nir_op_isub)
op = nir_op_iadd;
if (scan) {
*scan = nir_exclusive_scan(b, data, .reduction_op = op);
if (reduce) {

View file

@ -1268,6 +1268,9 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state)
case nir_atomic_op_iadd:
fprintf(fp, "iadd");
break;
case nir_atomic_op_isub:
fprintf(fp, "isub");
break;
case nir_atomic_op_imin:
fprintf(fp, "imin");
break;