From 8d200fad9c7f0217c2a45e5a9666e2ca5d824442 Mon Sep 17 00:00:00 2001 From: Kirill Yukhin Date: Fri, 18 Mar 2016 11:36:30 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/sse.md | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11a2a2d07dd..5be50b76802 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-03-18 Kirill Yukhin + + * config/i386/sse.md: Use vpbroadcastq for broadcasting DF + values to 128b regs. + 2016-03-18 Ilya Enkovich PR tree-optimization/70252 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 3c521b367f9..b25c2465ebf 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17269,7 +17269,14 @@ (match_operand: 1 "nonimmediate_operand" "vm") (parallel [(const_int 0)]))))] "TARGET_AVX512F" - "vbroadcast\t{%1, %0|%0, %1}" +{ + /* There is no DF broadcast (in AVX-512*) to 128b register. + Mimic it with integer variant. */ + if (mode == V2DFmode) + return "vpbroadcastq\t{%1, %0|%0, %1}"; + else + return "vbroadcast\t{%1, %0|%0, %1}"; +} [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "")]) -- 2.30.2