mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 04:50:11 +01:00
ac: drop 64 bit handling for cl workgroup intrinsics
Signed-off-by: Karol Herbst <git@karolherbst.de> Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24905>
This commit is contained in:
parent
513cd29eda
commit
a19f98a134
2 changed files with 6 additions and 10 deletions
|
|
@ -3057,8 +3057,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins
|
||||||
values[i] = ctx->args->workgroup_ids[i].used
|
values[i] = ctx->args->workgroup_ids[i].used
|
||||||
? ac_get_arg(&ctx->ac, ctx->args->workgroup_ids[i])
|
? ac_get_arg(&ctx->ac, ctx->args->workgroup_ids[i])
|
||||||
: ctx->ac.i32_0;
|
: ctx->ac.i32_0;
|
||||||
if (instr->def.bit_size == 64)
|
|
||||||
values[i] = LLVMBuildZExt(ctx->ac.builder, values[i], ctx->ac.i64, "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = ac_build_gather_values(&ctx->ac, values, 3);
|
result = ac_build_gather_values(&ctx->ac, values, 3);
|
||||||
|
|
@ -3156,8 +3154,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins
|
||||||
result = ac_build_load_invariant(&ctx->ac,
|
result = ac_build_load_invariant(&ctx->ac,
|
||||||
ac_get_ptr_arg(&ctx->ac, ctx->args, ctx->args->num_work_groups), ctx->ac.i32_0);
|
ac_get_ptr_arg(&ctx->ac, ctx->args, ctx->args->num_work_groups), ctx->ac.i32_0);
|
||||||
}
|
}
|
||||||
if (instr->def.bit_size == 64)
|
|
||||||
result = LLVMBuildZExt(ctx->ac.builder, result, LLVMVectorType(ctx->ac.i64, 3), "");
|
|
||||||
break;
|
break;
|
||||||
case nir_intrinsic_load_local_invocation_index:
|
case nir_intrinsic_load_local_invocation_index:
|
||||||
result = visit_load_local_invocation_index(ctx);
|
result = visit_load_local_invocation_index(ctx);
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ build_buffer_fill_shader(struct radv_device *dev)
|
||||||
nir_def *max_offset = nir_channel(&b, pconst, 2);
|
nir_def *max_offset = nir_channel(&b, pconst, 2);
|
||||||
nir_def *data = nir_swizzle(&b, nir_channel(&b, pconst, 3), (unsigned[]){0, 0, 0, 0}, 4);
|
nir_def *data = nir_swizzle(&b, nir_channel(&b, pconst, 3), (unsigned[]){0, 0, 0, 0}, 4);
|
||||||
|
|
||||||
nir_def *global_id = nir_iadd(
|
nir_def *global_id =
|
||||||
&b, nir_imul_imm(&b, nir_channel(&b, nir_load_workgroup_id(&b), 0), b.shader->info.workgroup_size[0]),
|
nir_iadd(&b, nir_imul_imm(&b, nir_channel(&b, nir_load_workgroup_id(&b), 0), b.shader->info.workgroup_size[0]),
|
||||||
nir_load_local_invocation_index(&b));
|
nir_load_local_invocation_index(&b));
|
||||||
|
|
||||||
nir_def *offset = nir_imin(&b, nir_imul_imm(&b, global_id, 16), max_offset);
|
nir_def *offset = nir_imin(&b, nir_imul_imm(&b, global_id, 16), max_offset);
|
||||||
nir_def *dst_addr = nir_iadd(&b, buffer_addr, nir_u2u64(&b, offset));
|
nir_def *dst_addr = nir_iadd(&b, buffer_addr, nir_u2u64(&b, offset));
|
||||||
|
|
@ -37,9 +37,9 @@ build_buffer_copy_shader(struct radv_device *dev)
|
||||||
nir_def *src_addr = nir_pack_64_2x32(&b, nir_channels(&b, pconst, 0b0011));
|
nir_def *src_addr = nir_pack_64_2x32(&b, nir_channels(&b, pconst, 0b0011));
|
||||||
nir_def *dst_addr = nir_pack_64_2x32(&b, nir_channels(&b, pconst, 0b1100));
|
nir_def *dst_addr = nir_pack_64_2x32(&b, nir_channels(&b, pconst, 0b1100));
|
||||||
|
|
||||||
nir_def *global_id = nir_iadd(
|
nir_def *global_id =
|
||||||
&b, nir_imul_imm(&b, nir_channel(&b, nir_load_workgroup_id(&b), 0), b.shader->info.workgroup_size[0]),
|
nir_iadd(&b, nir_imul_imm(&b, nir_channel(&b, nir_load_workgroup_id(&b), 0), b.shader->info.workgroup_size[0]),
|
||||||
nir_load_local_invocation_index(&b));
|
nir_load_local_invocation_index(&b));
|
||||||
|
|
||||||
nir_def *offset = nir_u2u64(&b, nir_imin(&b, nir_imul_imm(&b, global_id, 16), max_offset));
|
nir_def *offset = nir_u2u64(&b, nir_imin(&b, nir_imul_imm(&b, global_id, 16), max_offset));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue