Lines Matching refs:ssa
706 Temp vec = get_ssa_temp(ctx, src->src.ssa);
707 unsigned src_size = src->src.ssa->bit_size;
735 if (src.src.ssa->num_components == 1 && size == 1)
736 return get_ssa_temp(ctx, src.src.ssa);
738 Temp vec = get_ssa_temp(ctx, src.src.ssa);
739 unsigned elem_size = src.src.ssa->bit_size / 8u;
753 assert(src.src.ssa->bit_size == 8 || src.src.ssa->bit_size == 16);
790 assert(src.src.ssa->bit_size == 16);
793 Temp tmp = get_ssa_temp(ctx, src.src.ssa);
824 nir_ssa_scalar{instr->src[src_idx].src.ssa, instr->src[src_idx].swizzle[0]};
979 assert(instr->dest.dest.ssa.num_components == 2);
1090 aco_opcode s_op = instr->src[0].src.ssa->bit_size == 64 ? s64_op
1091 : instr->src[0].src.ssa->bit_size == 32 ? s32_op
1093 aco_opcode v_op = instr->src[0].src.ssa->bit_size == 64 ? v64_op
1094 : instr->src[0].src.ssa->bit_size == 32 ? v32_op
1097 get_ssa_temp(ctx, instr->src[0].src.ssa).type() == RegType::vgpr ||
1098 get_ssa_temp(ctx, instr->src[1].src.ssa).type() == RegType::vgpr;
1157 if (instr->dest.dest.ssa.bit_size == 1) {
1180 assert(instr->dest.dest.ssa.bit_size == 1);
1379 isel_err(&instr->instr, "nir alu dst not in ssa");
1384 Temp dst = get_ssa_temp(ctx, &instr->dest.dest.ssa);
1393 unsigned num = instr->dest.dest.ssa.num_components;
1397 if (instr->dest.dest.ssa.bit_size >= 32 || dst.type() == RegType::vgpr) {
1399 aco_opcode::p_create_vector, Format::PSEUDO, instr->dest.dest.ssa.num_components, 1)};
1400 RegClass elem_rc = RegClass::get(RegType::vgpr, instr->dest.dest.ssa.bit_size / 8u);
1411 Temp mask = bld.copy(bld.def(s1), Operand::c32((1u << instr->dest.dest.ssa.bit_size) - 1));
1417 unsigned idx = i * instr->dest.dest.ssa.bit_size / packed_size;
1418 unsigned offset = i * instr->dest.dest.ssa.bit_size % packed_size;
1424 if (offset != packed_size - instr->dest.dest.ssa.bit_size)
1509 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1583 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1599 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1615 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1631 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1643 if (instr->dest.dest.ssa.bit_size == 1) {
1659 if (instr->dest.dest.ssa.bit_size == 1) {
1675 if (instr->dest.dest.ssa.bit_size == 1) {
1695 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1718 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1742 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1856 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1894 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
1977 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2054 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2138 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2220 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2258 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2322 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2344 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2356 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2388 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2389 assert(instr->dest.dest.ssa.num_components == 2);
2426 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2443 } else if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2529 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2558 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2593 if (dst.regClass() == v1 && instr->dest.dest.ssa.bit_size == 16) {
2832 if (instr->src[0].src.ssa->bit_size == 16) {
2837 } else if (instr->src[0].src.ssa->bit_size == 32) {
2839 } else if (instr->src[0].src.ssa->bit_size == 64) {
2879 if (instr->src[0].src.ssa->bit_size == 64)
2892 if (instr->src[0].src.ssa->bit_size == 64)
2903 if (instr->src[0].src.ssa->bit_size == 16) {
2905 } else if (instr->src[0].src.ssa->bit_size == 64) {
2914 if (instr->src[0].src.ssa->bit_size == 16)
2922 const unsigned input_size = instr->src[0].src.ssa->bit_size;
2957 const unsigned input_size = instr->src[0].src.ssa->bit_size;
2979 if (instr->src[0].src.ssa->bit_size <= 32) {
2981 if (instr->src[0].src.ssa->bit_size <= 16)
2982 src = convert_int(ctx, bld, src, instr->src[0].src.ssa->bit_size, 32, true);
2984 } else if (instr->src[0].src.ssa->bit_size == 64) {
3002 const unsigned input_size = instr->src[0].src.ssa->bit_size;
3032 const unsigned input_size = instr->src[0].src.ssa->bit_size;
3037 src = convert_int(ctx, bld, src, instr->src[0].src.ssa->bit_size, 32, false);
3053 if (instr->src[0].src.ssa->bit_size <= 32) {
3055 if (instr->src[0].src.ssa->bit_size <= 16)
3056 src = convert_int(ctx, bld, src, instr->src[0].src.ssa->bit_size, 32, false);
3058 } else if (instr->src[0].src.ssa->bit_size == 64) {
3074 if (instr->src[0].src.ssa->bit_size == 16) {
3082 tmp = convert_int(ctx, bld, tmp, 32, instr->dest.dest.ssa.bit_size, false,
3088 } else if (instr->src[0].src.ssa->bit_size == 32) {
3097 if (instr->src[0].src.ssa->bit_size == 16) {
3105 tmp = convert_int(ctx, bld, tmp, 32, instr->dest.dest.ssa.bit_size, false,
3111 } else if (instr->src[0].src.ssa->bit_size == 32) {
3120 if (instr->src[0].src.ssa->bit_size == 16) {
3128 } else if (instr->src[0].src.ssa->bit_size == 32) {
3130 } else if (instr->src[0].src.ssa->bit_size == 64) {
3139 if (instr->src[0].src.ssa->bit_size == 16) {
3147 } else if (instr->src[0].src.ssa->bit_size == 32) {
3149 } else if (instr->src[0].src.ssa->bit_size == 64) {
3158 if (instr->src[0].src.ssa->bit_size == 16)
3161 if (instr->src[0].src.ssa->bit_size <= 32 && dst.type() == RegType::vgpr) {
3190 } else if (instr->src[0].src.ssa->bit_size <= 32 && dst.type() == RegType::sgpr) {
3229 } else if (instr->src[0].src.ssa->bit_size == 64) {
3253 if (instr->src[0].src.ssa->bit_size == 16)
3256 if (instr->src[0].src.ssa->bit_size <= 32 && dst.type() == RegType::vgpr) {
3284 } else if (instr->src[0].src.ssa->bit_size <= 32 && dst.type() == RegType::sgpr) {
3319 } else if (instr->src[0].src.ssa->bit_size == 64) {
3393 if (dst.type() == RegType::sgpr && instr->src[0].src.ssa->bit_size < 32) {
3395 sgpr_extract_mode mode = instr->dest.dest.ssa.bit_size > instr->src[0].src.ssa->bit_size
3400 const unsigned input_bitsize = instr->src[0].src.ssa->bit_size;
3401 const unsigned output_bitsize = instr->dest.dest.ssa.bit_size;
3411 if (dst.type() == RegType::sgpr && instr->src[0].src.ssa->bit_size < 32) {
3413 sgpr_extract_mode mode = instr->dest.dest.ssa.bit_size > instr->src[0].src.ssa->bit_size
3418 convert_int(ctx, bld, get_alu_src(ctx, instr->src[0]), instr->src[0].src.ssa->bit_size,
3419 instr->dest.dest.ssa.bit_size, false, dst);
3731 if (bits >= instr->dest.dest.ssa.bit_size || index * bits >= instr->dest.dest.ssa.bit_size) {
3734 } else if (dst.regClass() == s1 && instr->dest.dest.ssa.bit_size == 16) {
3735 Temp vec = get_ssa_temp(ctx, instr->src[0].src.ssa);
3741 index += swizzle * instr->dest.dest.ssa.bit_size / bits;
3772 if (bits >= instr->dest.dest.ssa.bit_size || index * bits >= instr->dest.dest.ssa.bit_size) {
3850 if (instr->src[0].src.ssa->bit_size == 1)
3860 if (instr->src[0].src.ssa->bit_size == 1)
5181 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
5183 if (instr->src[0].ssa->bit_size == 64)
5186 RegClass rc = instr->src[0].ssa->bit_size == 16 ? v2b : v1;
5223 nir_instr* vertex_index_instr = vertex_index_src->ssa->parent_instr;
5250 isel_err(instr->src[1].ssa->parent_instr, "Unimplemented output offset instruction");
5358 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5359 Temp coords = get_ssa_temp(ctx, instr->src[0].ssa);
5366 if (instr->dest.ssa.num_components == 1) {
5370 aco_opcode::p_create_vector, Format::PSEUDO, instr->dest.ssa.num_components, 1));
5371 for (unsigned i = 0; i < instr->dest.ssa.num_components; i++) {
5372 Temp tmp = ctx->program->allocateTmp(instr->dest.ssa.bit_size == 16 ? v2b : v1);
5452 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5457 isel_err(offset.ssa->parent_instr,
5462 unsigned bitsize = instr->dest.ssa.bit_size;
5463 unsigned num_components = instr->dest.ssa.num_components;
5487 isel_err(offset.ssa->parent_instr,
5495 unsigned bitsize = instr->dest.ssa.bit_size;
5506 unsigned mask = nir_ssa_def_components_read(&instr->dest.ssa) << component;
5663 unsigned num_components = instr->dest.ssa.num_components;
5694 isel_err(offset.ssa->parent_instr,
5719 if (instr->dest.ssa.num_components == 1 &&
5720 instr->dest.ssa.bit_size != 64) {
5724 unsigned num_components = instr->dest.ssa.num_components;
5725 if (instr->dest.ssa.bit_size == 64)
5733 aco_opcode::v_interp_mov_f32, bld.def(instr->dest.ssa.bit_size == 16 ? v2b : v1),
5750 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5773 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5822 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5824 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
5826 unsigned size = instr->dest.ssa.bit_size / 8;
5827 load_buffer(ctx, instr->num_components, size, dst, rsrc, get_ssa_temp(ctx, instr->src[1].ssa),
5835 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5837 unsigned count = instr->dest.ssa.num_components;
5840 if (instr->dest.ssa.bit_size == 64)
5843 if (index_cv && instr->dest.ssa.bit_size >= 32) {
5864 Temp index = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
5873 if (instr->dest.ssa.bit_size == 8) {
5878 } else if (instr->dest.ssa.bit_size == 16) {
5916 emit_split_vector(ctx, dst, instr->dest.ssa.num_components);
5922 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
5941 Temp offset = get_ssa_temp(ctx, instr->src[0].ssa);
5953 unsigned size = instr->dest.ssa.bit_size / 8;
6084 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6085 Temp resource = get_ssa_temp(ctx, instr->src[0].ssa);
6086 Temp node = get_ssa_temp(ctx, instr->src[1].ssa);
6087 Temp tmax = get_ssa_temp(ctx, instr->src[2].ssa);
6088 Temp origin = get_ssa_temp(ctx, instr->src[3].ssa);
6089 Temp dir = get_ssa_temp(ctx, instr->src[4].ssa);
6090 Temp inv_dir = get_ssa_temp(ctx, instr->src[5].ssa);
6118 Temp src0 = get_ssa_temp(ctx, instr->src[1].ssa);
6131 coords[--count] = emit_extract_vector(ctx, get_ssa_temp(ctx, instr->src[2].ssa), 0, v1);
6151 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6168 coords.emplace_back(get_ssa_temp(ctx, instr->src[lod_index].ssa));
6218 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6223 unsigned result_size = instr->dest.ssa.num_components - is_sparse;
6225 nir_ssa_def_components_read(&instr->dest.ssa) & u_bit_consecutive(0, result_size);
6230 if (instr->dest.ssa.bit_size == 64) {
6238 bool d16 = instr->dest.ssa.bit_size == 16;
6249 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6252 Temp vindex = emit_extract_vector(ctx, get_ssa_temp(ctx, instr->src[1].ssa), 0, v1);
6308 if (is_sparse && instr->dest.ssa.bit_size == 64) {
6316 expand_vector(ctx, tmp, dst, instr->dest.ssa.num_components, expand_mask,
6317 instr->dest.ssa.bit_size == 64);
6326 Temp data = get_ssa_temp(ctx, instr->src[3].ssa);
6327 bool d16 = instr->src[3].ssa->bit_size == 16;
6330 if (instr->src[3].ssa->bit_size == 64 && data.bytes() > 8)
6334 uint32_t num_components = d16 ? instr->src[3].ssa->num_components : data.size();
6343 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6344 Temp vindex = emit_extract_vector(ctx, get_ssa_temp(ctx, instr->src[1].ssa), 0, v1);
6381 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6390 if (instr->src[3].ssa->bit_size == 32 || instr->src[3].ssa->bit_size == 16) {
6392 nir_ssa_scalar comp = nir_ssa_scalar_resolved(instr->src[3].ssa, i);
6439 bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
6444 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[3].ssa));
6451 get_ssa_temp(ctx, instr->src[4].ssa), data);
6520 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6524 Temp vindex = emit_extract_vector(ctx, get_ssa_temp(ctx, instr->src[1].ssa), 0, v1);
6525 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6552 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6612 Temp desc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6613 return get_buffer_size(ctx, desc, get_ssa_temp(ctx, &instr->dest.ssa));
6621 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6623 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6629 mimg->dmask = (1 << instr->dest.ssa.num_components) - 1;
6633 assert(instr->dest.ssa.num_components == 2);
6637 emit_split_vector(ctx, dst, instr->dest.ssa.num_components);
6672 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6673 Temp resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6683 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6684 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6688 unsigned size = instr->dest.ssa.bit_size / 8;
6692 load_buffer(ctx, num_components, size, dst, rsrc, get_ssa_temp(ctx, instr->src[1].ssa),
6701 Temp data = get_ssa_temp(ctx, instr->src[0].ssa);
6702 unsigned elem_size_bytes = instr->src[0].ssa->bit_size / 8;
6704 Temp offset = get_ssa_temp(ctx, instr->src[2].ssa);
6706 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa));
6749 bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
6750 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[2].ssa));
6755 get_ssa_temp(ctx, instr->src[3].ssa), data);
6757 Temp offset = get_ssa_temp(ctx, instr->src[1].ssa);
6758 Temp rsrc = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
6760 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
6816 aco_opcode op = instr->dest.ssa.bit_size == 32 ? op32 : op64;
6844 *address = get_ssa_temp(ctx, intrin->src[is_store ? 1 : 0].ssa);
6851 *offset = get_ssa_temp(ctx, offset_src.ssa);
6861 unsigned component_size = instr->dest.ssa.bit_size / 8;
6867 LoadEmitInfo info = {Operand(addr), get_ssa_temp(ctx, &instr->dest.ssa), num_components,
6908 unsigned elem_size_bytes = instr->src[0].ssa->bit_size / 8;
6911 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
7002 bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
7003 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa));
7008 get_ssa_temp(ctx, instr->src[2].ssa), data);
7010 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7075 aco_opcode op = instr->dest.ssa.bit_size == 32 ? op32 : op64;
7157 aco_opcode op = instr->dest.ssa.bit_size == 32 ? op32 : op64;
7206 Temp dst = get_ssa_temp(ctx, &intrin->dest.ssa);
7207 Temp descriptor = bld.as_uniform(get_ssa_temp(ctx, intrin->src[0].ssa));
7208 Temp v_offset = as_vgpr(ctx, get_ssa_temp(ctx, intrin->src[1].ssa));
7209 Temp s_offset = bld.as_uniform(get_ssa_temp(ctx, intrin->src[2].ssa));
7216 unsigned elem_size_bytes = intrin->dest.ssa.bit_size / 8u;
7217 unsigned num_components = intrin->dest.ssa.num_components;
7230 Temp store_src = get_ssa_temp(ctx, intrin->src[0].ssa);
7231 Temp descriptor = get_ssa_temp(ctx, intrin->src[1].ssa);
7232 Temp v_offset = get_ssa_temp(ctx, intrin->src[2].ssa);
7233 Temp s_offset = get_ssa_temp(ctx, intrin->src[3].ssa);
7240 unsigned elem_size_bytes = intrin->src[0].ssa->bit_size / 8u;
7253 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7254 Temp base = bld.as_uniform(get_ssa_temp(ctx, instr->src[0].ssa));
7255 Temp offset = bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa));
7282 emit_split_vector(ctx, dst, instr->dest.ssa.num_components);
7360 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7361 Temp address = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
7364 unsigned elem_size_bytes = instr->dest.ssa.bit_size / 8;
7365 unsigned num_components = instr->dest.ssa.num_components;
7374 Temp data = get_ssa_temp(ctx, instr->src[0].ssa);
7375 Temp address = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa));
7376 unsigned elem_size_bytes = instr->src[0].ssa->bit_size / 8;
7388 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa));
7389 Temp address = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
7476 bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
7480 assert(instr->dest.ssa.bit_size == 32);
7483 assert(instr->dest.ssa.bit_size == 64);
7498 Temp data2 = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[2].ssa));
7504 ds->definitions[0] = Definition(get_ssa_temp(ctx, &instr->dest.ssa));
7517 Temp address = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[is_store].ssa));
7522 bool is64bit = (is_store ? instr->src[0].ssa->bit_size : instr->dest.ssa.bit_size) == 64;
7533 Temp data = get_ssa_temp(ctx, instr->src[0].ssa);
7539 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7550 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7607 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
7609 LoadEmitInfo info = {Operand(v1), dst, instr->dest.ssa.num_components,
7610 instr->dest.ssa.bit_size / 8u};
7622 info.offset = Operand(get_ssa_temp(ctx, instr->src[0].ssa));
7629 info.offset = Operand(as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa)));
7639 Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
7640 Temp offset = get_ssa_temp(ctx, instr->src[1].ssa);
7642 unsigned elem_size_bytes = instr->src[0].ssa->bit_size / 8;
7699 Temp next_vertex = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
7970 Definition dst(get_ssa_temp(ctx, &instr->dest.ssa));
7982 Temp src_tmp = get_ssa_temp(ctx, src.ssa);
7986 Temp tmp = dst.regClass() == s1 ? bld.tmp(RegClass::get(RegType::vgpr, src.ssa->bit_size / 8))
7989 if (src.ssa->bit_size == 16) {
7993 assert(src.ssa->bit_size == 32);
8046 Definition dst(get_ssa_temp(ctx, &instr->dest.ssa));
8047 unsigned bit_size = instr->src[0].ssa->bit_size;
8056 emit_uniform_subgroup(ctx, instr, get_ssa_temp(ctx, instr->src[0].ssa));
8066 Definition dst(get_ssa_temp(ctx, &instr->dest.ssa));
8074 if (instr->src[0].ssa->bit_size > 32)
8091 emit_uniform_subgroup(ctx, instr, get_ssa_temp(ctx, instr->src[0].ssa));
8097 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8098 ReduceOp reduce_op = get_reduce_op(op, instr->src[0].ssa->bit_size);
8257 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8265 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8272 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8288 Temp addr = get_ssa_temp(ctx, instr->src[0].ssa);
8375 Temp offset = get_ssa_temp(ctx, instr->src[0].ssa);
8380 emit_interp_center(ctx, get_ssa_temp(ctx, &instr->dest.ssa), bary, pos1, pos2);
8384 bld.vopc(aco_opcode::v_cmp_lg_u32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8389 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8394 emit_load_frag_coord(ctx, get_ssa_temp(ctx, &instr->dest.ssa), 4);
8398 emit_load_frag_shading_rate(ctx, get_ssa_temp(ctx, &instr->dest.ssa));
8404 aco_opcode::p_create_vector, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8487 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8501 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8508 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8528 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8553 bld.vadd32(Definition(get_ssa_temp(ctx, &instr->dest.ssa)), temp, thread_id);
8555 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8560 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)), thread_id_in_threadgroup(ctx));
8563 emit_mbcnt(ctx, get_ssa_temp(ctx, &instr->dest.ssa));
8577 bld.vop2(aco_opcode::v_or_b32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)), tg_num,
8584 bld.vop3(aco_opcode::v_lshl_or_b32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8591 bld.sop2(aco_opcode::s_bfe_u32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8596 bld.sop2(aco_opcode::s_bfe_u32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8600 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)), Operand::zero());
8605 emit_mbcnt(ctx, get_ssa_temp(ctx, &instr->dest.ssa));
8610 bld.sop2(aco_opcode::s_and_b32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8613 bld.sop2(aco_opcode::s_bfe_u32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8617 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)), Operand::c32(0x1u));
8621 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8622 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8624 if (instr->src[0].ssa->bit_size == 1) {
8626 } else if (instr->src[0].ssa->bit_size == 32 && src.regClass() == v1) {
8628 } else if (instr->src[0].ssa->bit_size == 64 && src.regClass() == v2) {
8648 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8652 Temp tid = get_ssa_temp(ctx, instr->src[1].ssa);
8656 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8658 if (instr->dest.ssa.bit_size != 1)
8678 } else if (instr->dest.ssa.bit_size == 1 && tid.regClass() == s1) {
8682 } else if (instr->dest.ssa.bit_size == 1 && tid.regClass() == v1) {
8702 bld.vop3(aco_opcode::v_bfe_u32, Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
8707 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8708 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8718 } else if (instr->dest.ssa.bit_size == 1) {
8729 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8730 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8743 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8744 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8755 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8756 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8764 instr->dest.ssa.bit_size != 1) {
8780 if (instr->dest.ssa.bit_size == 1) {
8804 unsigned bit_size = instr->src[0].ssa->bit_size;
8829 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8839 bool bool_use_valu = instr->dest.ssa.bit_size == 1;
8856 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8863 else if (instr->dest.ssa.bit_size != 1)
8872 if (instr->dest.ssa.bit_size == 1 && instr->intrinsic == nir_intrinsic_quad_broadcast) {
8886 } else if (instr->dest.ssa.bit_size <= 32 || bool_use_valu) {
8887 unsigned excess_bytes = bool_use_valu ? 0 : 4 - instr->dest.ssa.bit_size / 8;
8898 } else if (instr->dest.ssa.bit_size == 64) {
8927 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8932 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8935 if (instr->dest.ssa.bit_size != 1)
8938 if (instr->dest.ssa.bit_size == 1) {
8966 Temp src = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
8967 Temp val = bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa));
8968 Temp lane = bld.as_uniform(get_ssa_temp(ctx, instr->src[2].ssa));
8969 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8988 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
8989 Temp add_src = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa));
8990 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
8998 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9001 bld.vop3(aco_opcode::v_perm_b32, Definition(dst), get_ssa_temp(ctx, instr->src[0].ssa),
9002 as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa)),
9003 as_vgpr(ctx, get_ssa_temp(ctx, instr->src[2].ssa)));
9007 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
9008 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9015 bld.as_uniform(get_ssa_temp(ctx, instr->src[1].ssa)),
9016 bld.as_uniform(get_ssa_temp(ctx, instr->src[2].ssa)));
9026 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9041 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
9060 Temp src = get_ssa_temp(ctx, instr->src[0].ssa);
9076 get_ssa_temp(ctx, &instr->dest.ssa));
9083 emit_wqm(bld, last, get_ssa_temp(ctx, &instr->dest.ssa));
9092 emit_wqm(bld, elected, get_ssa_temp(ctx, &instr->dest.ssa));
9097 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9113 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9118 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9123 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9128 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9133 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9138 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9156 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9205 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)), merged_wave_info_to_mask(ctx, i));
9214 Temp prim_ch1 = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[0].ssa));
9220 Temp num_vertices = get_ssa_temp(ctx, instr->src[0].ssa);
9221 Temp num_primitives = get_ssa_temp(ctx, instr->src[1].ssa);
9226 Temp store_val = get_ssa_temp(ctx, instr->src[0].ssa);
9227 Temp gds_addr = get_ssa_temp(ctx, instr->src[1].ssa);
9228 Temp m0_val = get_ssa_temp(ctx, instr->src[2].ssa);
9235 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9243 ctx->arg_temps[ctx->args->ac.vertex_id.arg_index] = get_ssa_temp(ctx, instr->src[0].ssa);
9244 ctx->arg_temps[ctx->args->ac.instance_id.arg_index] = get_ssa_temp(ctx, instr->src[1].ssa);
9248 ctx->arg_temps[ctx->args->ac.tes_u.arg_index] = get_ssa_temp(ctx, instr->src[0].ssa);
9249 ctx->arg_temps[ctx->args->ac.tes_v.arg_index] = get_ssa_temp(ctx, instr->src[1].ssa);
9251 get_ssa_temp(ctx, instr->src[2].ssa);
9252 ctx->arg_temps[ctx->args->ac.tes_patch_id.arg_index] = get_ssa_temp(ctx, instr->src[3].ssa);
9256 bld.copy(Definition(get_ssa_temp(ctx, &instr->dest.ssa)),
9263 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9427 resource = bld.as_uniform(get_ssa_temp(ctx, instr->src[i].src.ssa));
9430 sampler = bld.as_uniform(get_ssa_temp(ctx, instr->src[i].src.ssa));
9445 a16 = instr->src[coord_idx].src.ssa->bit_size == 16;
9449 g16 = instr->src[ddx_idx].src.ssa->bit_size == 16;
9454 assert(instr->src[i].src.ssa->bit_size == (a16 ? 16 : 32));
9455 coord = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, a16);
9459 assert(instr->src[i].src.ssa->bit_size == (a16 ? 16 : 32));
9461 bias = get_ssa_temp(ctx, instr->src[i].src.ssa);
9468 assert(instr->src[i].src.ssa->bit_size == (a16 ? 16 : 32));
9469 lod = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, a16);
9475 assert(instr->src[i].src.ssa->bit_size == (a16 ? 16 : 32));
9476 clamped_lod = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, a16);
9481 assert(instr->src[i].src.ssa->bit_size == 32);
9482 compare = get_ssa_temp(ctx, instr->src[i].src.ssa);
9487 assert(instr->src[i].src.ssa->bit_size == 32);
9488 offset = get_ssa_temp(ctx, instr->src[i].src.ssa);
9489 get_const_vec(instr->src[i].src.ssa, const_offset);
9493 assert(instr->src[i].src.ssa->bit_size == (g16 ? 16 : 32));
9494 ddx = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, g16);
9498 assert(instr->src[i].src.ssa->bit_size == (g16 ? 16 : 32));
9499 ddy = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, g16);
9503 assert(instr->src[i].src.ssa->bit_size == (a16 ? 16 : 32));
9504 sample_index = get_ssa_temp_tex(ctx, instr->src[i].src.ssa, a16);
9514 return get_buffer_size(ctx, resource, get_ssa_temp(ctx, &instr->dest.ssa));
9517 get_image_samples(ctx, Definition(get_ssa_temp(ctx, &instr->dest.ssa)), resource);
9648 unsigned dmask = nir_ssa_def_components_read(&instr->dest.ssa) & 0xf;
9657 bool d16 = instr->dest.ssa.bit_size == 16;
9658 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
9663 assert(instr->dest.ssa.num_components == (4 + instr->is_sparse));
9672 } else if (util_bitcount(dmask) != instr->dest.ssa.num_components ||
9674 unsigned bytes = util_bitcount(dmask) * instr->dest.ssa.bit_size / 8;
9695 expand_vector(ctx, tmp_dst, dst, instr->dest.ssa.num_components, dmask);
9832 expand_vector(ctx, tmp_dst, dst, instr->dest.ssa.num_components, dmask);
9892 expand_vector(ctx, tmp_dst, dst, instr->dest.ssa.num_components, dmask);
10065 expand_vector(ctx, tmp_dst, dst, instr->dest.ssa.num_components, mask);
10069 get_phi_operand(isel_context* ctx, nir_ssa_def* ssa, RegClass rc, bool logical)
10071 Temp tmp = get_ssa_temp(ctx, ssa);
10072 if (ssa->parent_instr->type == nir_instr_type_ssa_undef) {
10074 } else if (logical && ssa->bit_size == 1 &&
10075 ssa->parent_instr->type == nir_instr_type_load_const) {
10077 return Operand::c64(nir_instr_as_load_const(ssa->parent_instr)->value[0].b ? UINT64_MAX
10080 return Operand::c32(nir_instr_as_load_const(ssa->parent_instr)->value[0].b ? UINT32_MAX
10091 Temp dst = get_ssa_temp(ctx, &instr->dest.ssa);
10092 assert(instr->dest.ssa.bit_size != 1 || dst.regClass() == ctx->program->lane_mask);
10101 phi_src[src->pred->index] = src->src.ssa;
10797 Temp cond = get_ssa_temp(ctx, if_stmt->condition.ssa);