[Mesa-dev] [PATCH] llvmpipe: use sse2 conv code for altivec

Roland Scheidegger sroland at vmware.com
Thu Jan 7 10:28:22 PST 2016


Am 07.01.2016 um 19:18 schrieb Oded Gabbay:
> In lp_build_conv() and lp_build_conv_auto(), there is a special case of
> conversion when sse2 is present. That code path is suitable without any
> changes to altivec, because all the functions that are called in that
> code path already support altivec.
> 
> This patch increase the FPS in POWER arch across the board
> between 10%-25%
> 
> I checked ipers, glxgears, glxspheres64, openarena, xonotic and glmark2.
> 
> Signed-off-by: Oded Gabbay <oded.gabbay at gmail.com>
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_conv.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_conv.c b/src/gallium/auxiliary/gallivm/lp_bld_conv.c
> index 1424447..7854142 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_conv.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_conv.c
> @@ -458,7 +458,7 @@ int lp_build_conv_auto(struct gallivm_state *gallivm,
>     {
>        /* Special case 4x4f --> 1x16ub */
>        if (src_type.length == 4 &&
> -          util_cpu_caps.has_sse2)
> +            (util_cpu_caps.has_sse2 || util_cpu_caps.has_altivec))
>        {
>           num_dsts = (num_srcs + 3) / 4;
>           dst_type->length = num_srcs * 4 >= 16 ? 16 : num_srcs * 4;
> @@ -545,7 +545,7 @@ lp_build_conv(struct gallivm_state *gallivm,
>         ((dst_type.length == 16 && 4 * num_dsts == num_srcs) ||
>          (num_dsts == 1 && dst_type.length * num_srcs == 16 && num_srcs != 3)) &&
>  
> -       util_cpu_caps.has_sse2)
> +       (util_cpu_caps.has_sse2 || util_cpu_caps.has_altivec))
>     {
>        struct lp_build_context bld;
>        struct lp_type int16_type, int32_type;
> 

Reviewed-by: Roland Scheidegger <sroland at vmware.com>



More information about the mesa-dev mailing list