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:
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user