result = ctx->abi->load_base_vertex(ctx->abi,
instr->intrinsic == nir_intrinsic_load_base_vertex);
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
result = ctx->abi->load_local_group_size(ctx->abi);
break;
case nir_intrinsic_load_vertex_id:
case SYSTEM_VALUE_SUBGROUP_ID:
return nir_intrinsic_load_subgroup_id;
case SYSTEM_VALUE_WORKGROUP_SIZE:
- return nir_intrinsic_load_local_group_size;
+ return nir_intrinsic_load_workgroup_size;
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
return nir_intrinsic_load_global_invocation_id;
case SYSTEM_VALUE_BASE_GLOBAL_INVOCATION_ID:
return SYSTEM_VALUE_NUM_SUBGROUPS;
case nir_intrinsic_load_subgroup_id:
return SYSTEM_VALUE_SUBGROUP_ID;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
return SYSTEM_VALUE_WORKGROUP_SIZE;
case nir_intrinsic_load_global_invocation_id:
return SYSTEM_VALUE_GLOBAL_INVOCATION_ID;
case nir_intrinsic_load_push_constant:
case nir_intrinsic_load_work_dim:
case nir_intrinsic_load_num_work_groups:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_subgroup_id:
case nir_intrinsic_load_num_subgroups:
case nir_intrinsic_load_subgroup_size:
case nir_intrinsic_load_global_invocation_index:
case nir_intrinsic_load_work_group_id:
case nir_intrinsic_load_num_work_groups:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_work_dim:
case nir_intrinsic_load_user_data_amd:
case nir_intrinsic_load_view_index:
system_value("subgroup_lt_mask", 0, bit_sizes=[32, 64])
system_value("num_subgroups", 1)
system_value("subgroup_id", 1)
-system_value("local_group_size", 3)
+system_value("workgroup_size", 3)
# note: the definition of global_invocation_id_zero_base is based on
-# (work_group_id * local_group_size) + local_invocation_id.
+# (work_group_id * workgroup_size) + local_invocation_id.
# it is *not* based on work_group_id_zero_base, meaning the work group
# base is already accounted for, and the global base is additive on top of that
system_value("global_invocation_id", 3, bit_sizes=[32, 64])
static nir_ssa_def*
build_global_group_size(nir_builder *b, unsigned bit_size)
{
- nir_ssa_def *group_size = nir_load_local_group_size(b);
+ nir_ssa_def *group_size = nir_load_workgroup_size(b);
nir_ssa_def *num_work_groups = nir_load_num_work_groups(b, bit_size);
return nir_imul(b, nir_u2u(b, group_size, bit_size),
num_work_groups);
case nir_intrinsic_load_local_invocation_id:
case nir_intrinsic_load_local_invocation_index:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
return sanitize_32bit_sysval(b, intrin);
case nir_intrinsic_load_deref: {
* large so it can safely be omitted.
*/
nir_ssa_def *local_index = nir_load_local_invocation_index(b);
- nir_ssa_def *local_size = nir_load_local_group_size(b);
+ nir_ssa_def *local_size = nir_load_workgroup_size(b);
/* Because no hardware supports a local workgroup size greater than
* about 1K, this calculation can be done in 32-bit and can save some
nir_ssa_def *size_x_imm;
if (b->shader->info.cs.workgroup_size_variable)
- size_x_imm = nir_channel(b, nir_load_local_group_size(b), 0);
+ size_x_imm = nir_channel(b, nir_load_workgroup_size(b), 0);
else
size_x_imm = nir_imm_int(b, size_x);
return NULL;
}
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
if (b->shader->info.cs.workgroup_size_variable) {
/* If the local work group size is variable it can't be lowered at
* this point. We do, however, have to make sure that the intrinsic
case nir_intrinsic_load_global_invocation_id_zero_base: {
if ((options && options->has_base_work_group_id) ||
!b->shader->options->has_cs_global_id) {
- nir_ssa_def *group_size = nir_load_local_group_size(b);
+ nir_ssa_def *group_size = nir_load_workgroup_size(b);
nir_ssa_def *group_id = nir_load_work_group_id(b, bit_size);
nir_ssa_def *local_id = nir_load_local_invocation_id(b);
dst[i] = create_driver_param(ctx, IR3_DP_NUM_WORK_GROUPS_X + i);
}
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
for (int i = 0; i < dest_components; i++) {
dst[i] = create_driver_param(ctx, IR3_DP_LOCAL_GROUP_SIZE_X + i);
}
layout->num_driver_params =
MAX2(layout->num_driver_params, IR3_DP_NUM_WORK_GROUPS_Z + 1);
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
layout->num_driver_params =
MAX2(layout->num_driver_params, IR3_DP_LOCAL_GROUP_SIZE_Z + 1);
break;
case nir_intrinsic_load_invocation_id:
case nir_intrinsic_load_front_face:
case nir_intrinsic_load_draw_id:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_work_dim:
case nir_intrinsic_load_tess_coord:
case nir_intrinsic_load_tess_level_outer:
break;
default:
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
for (unsigned i = 0; i < 3; i++)
result[i] = lp_build_broadcast_scalar(&bld_base->uint_bld, LLVMBuildExtractElement(gallivm->builder, bld->system_values.block_size, lp_build_const_int32(gallivm, i), ""));
break;
case nir_intrinsic_load_local_invocation_id:
case nir_intrinsic_load_work_group_id:
case nir_intrinsic_load_num_work_groups:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_subgroup_size:
case nir_intrinsic_load_subgroup_invocation:
case nir_intrinsic_load_subgroup_eq_mask:
case nir_intrinsic_load_num_work_groups:
info->uses_grid_size = true;
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
/* The block size is translated to IMM with a fixed block size. */
if (info->properties[TGSI_PROPERTY_CS_FIXED_BLOCK_WIDTH] == 0)
info->uses_block_size = true;
load = nir_load_work_group_id(b, 32);
break;
case TGSI_SEMANTIC_BLOCK_SIZE:
- load = nir_load_local_group_size(b);
+ load = nir_load_workgroup_size(b);
break;
case TGSI_SEMANTIC_CS_USER_DATA_AMD:
load = nir_load_user_data_amd(b);
nir_intrinsic_base(intrin) * 16));
break;
}
- case nir_intrinsic_load_local_group_size: {
+ case nir_intrinsic_load_workgroup_size: {
assert(nir->info.cs.workgroup_size_variable);
if (variable_group_size_idx == -1) {
variable_group_size_idx = num_system_values;
return SV_INSTANCE_ID;
case nir_intrinsic_load_invocation_id:
return SV_INVOCATION_ID;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
return SV_NTID;
case nir_intrinsic_load_local_invocation_id:
return SV_TID;
case nir_intrinsic_load_helper_invocation:
case nir_intrinsic_load_instance_id:
case nir_intrinsic_load_invocation_id:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_local_invocation_id:
case nir_intrinsic_load_num_work_groups:
case nir_intrinsic_load_patch_vertices_in:
nir_ssa_def *local_ids = nir_channels(b, nir_load_local_invocation_id(b), mask);
nir_ssa_def *block_ids = nir_channels(b, nir_load_work_group_id(b, 32), mask);
- nir_ssa_def *block_size = nir_channels(b, nir_load_local_group_size(b), mask);
+ nir_ssa_def *block_size = nir_channels(b, nir_load_workgroup_size(b), mask);
return nir_iadd(b, nir_imul(b, block_ids, block_size), local_ids);
}
emit_load_uint_input(ctx, intr, &ctx->local_invocation_index_var, "gl_LocalInvocationIndex", SpvBuiltInLocalInvocationIndex);
break;
- case nir_intrinsic_load_local_group_size: {
+ case nir_intrinsic_load_workgroup_size: {
assert(ctx->local_group_size_var);
store_dest(ctx, &intr->dest, ctx->local_group_size_var, nir_type_uint);
break;
break;
}
- case nir_intrinsic_load_local_group_size: {
+ case nir_intrinsic_load_workgroup_size: {
assert(compiler->lower_variable_group_size);
assert(nir->info.cs.workgroup_size_variable);
for (unsigned i = 0; i < 3; i++) {
nir_ssa_def *sysval;
switch (intrinsic->intrinsic) {
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
case nir_intrinsic_load_work_group_id:
case nir_intrinsic_load_num_work_groups:
/* Convert this to 32-bit if it's not */
nir_ssa_def *size_x;
nir_ssa_def *size_y;
if (state->nir->info.cs.workgroup_size_variable) {
- nir_ssa_def *size_xyz = nir_load_local_group_size(b);
+ nir_ssa_def *size_xyz = nir_load_workgroup_size(b);
size_x = nir_channel(b, size_xyz, 0);
size_y = nir_channel(b, size_xyz, 1);
} else {
case nir_intrinsic_load_num_subgroups: {
nir_ssa_def *size;
if (state->nir->info.cs.workgroup_size_variable) {
- nir_ssa_def *size_xyz = nir_load_local_group_size(b);
+ nir_ssa_def *size_xyz = nir_load_workgroup_size(b);
nir_ssa_def *size_x = nir_channel(b, size_xyz, 0);
nir_ssa_def *size_y = nir_channel(b, size_xyz, 1);
nir_ssa_def *size_z = nir_channel(b, size_xyz, 2);
case nir_intrinsic_load_work_dim:
progress |= lower_load_work_dim(&b, intr, var);
break;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
lower_load_local_group_size(&b, intr);
break;
case nir_intrinsic_load_num_work_groups:
return emit_load_vulkan_descriptor(ctx, intr);
case nir_intrinsic_load_num_work_groups:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
default:
NIR_INSTR_UNSUPPORTED(&intr->instr);
assert("Unimplemented intrinsic instruction");
case nir_intrinsic_load_viewport_scale:
case nir_intrinsic_load_viewport_offset:
case nir_intrinsic_load_num_work_groups:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
bi_load_sysval_nir(b, instr, 3, 0);
break;
case nir_intrinsic_load_viewport_offset:
case nir_intrinsic_load_num_work_groups:
case nir_intrinsic_load_sampler_lod_parameters_pan:
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
emit_sysval_read(ctx, &instr->instr, 3, 0);
break;
return PAN_SYSVAL_VIEWPORT_OFFSET;
case nir_intrinsic_load_num_work_groups:
return PAN_SYSVAL_NUM_WORK_GROUPS;
- case nir_intrinsic_load_local_group_size:
+ case nir_intrinsic_load_workgroup_size:
return PAN_SYSVAL_LOCAL_GROUP_SIZE;
case nir_intrinsic_load_work_dim:
return PAN_SYSVAL_WORK_DIM;