* [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512
@ 2017-11-29 12:10 Shalnov, Sergey
2017-11-29 12:34 ` Uros Bizjak
2017-12-01 6:44 ` Kirill Yukhin
0 siblings, 2 replies; 4+ messages in thread
From: Shalnov, Sergey @ 2017-11-29 12:10 UTC (permalink / raw)
To: 'gcc-patches@gcc.gnu.org'
Cc: 'kirill.yukhin@gmail.com',
Koval, Julia, Senkevich, Andrew, Peryt, Sebastian, Ivchenko,
Alexander, 'Uros Bizjak'
[-- Attachment #1: Type: text/plain, Size: 375 bytes --]
Hi,
I found wrong MODE_XI used in movdi_internal that cause zmm
Generation with "-march=skylake-avx512 -mprefer-vector-width=128"
options set. This patch fixes the mode and register type but keep using
AVX512 instruction set.
2017-11-28 Sergey Shalnov <Sergey.Shalnov@intel.com>
gcc/
* config/i386/i386.md: Fix AVX512 register width
in AVX512 instruction.
[-- Attachment #2: 0009-Fix-AVX512-register-width-in-movdi_internal.patch --]
[-- Type: application/octet-stream, Size: 1358 bytes --]
From d46c73bb4c24839fab2c676e5745195ff5807d2c Mon Sep 17 00:00:00 2001
From: Sergey Shalnov <Sergey.Shalnov@intel.com>
Date: Tue, 28 Nov 2017 17:21:17 +0300
Subject: [PATCH 1/1] Fix AVX512 register width in movdi_internal
---
gcc/config/i386/i386.md | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index a14efc8..b4d73db 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2254,10 +2254,13 @@
&& (GENERAL_REG_P (operands[0]) || GENERAL_REG_P (operands[1])))
return "%vmovd\t{%1, %0|%0, %1}";
return "%vmovq\t{%1, %0|%0, %1}";
+
case MODE_TI:
+ /* Handle AVX512 registers set. */
+ if (EXT_REX_SSE_REG_P (operands[0])
+ || EXT_REX_SSE_REG_P (operands[1]))
+ return "vmovdqa64\t{%1, %0|%0, %1}";
return "%vmovdqa\t{%1, %0|%0, %1}";
- case MODE_XI:
- return "vmovdqa64\t{%g1, %g0|%g0, %g1}";
case MODE_V2SF:
gcc_assert (!TARGET_AVX);
@@ -2349,7 +2352,7 @@
(eq_attr "alternative" "12,13")
(cond [(ior (match_operand 0 "ext_sse_reg_operand")
(match_operand 1 "ext_sse_reg_operand"))
- (const_string "XI")
+ (const_string "TI")
(ior (not (match_test "TARGET_SSE2"))
(match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL"))
(const_string "V4SF")
--
1.8.3.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512
2017-11-29 12:10 [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512 Shalnov, Sergey
@ 2017-11-29 12:34 ` Uros Bizjak
2017-11-29 12:38 ` Uros Bizjak
2017-12-01 6:44 ` Kirill Yukhin
1 sibling, 1 reply; 4+ messages in thread
From: Uros Bizjak @ 2017-11-29 12:34 UTC (permalink / raw)
To: Shalnov, Sergey
Cc: gcc-patches, kirill.yukhin, Koval, Julia, Senkevich, Andrew,
Peryt, Sebastian, Ivchenko, Alexander
On Wed, Nov 29, 2017 at 12:05 PM, Shalnov, Sergey
<sergey.shalnov@intel.com> wrote:
> Hi,
> I found wrong MODE_XI used in movdi_internal that cause zmm
> Generation with "-march=skylake-avx512 -mprefer-vector-width=128"
> options set. This patch fixes the mode and register type but keep using
> AVX512 instruction set.
IMO, a beter solution is to introduce ext_rex_sse_reg_operand and use
it in place of existing ext_sse_reg_operand predicate. This is XImode
move.
Uros.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512
2017-11-29 12:34 ` Uros Bizjak
@ 2017-11-29 12:38 ` Uros Bizjak
0 siblings, 0 replies; 4+ messages in thread
From: Uros Bizjak @ 2017-11-29 12:38 UTC (permalink / raw)
To: Shalnov, Sergey
Cc: gcc-patches, kirill.yukhin, Koval, Julia, Senkevich, Andrew,
Peryt, Sebastian, Ivchenko, Alexander
On Wed, Nov 29, 2017 at 1:10 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Wed, Nov 29, 2017 at 12:05 PM, Shalnov, Sergey
> <sergey.shalnov@intel.com> wrote:
>> Hi,
>> I found wrong MODE_XI used in movdi_internal that cause zmm
>> Generation with "-march=skylake-avx512 -mprefer-vector-width=128"
>> options set. This patch fixes the mode and register type but keep using
>> AVX512 instruction set.
>
> IMO, a beter solution is to introduce ext_rex_sse_reg_operand and use
> it in place of existing ext_sse_reg_operand predicate. This is XImode
> move.
Probably you will need the same change in movsi_internal.
Uros.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512
2017-11-29 12:10 [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512 Shalnov, Sergey
2017-11-29 12:34 ` Uros Bizjak
@ 2017-12-01 6:44 ` Kirill Yukhin
1 sibling, 0 replies; 4+ messages in thread
From: Kirill Yukhin @ 2017-12-01 6:44 UTC (permalink / raw)
To: Shalnov, Sergey
Cc: 'gcc-patches@gcc.gnu.org',
Koval, Julia, Senkevich, Andrew, Peryt, Sebastian, Ivchenko,
Alexander, 'Uros Bizjak'
Hello Sergey,
On 29 Nov 11:05, Shalnov, Sergey wrote:
> Hi,
> I found wrong MODE_XI used in movdi_internal that cause zmm
> Generation with "-march=skylake-avx512 -mprefer-vector-width=128"
> options set. This patch fixes the mode and register type but keep using
> AVX512 instruction set.
>
> 2017-11-28 Sergey Shalnov <Sergey.Shalnov@intel.com>
> gcc/
> * config/i386/i386.md: Fix AVX512 register width
> in AVX512 instruction.
Your patch is OK. I've checked it into main trunk.
--
Thanks, K
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-12-01 6:44 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-29 12:10 [PATCH, i386] Fix movdi_internal to return MODE_TI with AVX512 Shalnov, Sergey
2017-11-29 12:34 ` Uros Bizjak
2017-11-29 12:38 ` Uros Bizjak
2017-12-01 6:44 ` Kirill Yukhin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).