Lines Matching defs:intrin
1070 split_64bit_subgroup_op(nir_builder *b, const nir_intrinsic_instr *intrin)
1072 const nir_intrinsic_info *info = &nir_intrinsic_infos[intrin->intrinsic];
1077 assert(intrin->src[0].is_ssa && intrin->src[0].ssa->bit_size == 64);
1079 nir_unpack_64_2x32_split_x(b, intrin->src[0].ssa),
1080 nir_unpack_64_2x32_split_y(b, intrin->src[0].ssa),
1083 assert(info->has_dest && intrin->dest.is_ssa &&
1084 intrin->dest.ssa.bit_size == 64);
1089 nir_intrinsic_instr_create(b->shader, intrin->intrinsic);
1090 split->num_components = intrin->num_components;
1095 assert(intrin->src[j].is_ssa && intrin->src[j].ssa->bit_size < 64);
1096 split->src[j] = nir_src_for_ssa(intrin->src[j].ssa);
1100 memcpy(split->const_index, intrin->const_index,
1101 sizeof(intrin->const_index));
1104 intrin->dest.ssa.num_components, 32, NULL);
1151 lower_scan_iadd64(nir_builder *b, const nir_intrinsic_instr *intrin)
1154 intrin->intrinsic == nir_intrinsic_reduce ?
1155 nir_intrinsic_cluster_size(intrin) : 0;
1163 assert(intrin->src[0].is_ssa);
1164 nir_ssa_def *x = intrin->src[0].ssa;
1174 build_scan_intrinsic(b, intrin->intrinsic, nir_op_iadd,
1177 build_scan_intrinsic(b, intrin->intrinsic, nir_op_iadd,
1180 build_scan_intrinsic(b, intrin->intrinsic, nir_op_iadd,
1191 should_lower_int64_intrinsic(const nir_intrinsic_instr *intrin,
1194 switch (intrin->intrinsic) {
1205 assert(intrin->dest.is_ssa);
1206 return intrin->dest.ssa.bit_size == 64 &&
1210 assert(intrin->src[0].is_ssa);
1211 return intrin->src[0].ssa->bit_size == 64 &&
1217 assert(intrin->dest.is_ssa);
1218 if (intrin->dest.ssa.bit_size != 64)
1221 switch (nir_intrinsic_reduction_op(intrin)) {
1239 lower_int64_intrinsic(nir_builder *b, nir_intrinsic_instr *intrin)
1241 switch (intrin->intrinsic) {
1252 return split_64bit_subgroup_op(b, intrin);
1255 assert(intrin->src[0].is_ssa);
1256 return lower_vote_ieq(b, intrin->src[0].ssa);
1261 switch (nir_intrinsic_reduction_op(intrin)) {
1263 return lower_scan_iadd64(b, intrin);
1267 return split_64bit_subgroup_op(b, intrin);