Scalar mask and round RTL templates
authorSebastian Peryt <sebastian.peryt@intel.com>
Wed, 5 Jul 2017 16:44:18 +0000 (18:44 +0200)
committerKirill Yukhin <kyukhin@gcc.gnu.org>
Wed, 5 Jul 2017 16:44:18 +0000 (16:44 +0000)
commitf8aa2b2c434483559d93ffa7b56643caecd276da
treef0ae15880ac515b34d43c364e5d4bb1cf5c14908
parent75e2d19bc75321122cbe87bc57a5d825dd2fc6df
Scalar mask and round RTL templates

gcc/
* config/i386/subst.md (mask_scalar, round_scalar,
round_saeonly_scalar): New meta-templates.
(mask_scalar_name, mask_scalar_operand3, round_scalar_name,
round_scalar_mask_operand3, round_scalar_mask_op3,
round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
round_saeonly_scalar_constraint,
round_saeonly_scalar_prefix): New subst attribute.
* config/i386/sse.md
(<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
<sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
<round_scalar_name> ... this.
(<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
<sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
<round_scalar_name> ... this.
(<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
<sse>_vm<code><mode>3<mask_scalar_name>
<round_saeonly_scalar_name> ... this.
(v<plusminus_mnemonic><ssescalarmodesuffix>
\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
v<plusminus_mnemonic><ssescalarmodesuffix>
\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
(v<multdiv_mnemonic><ssescalarmodesuffix>
\t{<round_mask_op3>%2, %1, %0<mask_operand3>|
%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
v<multdiv_mnemonic><ssescalarmodesuffix>
\t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
%0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
(v<maxmin_float><ssescalarmodesuffix>
\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
v<maxmin_float><ssescalarmodesuffix>
\t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
%0<mask_scalar_operand3>, %1, %<iptr>2
<round_saeonly_scalar_mask_op3>} ... this.

gcc/testsuite/
* gcc.target/i386/avx512f-vaddsd-3.c: New test for mask 0 verification.
* gcc.target/i386/avx512f-vaddss-3.c: Ditto.
* gcc.target/i386/avx512f-vdivsd-3.c: Ditto.
* gcc.target/i386/avx512f-vdivss-3.c: Ditto.
* gcc.target/i386/avx512f-vmaxsd-3.c: Ditto.
* gcc.target/i386/avx512f-vmaxss-3.c: Ditto.
* gcc.target/i386/avx512f-vminsd-3.c: Ditto.
* gcc.target/i386/avx512f-vminss-3.c: Ditto.
* gcc.target/i386/avx512f-vmulsd-3.c: Ditto.
* gcc.target/i386/avx512f-vmulss-3.c: Ditto.
* gcc.target/i386/avx512f-vsubsd-3.c: Ditto.
* gcc.target/i386/avx512f-vsubss-3.c: Ditto.

From-SVN: r250006
16 files changed:
gcc/ChangeLog
gcc/config/i386/sse.md
gcc/config/i386/subst.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512f-vaddsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vaddss-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vdivsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vdivss-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmaxsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmaxss-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vminsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vminss-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmulsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vmulss-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vsubsd-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-vsubss-3.c [new file with mode: 0644]