[PATCH] Add missing avx512dqintrin.h _mm_mask_fpclass_s[sd]_mask (PR target/89803)

Jakub Jelinek jakub@redhat.com
Tue Jun 4 07:59:00 GMT 2019


On Tue, Jun 04, 2019 at 03:38:08PM +0800, Hongtao Liu wrote:
> --- gcc/ChangeLog	(revision 271853)
> +++ gcc/ChangeLog	(working copy)
> @@ -4706,6 +4706,26 @@
>  	reprocessing.  Always call df_analyze before fixing up debug bind
>  	insns.
>  
> +2019-03-24 Hongtao Liu	<hongtao.liu@intel.com>

name should be separated from date and email by 2 spaces on each side,
you have just one space before and a tab after.

> +
> +	PR target/89803
> +	* config/i386/avx512dqintrin.h
> +	(_mm_mask_fpclass_ss_mask,_mm_mask_fpclass_sd_mask):
> +	New intrinsics.

There should be space after comma, and a line break should be there
only when it will not fit, so:

+	* config/i386/avx512dqintrin.h (_mm_mask_fpclass_ss_mask,
+	_mm_mask_fpclass_sd_mask): New intrinsics.

> +	(_mm_fpclass_ss_mask,_mm_fpclass_sd_mask):
> +	Modified, use new builtins.

Similarly.

> +	* config/i386/i386-builtin.def
> +	(__builtin_ia32_fpclassss_mask, _builtin_ia32_fpclasssd_mask):
> +	New builtins.

Again.

> +	(__builtin_ia32_fpclassss, _builtin_ia32_fpclasssd): Deleted.
> +	* config/i386/i386-builtin-types.def:
> +	Delete relate types.

You should say what exactly you've deleted, so

+	* config/i386/i386-builtin-types.def (QI_FTYPE_V2DF_INT,
+	QI_FTYPE_V4SF_INT): Remove.

> +	* config/i386/i386-expand.c:
> +	Ditto.

Mention what you've changed, so

+	* config/i386/i386-expand.c (ix86_expand_args_builtin): Remove
+	QI_FTYPE_V2DF_INT and QI_FTYPE_V4SF_INT cases.

> +	* config/i386/sse.md
> +	(define_insn "avx512dq_vmfpclass<mode><mask_scalar_merge_name>):
> +	Modified with mask.

That is not what you've done.

+	* config/i386/sse.md (avx512dq_vmfpclass<mode>): Rename to ...
+	(avx512dq_vmfpclass<mode><mask_scalar_merge_name>): ... this.  Add
+	<mask_scalar_merge_operand3> to insn template.

> --- gcc/config/i386/avx512dqintrin.h	(revision 271853)
> +++ gcc/config/i386/avx512dqintrin.h	(working copy)
> @@ -1362,7 +1362,7 @@
>  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
>  _mm_fpclass_ss_mask (__m128 __A, const int __imm)
>  {
> -  return (__mmask8) __builtin_ia32_fpclassss ((__v4sf) __A, __imm);
> +  return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm, -1);

Most other avx512*.h code uses explicit (__mmaskN) -1 instead of just -1, so
perhaps for consistency use:
+  return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm,
+						    (_mmask8) -1);
?

>  }
>  
>  extern __inline __mmask8
> @@ -1369,9 +1369,23 @@
>  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
>  _mm_fpclass_sd_mask (__m128d __A, const int __imm)
>  {
> -  return (__mmask8) __builtin_ia32_fpclasssd ((__v2df) __A, __imm);
> +  return (__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) __A, __imm, -1);
>  }

Likewise.

>  #define _mm_fpclass_ss_mask(X, C)						\
> -  ((__mmask8) __builtin_ia32_fpclassss ((__v4sf) (__m128) (X), (int) (C)))  \
> +  ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), (int) (C), (__mmask8) (-1))) \
>  
>  #define _mm_fpclass_sd_mask(X, C)						\
> -  ((__mmask8) __builtin_ia32_fpclasssd ((__v2df) (__m128d) (X), (int) (C))) \
> +  ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), (int) (C), (__mmask8) (-1))) \
>  
> +#define _mm_mask_fpclass_ss_mask(X, C, U)					\
> +  ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), (int) (C), (__mmask8) (U)))
> +
> +#define _mm_mask_fpclass_sd_mask(X, C, U)					\
> +  ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), (int) (C), (__mmask8) (U)))

Too long lines.

> +2019-03-24 Hongtao Liu <hongtao.liu@intel.com>
> +
> +	PR target/89803
> +	* gcc.target/i386/avx-1.c
> +	(__builtin_ia32_fpclasss[sd]): Replaced with builtin_ia32_fpclasss[sd]_mask.
> +	* gcc.target/i386/sse-13.c:
> +	(__builtin_ia32_fpclasss[sd]): Likewise.
> +	* gcc.target/i386/sse-23.c
> +	(__builtin_ia32_fpclasss[sd]): Likewise.

Similar problems in this ChangeLog as in gcc/ChangeLog, you don't want a
linebreak after the filename if the function name can fit in, too long line
too, sse-13.c has an extra : after it and I believe we don't allow wildcards
in the function names between
()s, so it should be:
+	* gcc.target/i386/avx-1.c (__builtin_ia32_fpclassss,
+	__builtin_ia32_fpclasssd): Remove.
+	(__builtin_ia32_fpclassss_mask, __builtin_ia32_fpclasssd_mask): Define.
etc.

	Jakub



More information about the Gcc-patches mailing list