From: Uros Bizjak Date: Thu, 28 May 2020 11:56:54 +0000 (+0200) Subject: i386: Remove %q modifier from two pmov insn templates [PR95355] X-Git-Tag: releases/gcc-10.2.0~316 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31d827e98ab32060ef522fa5f3e42c1175e1a439;p=thirdparty%2Fgcc.git i386: Remove %q modifier from two pmov insn templates [PR95355] 2020-05-28 Uroš Bizjak gcc/ChangeLog: PR target/95355 * config/i386/sse.md (avx512f_v16qiv16si2): Remove %q operand modifier from insn template. (avx512f_v8hiv8di2): Ditto. gcc/testsuite/ChangeLog: PR target/95355 * gcc.target/i386/pr95355.c: New test. --- diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 90ced8599ca8..ad798121bc4a 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17457,7 +17457,7 @@ (any_extend:V16SI (match_operand:V16QI 1 "nonimmediate_operand" "vm")))] "TARGET_AVX512F" - "vpmovbd\t{%1, %0|%0, %q1}" + "vpmovbd\t{%1, %0|%0, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "XI")]) @@ -17734,7 +17734,7 @@ (any_extend:V8DI (match_operand:V8HI 1 "nonimmediate_operand" "vm")))] "TARGET_AVX512F" - "vpmovwq\t{%1, %0|%0, %q1}" + "vpmovwq\t{%1, %0|%0, %1}" [(set_attr "type" "ssemov") (set_attr "prefix" "evex") (set_attr "mode" "XI")]) diff --git a/gcc/testsuite/gcc.target/i386/pr95355.c b/gcc/testsuite/gcc.target/i386/pr95355.c new file mode 100644 index 000000000000..3e4faba19f29 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr95355.c @@ -0,0 +1,20 @@ +/* PR target/95355 */ +/* { dg-do assemble { target avx512dq } } */ +/* { dg-require-effective-target int128 } */ +/* { dg-require-effective-target masm_intel } */ +/* { dg-options "-O -fno-tree-dominator-opts -fno-tree-fre -ftree-slp-vectorize -fno-tree-ter -mavx512dq -masm=intel" } */ + +typedef int __attribute__((__vector_size__(64))) U; +typedef __int128 __attribute__((__vector_size__(32))) V; + +U i; +V j; + +int +foo(unsigned char l) +{ + V m = j % 999; + U n = l <= i; + V o = ((union { U a; V b[2]; }) n).b[0] + m; + return o[0]; +}