]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc/
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Mar 2016 11:36:30 +0000 (11:36 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Mar 2016 11:36:30 +0000 (11:36 +0000)
        * config/i386/sse.md: Use vpbroadcastq for broadcasting DF
        values to 128b regs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234325 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/sse.md

index 11a2a2d07dd0d499fbaf9af7298c829763d67025..5be50b76802c271cb1751fccda06149a2b964238 100644 (file)
@@ -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
index 3c521b367f95699e4bca6429501cb48625114938..b25c2465ebf784b92423be682eb30aef914f0dd5 100644 (file)
            (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>")])