[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