aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2018-10-21 10:46:48 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2018-10-21 03:46:48 -0700
commitea1adf1d532124f2ed41e3220105562d3df3333c (patch)
tree72ad20ffc7aa12d0c2990da7c9807a2dacce1075
parentc038638ea9dfc75fac9559cdb035754af85960d0 (diff)
downloadgcc-ea1adf1d532124f2ed41e3220105562d3df3333c.zip
gcc-ea1adf1d532124f2ed41e3220105562d3df3333c.tar.gz
gcc-ea1adf1d532124f2ed41e3220105562d3df3333c.tar.bz2
i386: Update FP add/sub with AVX512 memory broadcast
* config/i386/sse.md (*<plusminus_insn><mode>3<mask_name>_bcst_1): Remove plus. Renamed to ... (*sub<mode>3<mask_name>_bcst): This. (*add<mode>3<mask_name>_bcst_2): Renamede to ... (*add<mode>3<mask_name>_bcst): This. From-SVN: r265352
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/sse.md10
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d4ce806..505c949 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
+ * config/i386/sse.md (*<plusminus_insn><mode>3<mask_name>_bcst_1):
+ Remove plus. Renamed to ...
+ (*sub<mode>3<mask_name>_bcst): This.
+ (*add<mode>3<mask_name>_bcst_2): Renamede to ...
+ (*add<mode>3<mask_name>_bcst): This.
+
+2018-10-21 H.J. Lu <hongjiu.lu@intel.com>
+
PR target/72782
* config/i386/sse.md (*mul<mode>3<mask_name>_bcst): New.
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index f29ee9d..520afc5 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -1684,21 +1684,21 @@
(set_attr "prefix" "<mask_prefix3>")
(set_attr "mode" "<MODE>")])
-(define_insn "*<plusminus_insn><mode>3<mask_name>_bcst_1"
+(define_insn "*sub<mode>3<mask_name>_bcst"
[(set (match_operand:VF_AVX512 0 "register_operand" "=v")
- (plusminus:VF_AVX512
+ (minus:VF_AVX512
(match_operand:VF_AVX512 1 "register_operand" "v")
(vec_duplicate:VF_AVX512
(match_operand:<ssescalarmode> 2 "memory_operand" "m"))))]
"TARGET_AVX512F
- && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)
+ && ix86_binary_operator_ok (MINUS, <MODE>mode, operands)
&& <mask_mode512bit_condition>"
- "v<plusminus_mnemonic><ssemodesuffix>\t{%2<avx512bcst>, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2<avx512bcst>}"
+ "vsub<ssemodesuffix>\t{%2<avx512bcst>, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2<avx512bcst>}"
[(set_attr "prefix" "evex")
(set_attr "type" "sseadd")
(set_attr "mode" "<MODE>")])
-(define_insn "*add<mode>3<mask_name>_bcst_2"
+(define_insn "*add<mode>3<mask_name>_bcst"
[(set (match_operand:VF_AVX512 0 "register_operand" "=v")
(plus:VF_AVX512
(vec_duplicate:VF_AVX512