diff options
author | Kirill Yukhin <kirill.yukhin@intel.com> | 2016-03-18 11:36:30 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2016-03-18 11:36:30 +0000 |
commit | 8d200fad9c7f0217c2a45e5a9666e2ca5d824442 (patch) | |
tree | 81648d7864d616f126b674ab12a56580cfd4cb11 | |
parent | 5e8d6dff27050ebc334cb17293c69a8f858120ef (diff) | |
download | gcc-8d200fad9c7f0217c2a45e5a9666e2ca5d824442.zip gcc-8d200fad9c7f0217c2a45e5a9666e2ca5d824442.tar.gz gcc-8d200fad9c7f0217c2a45e5a9666e2ca5d824442.tar.bz2 |
sse.md: Use vpbroadcastq for broadcasting DF values to 128b regs.
gcc/
* config/i386/sse.md: Use vpbroadcastq for broadcasting DF
values to 128b regs.
From-SVN: r234325
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11a2a2d..5be50b7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-03-18 Kirill Yukhin <kirill.yukhin@intel.com> + + * config/i386/sse.md: Use vpbroadcastq for broadcasting DF + values to 128b regs. + 2016-03-18 Ilya Enkovich <enkovich.gnu@gmail.com> PR tree-optimization/70252 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 3c521b3..b25c246 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17269,7 +17269,14 @@ (match_operand:<ssexmmmode> 1 "nonimmediate_operand" "vm") (parallel [(const_int 0)]))))] "TARGET_AVX512F" - "v<sseintprefix>broadcast<bcstscalarsuff>\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}" +{ + /* There is no DF broadcast (in AVX-512*) to 128b register. + Mimic it with integer variant. */ + if (<MODE>mode == V2DFmode) + return "vpbroadcastq\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"; + else + return "v<sseintprefix>broadcast<bcstscalarsuff>\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"; +} [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "<sseinsnmode>")]) |