From 995c00dbea1099a223758604f8dfcc68f11d1085 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Mon, 15 May 2023 15:53:46 -0700 Subject: [PATCH] glsl: Delete dead intrinsics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Alyssa Rosenzweig Reviewed-by: Marek Olšák Part-of: --- src/compiler/glsl/glsl_to_nir.cpp | 95 ------------------------------- src/compiler/glsl/ir.h | 17 ------ 2 files changed, 112 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 00e787aacfe..5b5bfd75c4c 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -1168,68 +1168,6 @@ nir_visitor::visit(ir_call *ir) ? nir_intrinsic_scoped_barrier : nir_intrinsic_memory_barrier_shared; break; - case ir_intrinsic_shared_load: - op = nir_intrinsic_load_shared; - break; - case ir_intrinsic_shared_store: - op = nir_intrinsic_store_shared; - break; - case ir_intrinsic_shared_atomic_add: - op = nir_intrinsic_shared_atomic; - atomic_op = ir->return_deref->type->is_integer_32_64() - ? nir_atomic_op_iadd - : nir_atomic_op_fadd; - break; - case ir_intrinsic_shared_atomic_and: - op = nir_intrinsic_shared_atomic; - atomic_op = nir_atomic_op_iand; - break; - case ir_intrinsic_shared_atomic_or: - op = nir_intrinsic_shared_atomic; - atomic_op = nir_atomic_op_ior; - break; - case ir_intrinsic_shared_atomic_xor: - op = nir_intrinsic_shared_atomic; - atomic_op = nir_atomic_op_ixor; - break; - case ir_intrinsic_shared_atomic_min: - assert(ir->return_deref); - op = nir_intrinsic_shared_atomic; - if (ir->return_deref->type == glsl_type::int_type || - ir->return_deref->type == glsl_type::int64_t_type) - atomic_op = nir_atomic_op_imin; - else if (ir->return_deref->type == glsl_type::uint_type || - ir->return_deref->type == glsl_type::uint64_t_type) - atomic_op = nir_atomic_op_umin; - else if (ir->return_deref->type == glsl_type::float_type) - atomic_op = nir_atomic_op_fmin; - else - unreachable("Invalid type"); - break; - case ir_intrinsic_shared_atomic_max: - assert(ir->return_deref); - op = nir_intrinsic_shared_atomic; - if (ir->return_deref->type == glsl_type::int_type || - ir->return_deref->type == glsl_type::int64_t_type) - atomic_op = nir_atomic_op_imax; - else if (ir->return_deref->type == glsl_type::uint_type || - ir->return_deref->type == glsl_type::uint64_t_type) - atomic_op = nir_atomic_op_umax; - else if (ir->return_deref->type == glsl_type::float_type) - atomic_op = nir_atomic_op_fmax; - else - unreachable("Invalid type"); - break; - case ir_intrinsic_shared_atomic_exchange: - op = nir_intrinsic_shared_atomic; - atomic_op = nir_atomic_op_xchg; - break; - case ir_intrinsic_shared_atomic_comp_swap: - op = nir_intrinsic_shared_atomic_swap; - atomic_op = ir->return_deref->type->is_integer_32_64() - ? nir_atomic_op_cmpxchg - : nir_atomic_op_fcmpxchg; - break; case ir_intrinsic_vote_any: op = nir_intrinsic_vote_any; break; @@ -1620,39 +1558,6 @@ nir_visitor::visit(ir_call *ir) nir_builder_instr_insert(&b, &instr->instr); break; } - case nir_intrinsic_shared_atomic: - case nir_intrinsic_shared_atomic_swap: { - int param_count = ir->actual_parameters.length(); - assert(param_count == 2 || param_count == 3); - - /* Offset */ - exec_node *param = ir->actual_parameters.get_head(); - ir_instruction *inst = (ir_instruction *) param; - instr->src[0] = nir_src_for_ssa(evaluate_rvalue(inst->as_rvalue())); - - /* data1 parameter (this is always present) */ - param = param->get_next(); - inst = (ir_instruction *) param; - instr->src[1] = nir_src_for_ssa(evaluate_rvalue(inst->as_rvalue())); - - /* data2 parameter (only with atomic_comp_swap) */ - if (param_count == 3) { - assert(op == nir_intrinsic_shared_atomic_swap); - param = param->get_next(); - inst = (ir_instruction *) param; - instr->src[2] = - nir_src_for_ssa(evaluate_rvalue(inst->as_rvalue())); - } - - /* Atomic result */ - assert(ir->return_deref); - unsigned bit_size = glsl_get_bit_size(ir->return_deref->type); - nir_ssa_dest_init(&instr->instr, &instr->dest, - ir->return_deref->type->vector_elements, bit_size); - nir_intrinsic_set_atomic_op(instr, atomic_op); - nir_builder_instr_insert(&b, &instr->instr); - break; - } case nir_intrinsic_vote_ieq: instr->num_components = 1; FALLTHROUGH; diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h index 38ede7e4452..41b81adf1a2 100644 --- a/src/compiler/glsl/ir.h +++ b/src/compiler/glsl/ir.h @@ -1069,12 +1069,6 @@ public: */ typedef bool (*builtin_available_predicate)(const _mesa_glsl_parse_state *); -#define MAKE_INTRINSIC_FOR_TYPE(op, t) \ - ir_intrinsic_generic_ ## op - ir_intrinsic_generic_load + ir_intrinsic_ ## t ## _ ## load - -#define MAP_INTRINSIC_TO_TYPE(i, t) \ - ir_intrinsic_id(int(i) - int(ir_intrinsic_generic_load) + int(ir_intrinsic_ ## t ## _ ## load)) - enum ir_intrinsic_id { ir_intrinsic_invalid = 0, @@ -1144,17 +1138,6 @@ enum ir_intrinsic_id { ir_intrinsic_helper_invocation, - ir_intrinsic_shared_load, - ir_intrinsic_shared_store = MAKE_INTRINSIC_FOR_TYPE(store, shared), - ir_intrinsic_shared_atomic_add = MAKE_INTRINSIC_FOR_TYPE(atomic_add, shared), - ir_intrinsic_shared_atomic_and = MAKE_INTRINSIC_FOR_TYPE(atomic_and, shared), - ir_intrinsic_shared_atomic_or = MAKE_INTRINSIC_FOR_TYPE(atomic_or, shared), - ir_intrinsic_shared_atomic_xor = MAKE_INTRINSIC_FOR_TYPE(atomic_xor, shared), - ir_intrinsic_shared_atomic_min = MAKE_INTRINSIC_FOR_TYPE(atomic_min, shared), - ir_intrinsic_shared_atomic_max = MAKE_INTRINSIC_FOR_TYPE(atomic_max, shared), - ir_intrinsic_shared_atomic_exchange = MAKE_INTRINSIC_FOR_TYPE(atomic_exchange, shared), - ir_intrinsic_shared_atomic_comp_swap = MAKE_INTRINSIC_FOR_TYPE(atomic_comp_swap, shared), - ir_intrinsic_is_sparse_texels_resident, };