CASE(store)
CASE(atomic)
CASE(atomic_swap)
- CASE(atomic_add)
- CASE(atomic_imin)
- CASE(atomic_umin)
- CASE(atomic_imax)
- CASE(atomic_umax)
- CASE(atomic_and)
- CASE(atomic_or)
- CASE(atomic_xor)
- CASE(atomic_exchange)
- CASE(atomic_comp_swap)
- CASE(atomic_fadd)
- CASE(atomic_fmin)
- CASE(atomic_fmax)
- CASE(atomic_inc_wrap)
- CASE(atomic_dec_wrap)
CASE(size)
CASE(samples)
CASE(load_raw_intel)
case nir_intrinsic_load_scratch:
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_fcomp_swap:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_xor:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_fmin:
- case nir_intrinsic_image_atomic_fmax:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_dec_wrap:
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_xor:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_fmax:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
case nir_intrinsic_shared_atomic:
case nir_intrinsic_shared_atomic_swap:
- case nir_intrinsic_shared_atomic_add:
- case nir_intrinsic_shared_atomic_imin:
- case nir_intrinsic_shared_atomic_umin:
- case nir_intrinsic_shared_atomic_imax:
- case nir_intrinsic_shared_atomic_umax:
- case nir_intrinsic_shared_atomic_and:
- case nir_intrinsic_shared_atomic_or:
- case nir_intrinsic_shared_atomic_xor:
- case nir_intrinsic_shared_atomic_exchange:
- case nir_intrinsic_shared_atomic_comp_swap:
- case nir_intrinsic_shared_atomic_fadd:
- case nir_intrinsic_shared_atomic_fmin:
- case nir_intrinsic_shared_atomic_fmax:
- case nir_intrinsic_shared_atomic_fcomp_swap:
case nir_intrinsic_task_payload_atomic:
case nir_intrinsic_task_payload_atomic_swap:
- case nir_intrinsic_task_payload_atomic_add:
- case nir_intrinsic_task_payload_atomic_imin:
- case nir_intrinsic_task_payload_atomic_umin:
- case nir_intrinsic_task_payload_atomic_imax:
- case nir_intrinsic_task_payload_atomic_umax:
- case nir_intrinsic_task_payload_atomic_and:
- case nir_intrinsic_task_payload_atomic_or:
- case nir_intrinsic_task_payload_atomic_xor:
- case nir_intrinsic_task_payload_atomic_exchange:
- case nir_intrinsic_task_payload_atomic_comp_swap:
- case nir_intrinsic_task_payload_atomic_fadd:
- case nir_intrinsic_task_payload_atomic_fmin:
- case nir_intrinsic_task_payload_atomic_fmax:
- case nir_intrinsic_task_payload_atomic_fcomp_swap:
case nir_intrinsic_global_atomic:
case nir_intrinsic_global_atomic_swap:
- case nir_intrinsic_global_atomic_add:
- case nir_intrinsic_global_atomic_imin:
- case nir_intrinsic_global_atomic_umin:
- case nir_intrinsic_global_atomic_imax:
- case nir_intrinsic_global_atomic_umax:
- case nir_intrinsic_global_atomic_and:
- case nir_intrinsic_global_atomic_or:
- case nir_intrinsic_global_atomic_xor:
- case nir_intrinsic_global_atomic_exchange:
- case nir_intrinsic_global_atomic_comp_swap:
- case nir_intrinsic_global_atomic_fadd:
- case nir_intrinsic_global_atomic_fmin:
- case nir_intrinsic_global_atomic_fmax:
- case nir_intrinsic_global_atomic_fcomp_swap:
case nir_intrinsic_global_atomic_amd:
case nir_intrinsic_global_atomic_swap_amd:
- case nir_intrinsic_global_atomic_add_amd:
- case nir_intrinsic_global_atomic_imin_amd:
- case nir_intrinsic_global_atomic_umin_amd:
- case nir_intrinsic_global_atomic_imax_amd:
- case nir_intrinsic_global_atomic_umax_amd:
- case nir_intrinsic_global_atomic_and_amd:
- case nir_intrinsic_global_atomic_or_amd:
- case nir_intrinsic_global_atomic_xor_amd:
- case nir_intrinsic_global_atomic_exchange_amd:
- case nir_intrinsic_global_atomic_comp_swap_amd:
- case nir_intrinsic_global_atomic_fadd_amd:
- case nir_intrinsic_global_atomic_fmin_amd:
- case nir_intrinsic_global_atomic_fmax_amd:
- case nir_intrinsic_global_atomic_fcomp_swap_amd:
case nir_intrinsic_global_atomic_2x32:
case nir_intrinsic_global_atomic_swap_2x32:
- case nir_intrinsic_global_atomic_add_2x32:
- case nir_intrinsic_global_atomic_imin_2x32:
- case nir_intrinsic_global_atomic_umin_2x32:
- case nir_intrinsic_global_atomic_imax_2x32:
- case nir_intrinsic_global_atomic_umax_2x32:
- case nir_intrinsic_global_atomic_and_2x32:
- case nir_intrinsic_global_atomic_or_2x32:
- case nir_intrinsic_global_atomic_xor_2x32:
- case nir_intrinsic_global_atomic_exchange_2x32:
- case nir_intrinsic_global_atomic_comp_swap_2x32:
- case nir_intrinsic_global_atomic_fadd_2x32:
- case nir_intrinsic_global_atomic_fmin_2x32:
- case nir_intrinsic_global_atomic_fmax_2x32:
- case nir_intrinsic_global_atomic_fcomp_swap_2x32:
case nir_intrinsic_atomic_counter_add:
case nir_intrinsic_atomic_counter_min:
case nir_intrinsic_atomic_counter_max:
case nir_intrinsic_atomic_counter_comp_swap_deref:
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_xor:
case nir_intrinsic_bindless_image_store:
case nir_intrinsic_bindless_image_store_raw_intel:
case nir_intrinsic_global_atomic:
case nir_intrinsic_global_atomic_swap:
- case nir_intrinsic_global_atomic_add:
- case nir_intrinsic_global_atomic_and:
- case nir_intrinsic_global_atomic_comp_swap:
- case nir_intrinsic_global_atomic_exchange:
- case nir_intrinsic_global_atomic_fadd:
- case nir_intrinsic_global_atomic_fcomp_swap:
- case nir_intrinsic_global_atomic_fmax:
- case nir_intrinsic_global_atomic_fmin:
- case nir_intrinsic_global_atomic_imax:
- case nir_intrinsic_global_atomic_imin:
- case nir_intrinsic_global_atomic_or:
- case nir_intrinsic_global_atomic_umax:
- case nir_intrinsic_global_atomic_umin:
- case nir_intrinsic_global_atomic_xor:
case nir_intrinsic_global_atomic_ir3:
case nir_intrinsic_global_atomic_swap_ir3:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_dec_wrap:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_xor:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_xor:
case nir_intrinsic_image_deref_store:
case nir_intrinsic_image_deref_store_raw_intel:
case nir_intrinsic_image_store:
case nir_intrinsic_ssbo_atomic_swap:
case nir_intrinsic_ssbo_atomic_ir3:
case nir_intrinsic_ssbo_atomic_swap_ir3:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_xor:
case nir_intrinsic_store_global:
case nir_intrinsic_store_global_ir3:
case nir_intrinsic_store_global_amd:
case nir_intrinsic_store_deref:
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_fcomp_swap:
return nir_deref_mode_may_be(nir_src_as_deref(instr->src[0]),
nir_var_mem_ssbo | nir_var_mem_global);
switch (instr->intrinsic) {
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmax:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_xor:
case nir_intrinsic_bindless_image_descriptor_amd:
case nir_intrinsic_bindless_image_format:
case nir_intrinsic_bindless_image_load:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
/* 0: SSBO index
* 1: offset
*/
case nir_intrinsic_global_atomic:
case nir_intrinsic_global_atomic_swap:
- case nir_intrinsic_global_atomic_add:
- case nir_intrinsic_global_atomic_imin:
- case nir_intrinsic_global_atomic_umin:
- case nir_intrinsic_global_atomic_imax:
- case nir_intrinsic_global_atomic_umax:
- case nir_intrinsic_global_atomic_and:
- case nir_intrinsic_global_atomic_or:
- case nir_intrinsic_global_atomic_xor:
- case nir_intrinsic_global_atomic_exchange:
- case nir_intrinsic_global_atomic_comp_swap:
- case nir_intrinsic_global_atomic_fadd:
- case nir_intrinsic_global_atomic_fmin:
- case nir_intrinsic_global_atomic_fmax:
- case nir_intrinsic_global_atomic_fcomp_swap:
case nir_intrinsic_load_global_constant:
case nir_intrinsic_load_global:
/* just assume we that 24b is not sufficient: */
/* These should all be small enough to unconditionally use imul24: */
case nir_intrinsic_shared_atomic:
case nir_intrinsic_shared_atomic_swap:
- case nir_intrinsic_shared_atomic_add:
- case nir_intrinsic_shared_atomic_imin:
- case nir_intrinsic_shared_atomic_umin:
- case nir_intrinsic_shared_atomic_imax:
- case nir_intrinsic_shared_atomic_umax:
- case nir_intrinsic_shared_atomic_and:
- case nir_intrinsic_shared_atomic_or:
- case nir_intrinsic_shared_atomic_xor:
- case nir_intrinsic_shared_atomic_exchange:
- case nir_intrinsic_shared_atomic_comp_swap:
- case nir_intrinsic_shared_atomic_fadd:
- case nir_intrinsic_shared_atomic_fmin:
- case nir_intrinsic_shared_atomic_fmax:
- case nir_intrinsic_shared_atomic_fcomp_swap:
case nir_intrinsic_load_uniform:
case nir_intrinsic_load_input:
case nir_intrinsic_load_output:
case nir_intrinsic_image_deref_store:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
case nir_intrinsic_image_deref_size:
case nir_intrinsic_image_deref_samples: {
if (!lower_image_derefs)
switch (intr->intrinsic) {
case nir_intrinsic_global_atomic:
case nir_intrinsic_global_atomic_swap:
- case nir_intrinsic_global_atomic_add:
- case nir_intrinsic_global_atomic_and:
- case nir_intrinsic_global_atomic_comp_swap:
- case nir_intrinsic_global_atomic_exchange:
- case nir_intrinsic_global_atomic_fadd:
- case nir_intrinsic_global_atomic_fcomp_swap:
- case nir_intrinsic_global_atomic_fmax:
- case nir_intrinsic_global_atomic_fmin:
- case nir_intrinsic_global_atomic_imax:
- case nir_intrinsic_global_atomic_imin:
- case nir_intrinsic_global_atomic_or:
- case nir_intrinsic_global_atomic_umax:
- case nir_intrinsic_global_atomic_umin:
- case nir_intrinsic_global_atomic_xor:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_dec_wrap:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_xor:
break;
case nir_intrinsic_store_global:
case nir_intrinsic_image_store:
nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
switch (intr->intrinsic) {
case nir_intrinsic_deref_atomic:
- case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fcomp_swap: {
+ case nir_intrinsic_deref_atomic_swap: {
nir_deref_instr *deref = nir_src_as_deref(intr->src[0]);
nir_variable *var = nir_deref_instr_get_variable(deref);
break;
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_xor:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_fmax:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_xor:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_fmin:
- case nir_intrinsic_image_atomic_fmax:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_dec_wrap:
if (options->fold_image_srcs)
progress |= fold_16bit_image_srcs(b, intrinsic, -1);
break;
break;
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
*modes = nir_src_as_deref(intrin->src[0])->modes;
*reads = true;
*writes = true;
break;
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fmin:
*modes = nir_var_mem_ssbo;
*reads = true;
*writes = true;
break;
case nir_intrinsic_global_atomic:
case nir_intrinsic_global_atomic_swap:
- case nir_intrinsic_global_atomic_add:
- case nir_intrinsic_global_atomic_imin:
- case nir_intrinsic_global_atomic_umin:
- case nir_intrinsic_global_atomic_imax:
- case nir_intrinsic_global_atomic_umax:
- case nir_intrinsic_global_atomic_and:
- case nir_intrinsic_global_atomic_or:
- case nir_intrinsic_global_atomic_xor:
- case nir_intrinsic_global_atomic_exchange:
- case nir_intrinsic_global_atomic_comp_swap:
- case nir_intrinsic_global_atomic_fadd:
- case nir_intrinsic_global_atomic_fcomp_swap:
- case nir_intrinsic_global_atomic_fmax:
- case nir_intrinsic_global_atomic_fmin:
*modes = nir_var_mem_global;
*reads = true;
*writes = true;
break;
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_fcomp_swap:
*modes = nir_src_as_deref(intrin->src[0])->modes;
*reads = true;
*writes = true;
switch (intrin->intrinsic) {
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
case nir_intrinsic_store_ssbo:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
case nir_intrinsic_store_shared:
case nir_intrinsic_store_shared2_amd:
case nir_intrinsic_shared_atomic:
case nir_intrinsic_shared_atomic_swap:
- case nir_intrinsic_shared_atomic_add:
- case nir_intrinsic_shared_atomic_imin:
- case nir_intrinsic_shared_atomic_umin:
- case nir_intrinsic_shared_atomic_imax:
- case nir_intrinsic_shared_atomic_umax:
- case nir_intrinsic_shared_atomic_and:
- case nir_intrinsic_shared_atomic_or:
- case nir_intrinsic_shared_atomic_xor:
- case nir_intrinsic_shared_atomic_exchange:
- case nir_intrinsic_shared_atomic_comp_swap:
case nir_intrinsic_task_payload_atomic:
case nir_intrinsic_task_payload_atomic_swap:
- case nir_intrinsic_task_payload_atomic_add:
- case nir_intrinsic_task_payload_atomic_imin:
- case nir_intrinsic_task_payload_atomic_umin:
- case nir_intrinsic_task_payload_atomic_imax:
- case nir_intrinsic_task_payload_atomic_umax:
- case nir_intrinsic_task_payload_atomic_and:
- case nir_intrinsic_task_payload_atomic_or:
- case nir_intrinsic_task_payload_atomic_xor:
- case nir_intrinsic_task_payload_atomic_exchange:
- case nir_intrinsic_task_payload_atomic_comp_swap:
- case nir_intrinsic_task_payload_atomic_fadd:
- case nir_intrinsic_task_payload_atomic_fmin:
- case nir_intrinsic_task_payload_atomic_fmax:
- case nir_intrinsic_task_payload_atomic_fcomp_swap:
case nir_intrinsic_image_deref_store:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
return true;
default:
case nir_intrinsic_load_ssbo:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
if ((options->types & nir_lower_non_uniform_ssbo_access) &&
lower_non_uniform_access_intrin(options, &b, intrin, 0))
progress = true;
case nir_intrinsic_image_store:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_xor:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_dec_wrap:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_fmin:
- case nir_intrinsic_image_atomic_fmax:
case nir_intrinsic_image_size:
case nir_intrinsic_image_samples:
case nir_intrinsic_image_samples_identical:
case nir_intrinsic_bindless_image_store:
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_xor:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_fmax:
case nir_intrinsic_bindless_image_size:
case nir_intrinsic_bindless_image_samples:
case nir_intrinsic_bindless_image_samples_identical:
case nir_intrinsic_image_deref_store:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
case nir_intrinsic_image_deref_size:
case nir_intrinsic_image_deref_samples:
case nir_intrinsic_image_deref_samples_identical:
return nir_intrinsic_global_atomic;
case nir_intrinsic_ssbo_atomic_swap:
return nir_intrinsic_global_atomic_swap;
- case nir_intrinsic_ssbo_atomic_add:
- return nir_intrinsic_global_atomic_add;
- case nir_intrinsic_ssbo_atomic_imin:
- return nir_intrinsic_global_atomic_imin;
- case nir_intrinsic_ssbo_atomic_umin:
- return nir_intrinsic_global_atomic_umin;
- case nir_intrinsic_ssbo_atomic_imax:
- return nir_intrinsic_global_atomic_imax;
- case nir_intrinsic_ssbo_atomic_umax:
- return nir_intrinsic_global_atomic_umax;
- case nir_intrinsic_ssbo_atomic_and:
- return nir_intrinsic_global_atomic_and;
- case nir_intrinsic_ssbo_atomic_or:
- return nir_intrinsic_global_atomic_or;
- case nir_intrinsic_ssbo_atomic_xor:
- return nir_intrinsic_global_atomic_xor;
- case nir_intrinsic_ssbo_atomic_exchange:
- return nir_intrinsic_global_atomic_exchange;
- case nir_intrinsic_ssbo_atomic_comp_swap:
- return nir_intrinsic_global_atomic_comp_swap;
-
- case nir_intrinsic_ssbo_atomic_fadd:
- return nir_intrinsic_global_atomic_fadd;
- case nir_intrinsic_ssbo_atomic_fmin:
- return nir_intrinsic_global_atomic_fmin;
- case nir_intrinsic_ssbo_atomic_fmax:
- return nir_intrinsic_global_atomic_fmax;
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
- return nir_intrinsic_global_atomic_fcomp_swap;
default:
unreachable("Invalid SSBO op");
case nir_intrinsic_store_ssbo:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
return true;
default:
return false;
case nir_intrinsic_image_deref_sparse_load:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
case nir_intrinsic_image_deref_samples_identical:
var = nir_intrinsic_get_var(instr, 0);
read = instr->intrinsic != nir_intrinsic_image_deref_store;
case nir_intrinsic_bindless_image_sparse_load:
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_xor:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_fmax:
case nir_intrinsic_bindless_image_samples_identical:
read = instr->intrinsic != nir_intrinsic_bindless_image_store;
write = instr->intrinsic != nir_intrinsic_bindless_image_load &&
case nir_intrinsic_load_deref:
case nir_intrinsic_store_deref:
case nir_intrinsic_deref_atomic:
- case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_fcomp_swap: {
+ case nir_intrinsic_deref_atomic_swap: {
nir_deref_instr *deref = nir_src_as_deref(instr->src[0]);
if (!nir_deref_mode_may_be(deref, nir_var_mem_ssbo | nir_var_mem_global))
break;
}
case nir_intrinsic_deref_atomic:
- case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap: {
+ case nir_intrinsic_deref_atomic_swap: {
nir_deref_instr *dst = nir_src_as_deref(intrin->src[0]);
combine_stores_with_deref(state, dst);
break;
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fcomp_swap:
case nir_intrinsic_store_deref:
case nir_intrinsic_copy_deref:
case nir_intrinsic_memcpy_deref: {
case nir_intrinsic_memcpy_deref:
case nir_intrinsic_deref_atomic:
case nir_intrinsic_deref_atomic_swap:
- case nir_intrinsic_deref_atomic_add:
- case nir_intrinsic_deref_atomic_fadd:
- case nir_intrinsic_deref_atomic_imin:
- case nir_intrinsic_deref_atomic_umin:
- case nir_intrinsic_deref_atomic_fmin:
- case nir_intrinsic_deref_atomic_imax:
- case nir_intrinsic_deref_atomic_umax:
- case nir_intrinsic_deref_atomic_fmax:
- case nir_intrinsic_deref_atomic_and:
- case nir_intrinsic_deref_atomic_or:
- case nir_intrinsic_deref_atomic_xor:
- case nir_intrinsic_deref_atomic_exchange:
- case nir_intrinsic_deref_atomic_comp_swap:
- case nir_intrinsic_deref_atomic_fcomp_swap:
if (debug) dump_instr(instr);
nir_deref_and_path dst = {nir_src_as_deref(intrin->src[0]), NULL};
STORE(nir_var_mem_global, global, -1, 1, -1, 0)
LOAD(nir_var_mem_task_payload, task_payload, -1, 0, -1)
STORE(nir_var_mem_task_payload, task_payload, -1, 1, -1, 0)
- ATOMIC(nir_var_mem_ssbo, ssbo, add, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, imin, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, umin, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, imax, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, umax, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, and, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, or, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, xor, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, exchange, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, comp_swap, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, fadd, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, fmin, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, fmax, 0, 1, -1, 2)
- ATOMIC(nir_var_mem_ssbo, ssbo, fcomp_swap, 0, 1, -1, 2)
NEW_ATOMIC(nir_var_mem_ssbo, ssbo, 0, 1, -1, 2)
- ATOMIC(0, deref, add, -1, -1, 0, 1)
- ATOMIC(0, deref, imin, -1, -1, 0, 1)
- ATOMIC(0, deref, umin, -1, -1, 0, 1)
- ATOMIC(0, deref, imax, -1, -1, 0, 1)
- ATOMIC(0, deref, umax, -1, -1, 0, 1)
- ATOMIC(0, deref, and, -1, -1, 0, 1)
- ATOMIC(0, deref, or, -1, -1, 0, 1)
- ATOMIC(0, deref, xor, -1, -1, 0, 1)
- ATOMIC(0, deref, exchange, -1, -1, 0, 1)
- ATOMIC(0, deref, comp_swap, -1, -1, 0, 1)
- ATOMIC(0, deref, fadd, -1, -1, 0, 1)
- ATOMIC(0, deref, fmin, -1, -1, 0, 1)
- ATOMIC(0, deref, fmax, -1, -1, 0, 1)
- ATOMIC(0, deref, fcomp_swap, -1, -1, 0, 1)
NEW_ATOMIC(0, deref, -1, -1, 0, 1)
- ATOMIC(nir_var_mem_shared, shared, add, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, imin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, umin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, imax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, umax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, and, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, or, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, xor, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, exchange, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, comp_swap, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, fadd, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, fmin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, fmax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_shared, shared, fcomp_swap, -1, 0, -1, 1)
NEW_ATOMIC(nir_var_mem_shared, shared, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, add, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, imin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, umin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, imax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, umax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, and, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, or, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, xor, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, exchange, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, comp_swap, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, fadd, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, fmin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, fmax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_global, global, fcomp_swap, -1, 0, -1, 1)
NEW_ATOMIC(nir_var_mem_global, global, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, add, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, imin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, umin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, imax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, umax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, and, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, or, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, xor, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, exchange, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, comp_swap, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, fadd, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, fmin, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, fmax, -1, 0, -1, 1)
- ATOMIC(nir_var_mem_task_payload, task_payload, fcomp_swap, -1, 0, -1, 1)
NEW_ATOMIC(nir_var_mem_task_payload, task_payload, -1, 0, -1, 1)
LOAD(nir_var_shader_temp, stack, -1, -1, -1)
STORE(nir_var_shader_temp, stack, -1, -1, -1, 0)
case nir_intrinsic_store_ssbo:
case nir_intrinsic_ssbo_atomic:
case nir_intrinsic_ssbo_atomic_swap:
- case nir_intrinsic_ssbo_atomic_add:
- case nir_intrinsic_ssbo_atomic_imin:
- case nir_intrinsic_ssbo_atomic_umin:
- case nir_intrinsic_ssbo_atomic_imax:
- case nir_intrinsic_ssbo_atomic_umax:
- case nir_intrinsic_ssbo_atomic_and:
- case nir_intrinsic_ssbo_atomic_or:
- case nir_intrinsic_ssbo_atomic_xor:
- case nir_intrinsic_ssbo_atomic_exchange:
- case nir_intrinsic_ssbo_atomic_comp_swap:
- case nir_intrinsic_ssbo_atomic_fadd:
- case nir_intrinsic_ssbo_atomic_fmin:
- case nir_intrinsic_ssbo_atomic_fmax:
- case nir_intrinsic_ssbo_atomic_fcomp_swap:
return true;
default:
case nir_intrinsic_image_store:
case nir_intrinsic_image_atomic:
case nir_intrinsic_image_atomic_swap:
- case nir_intrinsic_image_atomic_add:
- case nir_intrinsic_image_atomic_imin:
- case nir_intrinsic_image_atomic_umin:
- case nir_intrinsic_image_atomic_imax:
- case nir_intrinsic_image_atomic_umax:
- case nir_intrinsic_image_atomic_and:
- case nir_intrinsic_image_atomic_or:
- case nir_intrinsic_image_atomic_xor:
- case nir_intrinsic_image_atomic_exchange:
- case nir_intrinsic_image_atomic_comp_swap:
- case nir_intrinsic_image_atomic_inc_wrap:
- case nir_intrinsic_image_atomic_dec_wrap:
- case nir_intrinsic_image_atomic_fadd:
- case nir_intrinsic_image_atomic_fmin:
- case nir_intrinsic_image_atomic_fmax:
case nir_intrinsic_image_size:
case nir_intrinsic_image_samples:
case nir_intrinsic_image_fragment_mask_load_amd:
case nir_intrinsic_bindless_image_store:
case nir_intrinsic_bindless_image_atomic:
case nir_intrinsic_bindless_image_atomic_swap:
- case nir_intrinsic_bindless_image_atomic_add:
- case nir_intrinsic_bindless_image_atomic_imin:
- case nir_intrinsic_bindless_image_atomic_umin:
- case nir_intrinsic_bindless_image_atomic_imax:
- case nir_intrinsic_bindless_image_atomic_umax:
- case nir_intrinsic_bindless_image_atomic_and:
- case nir_intrinsic_bindless_image_atomic_or:
- case nir_intrinsic_bindless_image_atomic_xor:
- case nir_intrinsic_bindless_image_atomic_exchange:
- case nir_intrinsic_bindless_image_atomic_comp_swap:
- case nir_intrinsic_bindless_image_atomic_inc_wrap:
- case nir_intrinsic_bindless_image_atomic_dec_wrap:
- case nir_intrinsic_bindless_image_atomic_fadd:
- case nir_intrinsic_bindless_image_atomic_fmin:
- case nir_intrinsic_bindless_image_atomic_fmax:
case nir_intrinsic_bindless_image_size:
case nir_intrinsic_bindless_image_samples:
case nir_intrinsic_bindless_image_fragment_mask_load_amd:
case nir_intrinsic_image_deref_store:
case nir_intrinsic_image_deref_atomic:
case nir_intrinsic_image_deref_atomic_swap:
- case nir_intrinsic_image_deref_atomic_add:
- case nir_intrinsic_image_deref_atomic_umin:
- case nir_intrinsic_image_deref_atomic_imin:
- case nir_intrinsic_image_deref_atomic_umax:
- case nir_intrinsic_image_deref_atomic_imax:
- case nir_intrinsic_image_deref_atomic_and:
- case nir_intrinsic_image_deref_atomic_or:
- case nir_intrinsic_image_deref_atomic_xor:
- case nir_intrinsic_image_deref_atomic_exchange:
- case nir_intrinsic_image_deref_atomic_comp_swap:
- case nir_intrinsic_image_deref_atomic_inc_wrap:
- case nir_intrinsic_image_deref_atomic_dec_wrap:
- case nir_intrinsic_image_deref_atomic_fadd:
- case nir_intrinsic_image_deref_atomic_fmin:
- case nir_intrinsic_image_deref_atomic_fmax:
case nir_intrinsic_image_deref_size:
case nir_intrinsic_image_deref_samples:
case nir_intrinsic_image_deref_fragment_mask_load_amd: