Lines Matching refs:cast
30 is_trivial_deref_cast(nir_deref_instr *cast) in is_trivial_deref_cast() argument
32 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in is_trivial_deref_cast()
36 return cast->modes == parent->modes && in is_trivial_deref_cast()
37 cast->type == parent->type && in is_trivial_deref_cast()
38 cast->dest.ssa.num_components == parent->dest.ssa.num_components && in is_trivial_deref_cast()
39 cast->dest.ssa.bit_size == parent->dest.ssa.bit_size; in is_trivial_deref_cast()
261 return deref->cast.ptr_stride; in nir_deref_instr_array_stride()
723 new_deref->cast.ptr_stride = deref->cast.ptr_stride; in rematerialize_deref_in_block()
855 is_trivial_array_deref_cast(nir_deref_instr *cast) in is_trivial_array_deref_cast() argument
857 assert(is_trivial_deref_cast(cast)); in is_trivial_array_deref_cast()
859 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in is_trivial_array_deref_cast()
862 return cast->cast.ptr_stride == in is_trivial_array_deref_cast()
865 return cast->cast.ptr_stride == in is_trivial_array_deref_cast()
880 opt_remove_restricting_cast_alignments(nir_deref_instr *cast) in opt_remove_restricting_cast_alignments() argument
882 assert(cast->deref_type == nir_deref_type_cast); in opt_remove_restricting_cast_alignments()
883 if (cast->cast.align_mul == 0) in opt_remove_restricting_cast_alignments()
886 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in opt_remove_restricting_cast_alignments()
907 if (parent_mul < cast->cast.align_mul) in opt_remove_restricting_cast_alignments()
937 assert(cast->cast.align_mul <= parent_mul); in opt_remove_restricting_cast_alignments()
938 if (parent_offset % cast->cast.align_mul != cast->cast.align_offset) in opt_remove_restricting_cast_alignments()
944 cast->cast.align_mul = 0; in opt_remove_restricting_cast_alignments()
945 cast->cast.align_offset = 0; in opt_remove_restricting_cast_alignments()
953 opt_remove_cast_cast(nir_deref_instr *cast) in opt_remove_cast_cast() argument
955 nir_deref_instr *first_cast = cast; in opt_remove_cast_cast()
963 if (cast == first_cast) in opt_remove_cast_cast()
966 nir_instr_rewrite_src(&cast->instr, &cast->parent, in opt_remove_cast_cast()
996 opt_remove_sampler_cast(nir_deref_instr *cast) in opt_remove_sampler_cast() argument
998 assert(cast->deref_type == nir_deref_type_cast); in opt_remove_sampler_cast()
999 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in opt_remove_sampler_cast()
1007 const struct glsl_type *cast_type = cast->type; in opt_remove_sampler_cast()
1023 nir_ssa_def_rewrite_uses(&cast->dest.ssa, in opt_remove_sampler_cast()
1025 nir_instr_remove(&cast->instr); in opt_remove_sampler_cast()
1043 opt_replace_struct_wrapper_cast(nir_builder *b, nir_deref_instr *cast) in opt_replace_struct_wrapper_cast() argument
1045 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in opt_replace_struct_wrapper_cast()
1049 if (cast->cast.align_mul > 0) in opt_replace_struct_wrapper_cast()
1062 if (cast->type != glsl_get_struct_field(parent->type, 0)) in opt_replace_struct_wrapper_cast()
1066 nir_ssa_def_rewrite_uses(&cast->dest.ssa, &replace->dest.ssa); in opt_replace_struct_wrapper_cast()
1067 nir_deref_instr_remove_if_unused(cast); in opt_replace_struct_wrapper_cast()
1072 opt_deref_cast(nir_builder *b, nir_deref_instr *cast) in opt_deref_cast() argument
1076 progress |= opt_remove_restricting_cast_alignments(cast); in opt_deref_cast()
1078 if (opt_replace_struct_wrapper_cast(b, cast)) in opt_deref_cast()
1081 if (opt_remove_sampler_cast(cast)) in opt_deref_cast()
1084 progress |= opt_remove_cast_cast(cast); in opt_deref_cast()
1085 if (!is_trivial_deref_cast(cast)) in opt_deref_cast()
1091 if (cast->cast.align_mul > 0) in opt_deref_cast()
1094 bool trivial_array_cast = is_trivial_array_deref_cast(cast); in opt_deref_cast()
1096 assert(cast->dest.is_ssa); in opt_deref_cast()
1097 assert(cast->parent.is_ssa); in opt_deref_cast()
1099 nir_foreach_use_safe(use_src, &cast->dest.ssa) { in opt_deref_cast()
1107 nir_instr_rewrite_src(use_src->parent_instr, use_src, cast->parent); in opt_deref_cast()
1112 assert(list_is_empty(&cast->dest.ssa.if_uses)); in opt_deref_cast()
1114 if (nir_deref_instr_remove_if_unused(cast)) in opt_deref_cast()
1140 parent->cast.align_mul == 0 && in opt_deref_ptr_as_array()
1168 is_vector_bitcast_deref(nir_deref_instr *cast, in is_vector_bitcast_deref() argument
1172 if (cast->deref_type != nir_deref_type_cast) in is_vector_bitcast_deref()
1176 if (cast->cast.align_mul > 0) in is_vector_bitcast_deref()
1180 nir_deref_instr *parent = nir_src_as_deref(cast->parent); in is_vector_bitcast_deref()
1189 unsigned cast_bit_size = glsl_get_bit_size(cast->type); in is_vector_bitcast_deref()
1195 if (glsl_get_explicit_stride(cast->type) || in is_vector_bitcast_deref()