[Mesa-dev] [PATCH] gallivm: set LLVMNoUnwindAttribute on all intrinsics
Roland Scheidegger
sroland at vmware.com
Tue Jul 5 13:34:15 UTC 2016
Am 05.07.2016 um 11:36 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
>
> RadeonSI stats: Mostly 0% difference, but Valley shows a small improvement:
>
> Application Files SGPRs VGPRs SpillSGPR SpillVGPR Code Size LDS Max Waves Waits
> unigine_valley 278 0.00 % -0.29 % 0.00 % 0.00 % 0.01 % 0.00 % 0.17 % 0.00 %
> ---
> src/gallium/auxiliary/gallivm/lp_bld_intr.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_intr.c b/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> index 0a8f996..f12e735 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> @@ -145,8 +145,10 @@ lp_build_intrinsic(LLVMBuilderRef builder,
>
> function = lp_declare_intrinsic(module, name, ret_type, arg_types, num_args);
>
> - if (attr)
> - LLVMAddFunctionAttr(function, attr);
> + /* NoUnwind indicates that the intrinsic never raises a C++ exception.
> + * Set it for all intrinsics.
> + */
> + LLVMAddFunctionAttr(function, attr | LLVMNoUnwindAttribute);
>
> if (gallivm_debug & GALLIVM_DEBUG_IR) {
> lp_debug_dump_value(function);
>
Looks alright to me, though for some reason we already got
readnone/nounwind anyway for all the intrinsics used by llvmpipe without
declaring this manually (but don't ask me why).
Though by the looks of it, radeonsi already sets this for nearly all the
intrinsics...
Roland
More information about the mesa-dev
mailing list