On Sat, Sep 18, 2021 at 11:09:32AM +0800, liuhongt wrote:
> Besides conversion instructions, pass_rpad also handles scalar
> sqrt/rsqrt/rcp/round instructions, while r12-3614 should only want to
> handle conversion instructions, so fix it.
> 
>   Bootstrapped and regtest on x86_64-linux-gnu{-m32,} w/ configure
> --enable-checking=yes,rtl,extra, failed tests are fixed.
>   Ok for trunk?
> 
> New tests that PASS (8 tests):
> 
> gcc.target/i386/avx512f-vscalefpd-2.c execution test
> gcc.target/i386/avx512f-vscalefps-2.c execution test
> gcc.target/i386/avx512f-vscalefss-2.c execution test
> gcc.target/i386/avx512fp16-vscalefph-1b.c execution test
> gcc.target/i386/avx512fp16-vscalefsh-1b.c execution test
> gcc.target/i386/avx512fp16vl-vscalefph-1b.c execution test
> gcc.target/i386/avx512vl-vscalefpd-2.c execution test
> gcc.target/i386/avx512vl-vscalefps-2.c execution test
> 
> Old tests that failed, that have disappeared (8 tests): (Eeek!)
> 
> gcc.target/i386/avx512f-vscalefpd-2.c (internal compiler error)
> gcc.target/i386/avx512f-vscalefps-2.c (internal compiler error)
> gcc.target/i386/avx512f-vscalefss-2.c (internal compiler error)
> gcc.target/i386/avx512fp16-vscalefph-1b.c (internal compiler error)
> gcc.target/i386/avx512fp16-vscalefsh-1b.c (internal compiler error)
> gcc.target/i386/avx512fp16vl-vscalefph-1b.c (internal compiler error)
> gcc.target/i386/avx512vl-vscalefpd-2.c (internal compiler error)
> gcc.target/i386/avx512vl-vscalefps-2.c (internal compiler error)
> 
> gcc/ChangeLog:
> 
>       * config/i386/i386-features.c (remove_partial_avx_dependency):
>       Restrict TARGET_USE_VECTOR_FP_CONVERTS and
>       TARGET_USE_VECTOR_CONVERTS to conversion instructions only.

Ok, with a minor nit:

> @@ -2233,6 +2247,7 @@ remove_partial_avx_dependency (void)
>               continue;
>             break;
>           default:
> +           gcc_assert (src_mode == E_VOIDmode);
>             break;
>           }

Wouldn't it be better to do:
          E_VOIDmode:
            gcc_assert (convert_p);
            break;
          default:
            gcc_unreachable ();
?

        Jakub

Reply via email to