ping

On Fri, Apr 30, 2021 at 12:42 PM Hongtao Liu <crazy...@gmail.com> wrote:
>
> Hi:
>   This patch is to fix ice which was introduced by my
> r11-5696-g35c4c67e6c534ef3d6ba7a7752ab7e0fbc91755b.
>   Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
>   Ok for trunk and backport to GCC11?
>
>   gcc/ChangeLog
>
>         PR target/100310
>         * config/i386/i386-expand.c
>         (ix86_expand_special_args_builtin): Keep constm1_operand only
>         if it satisfies insn's operand predicate.
>
> gcc/testsuite/ChangeLog
>
>         PR target/100310
>         * gcc.target/i386/pr100310.c: New test.
>
> Add test
> ---
>  gcc/config/i386/i386-expand.c            |  5 +++--
>  gcc/testsuite/gcc.target/i386/pr100310.c | 12 ++++++++++++
>  2 files changed, 15 insertions(+), 2 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr100310.c
>
> diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c
> index 516440eb5c1..b2bb2b1e3a1 100644
> --- a/gcc/config/i386/i386-expand.c
> +++ b/gcc/config/i386/i386-expand.c
> @@ -10862,11 +10862,12 @@ ix86_expand_special_args_builtin (const
> struct builtin_description *d,
>
>           op = fixup_modeless_constant (op, mode);
>
> -         /* NB: 3-operands load implied it's a mask load,
> +         /* NB: 3-operands load implied it's a mask load or v{p}expand*,
>              and that mask operand shoud be at the end.
>              Keep all-ones mask which would be simplified by the expander.  */
>           if (nargs == 3 && i == 2 && klass == load
> -             && constm1_operand (op, mode))
> +             && constm1_operand (op, mode)
> +             && insn_p->operand[i].predicate (op, mode))
>             ;
>           else if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode)
>             op = copy_to_mode_reg (mode, op);
> diff --git a/gcc/testsuite/gcc.target/i386/pr100310.c
> b/gcc/testsuite/gcc.target/i386/pr100310.c
> new file mode 100644
> index 00000000000..54ace18531b
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr100310.c
> @@ -0,0 +1,12 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx512f -O2" } */
> +#include <immintrin.h>
> +
> +double *p;
> +volatile __m512d x;
> +volatile __mmask8 m;
> +
> +void foo()
> +{
> +  x = _mm512_mask_expandloadu_pd (x, 255, p);
> +}
> --
> 2.18.1
>
>
> --
> BR,
> Hongtao



-- 
BR,
Hongtao

Reply via email to