[Libva] [PATCH 10/13] VME shader keep for HEVC

Matt Turner mattst88 at gmail.com
Mon Jul 11 19:45:33 UTC 2016


On Thu, Jul 7, 2016 at 2:18 AM, Pengfei Qu <Pengfei.Qu at intel.com> wrote:
> +/* Compare three word data to get the min value */
> +word_imin:
> +       cmp.le.f0.0 (1)         null:w          INPUT_ARG0.0<0,1,0>:w   INPUT_ARG0.4<0,1,0>:w {align1};
> +       (f0.0) mov  (1)         TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w                    {align1};
> +       (-f0.0) mov (1)         TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w                    {align1};
> +       cmp.le.f0.0 (1)         null:w          TEMP_VAR0.0<0,1,0>:w    INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov  (1)         RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w                         {align1};
> +       (-f0.0) mov (1)         RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w                        {align1};

I think each of these groups of cmp/mov/mov can be replaced with a single sel.

sel.l.f0.0 (1) TEMP_VAR0.0<1>:w  INPUT_ARG0.0<0,1,0>:w
INPUT_ARG0.4<0,1,0>:w {align1};
sel.l.f0.0 (1) RET_ARG<1>:w         TEMP_VAR0.0<1>:w
INPUT_ARG0.8<0,1,0>:w {align1};

> +       RETURN          {align1};
> +
> +/* Compare three word data to get the max value */
> +word_imax:
> +       cmp.ge.f0.0 (1)         null:w          INPUT_ARG0.0<0,1,0>:w   INPUT_ARG0.4<0,1,0>:w {align1};
> +       (f0.0) mov  (1)         TEMP_VAR0.0<1>:w INPUT_ARG0.0<0,1,0>:w                    {align1};
> +       (-f0.0) mov (1)         TEMP_VAR0.0<1>:w INPUT_ARG0.4<0,1,0>:w                    {align1};
> +       cmp.ge.f0.0 (1)         null:w          TEMP_VAR0.0<0,1,0>:w    INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov  (1)         RET_ARG<1>:w TEMP_VAR0.0<0,1,0>:w                         {align1};
> +       (-f0.0) mov (1)         RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w                        {align1};

Same here I expect.

> +       RETURN          {align1};
> +
> +word_imedian:
> +       cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.4<0,1,0>:w {align1};
> +       (f0.0)  jmpi (1) cmp_a_ge_b;
> +       cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};
> +       (f0.0) jmpi (1) cmp_end;
> +       cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
> +       jmpi (1) cmp_end;
> +cmp_a_ge_b:
> +       cmp.ge.f0.0 (1) null:w INPUT_ARG0.4<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.4<0,1,0>:w {align1};
> +       (f0.0) jmpi (1) cmp_end;
> +       cmp.ge.f0.0 (1) null:w INPUT_ARG0.0<0,1,0>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.8<0,1,0>:w {align1};
> +       (-f0.0) mov (1) RET_ARG<1>:w INPUT_ARG0.0<0,1,0>:w {align1};

And here.


More information about the Libva mailing list