+static void
+gather_push_constant_info(const nir_shader *nir,
+ const nir_intrinsic_instr *instr,
+ struct radv_shader_info *info)
+{
+ nir_const_value *cval = nir_src_as_const_value(instr->src[0]);
+ int base = nir_intrinsic_base(instr);
+ int range = nir_intrinsic_range(instr);
+
+ if (!cval) {
+ info->has_indirect_push_constants = true;
+ } else {
+ uint32_t min = base + cval->u32[0];
+ uint32_t max = min + instr->num_components * 4;
+
+ info->max_push_constant_used =
+ MAX2(max, info->max_push_constant_used);
+ info->min_push_constant_used =
+ MIN2(min, info->min_push_constant_used);
+ }
+
+ if (instr->dest.ssa.bit_size != 32)
+ info->has_only_32bit_push_constants = false;
+
+ info->loads_push_constants = true;
+}
+