mirror of git://gcc.gnu.org/git/gcc.git
backport: re PR target/69228 (Default mask is not allowed for AVX512 prefetch gather/scatter insns)
Backport from mainline 2016-01-13 Alexander Fomin <alexander.fomin@intel.com> gcc/ PR target/69228 * config/i386/sse.md (define_expand "avx512pf_gatherpf<mode>sf"): Change first operand predicate from register_or_constm1_operand to register_operand. (define_expand "avx512pf_gatherpf<mode>df"): Likewise. (define_expand "avx512pf_scatterpf<mode>sf"): Likewise. (define_expand "avx512pf_scatterpf<mode>df"): Likewise. (define_insn "*avx512pf_gatherpf<mode>sf"): Remove. (define_insn "*avx512pf_gatherpf<mode>df"): Likewise. (define_insn "*avx512pf_scatterpf<mode>sf"): Likewise. (define_insn "*avx512pf_scatterpf<mode>df"): Likewise. * config/i386/i386.c (ix86_expand_builtin): Remove first operand comparison with constm1_rtx from vec_prefetch_gen part. gcc/testsuite PR target/69228 * gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust. * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Likewise. * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Likewise. From-SVN: r232412
This commit is contained in:
parent
c57ac69f3a
commit
83d875c4b4
|
|
@ -1,3 +1,22 @@
|
|||
2016-01-15 Alexander Fomin <alexander.fomin@intel.com>
|
||||
|
||||
Backport from mainline
|
||||
2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
|
||||
|
||||
PR target/69228
|
||||
* config/i386/sse.md (define_expand "avx512pf_gatherpf<mode>sf"):
|
||||
Change first operand predicate from register_or_constm1_operand
|
||||
to register_operand.
|
||||
(define_expand "avx512pf_gatherpf<mode>df"): Likewise.
|
||||
(define_expand "avx512pf_scatterpf<mode>sf"): Likewise.
|
||||
(define_expand "avx512pf_scatterpf<mode>df"): Likewise.
|
||||
(define_insn "*avx512pf_gatherpf<mode>sf"): Remove.
|
||||
(define_insn "*avx512pf_gatherpf<mode>df"): Likewise.
|
||||
(define_insn "*avx512pf_scatterpf<mode>sf"): Likewise.
|
||||
(define_insn "*avx512pf_scatterpf<mode>df"): Likewise.
|
||||
* config/i386/i386.c (ix86_expand_builtin): Remove first operand
|
||||
comparison with constm1_rtx from vec_prefetch_gen part.
|
||||
|
||||
2016-01-13 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/69013
|
||||
|
|
|
|||
|
|
@ -40259,13 +40259,12 @@ rdseed_step:
|
|||
|
||||
op0 = fixup_modeless_constant (op0, mode0);
|
||||
|
||||
if (GET_MODE (op0) == mode0
|
||||
|| (GET_MODE (op0) == VOIDmode && op0 != constm1_rtx))
|
||||
if (GET_MODE (op0) == mode0 || GET_MODE (op0) == VOIDmode)
|
||||
{
|
||||
if (!insn_data[icode].operand[0].predicate (op0, mode0))
|
||||
op0 = copy_to_mode_reg (mode0, op0);
|
||||
}
|
||||
else if (op0 != constm1_rtx)
|
||||
else
|
||||
{
|
||||
op0 = copy_to_reg (op0);
|
||||
op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
|
||||
|
|
|
|||
|
|
@ -15210,7 +15210,7 @@
|
|||
|
||||
(define_expand "avx512pf_gatherpf<mode>sf"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand")
|
||||
(mem:<GATHER_SCATTER_SF_MEM_MODE>
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
|
|
@ -15252,37 +15252,10 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_gatherpf<mode>sf"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:<GATHER_SCATTER_SF_MEM_MODE> 4 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 1 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI48_512 0 "register_operand" "v")
|
||||
(match_operand:SI 2 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 3 "const_2_to_3_operand" "n")]
|
||||
UNSPEC_GATHER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 3:
|
||||
return "vgatherpf0<ssemodesuffix>ps\t{%4|%4}";
|
||||
case 2:
|
||||
return "vgatherpf1<ssemodesuffix>ps\t{%4|%4}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
;; Packed double variants
|
||||
(define_expand "avx512pf_gatherpf<mode>df"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand")
|
||||
(mem:V8DF
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
|
|
@ -15324,37 +15297,10 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_gatherpf<mode>df"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:V8DF 4 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 1 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI4_256_8_512 0 "register_operand" "v")
|
||||
(match_operand:SI 2 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 3 "const_2_to_3_operand" "n")]
|
||||
UNSPEC_GATHER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 3:
|
||||
return "vgatherpf0<ssemodesuffix>pd\t{%4|%4}";
|
||||
case 2:
|
||||
return "vgatherpf1<ssemodesuffix>pd\t{%4|%4}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
;; Packed float variants
|
||||
(define_expand "avx512pf_scatterpf<mode>sf"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand")
|
||||
(mem:<GATHER_SCATTER_SF_MEM_MODE>
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
|
|
@ -15398,39 +15344,10 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_scatterpf<mode>sf"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:<GATHER_SCATTER_SF_MEM_MODE> 4 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 1 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI48_512 0 "register_operand" "v")
|
||||
(match_operand:SI 2 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 3 "const2367_operand" "n")]
|
||||
UNSPEC_SCATTER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 3:
|
||||
case 7:
|
||||
return "vscatterpf0<ssemodesuffix>ps\t{%4|%4}";
|
||||
case 2:
|
||||
case 6:
|
||||
return "vscatterpf1<ssemodesuffix>ps\t{%4|%4}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
;; Packed double variants
|
||||
(define_expand "avx512pf_scatterpf<mode>df"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand")
|
||||
(mem:V8DF
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
|
|
@ -15474,35 +15391,6 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_scatterpf<mode>df"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:V8DF 4 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 1 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI4_256_8_512 0 "register_operand" "v")
|
||||
(match_operand:SI 2 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 3 "const2367_operand" "n")]
|
||||
UNSPEC_SCATTER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 3:
|
||||
case 7:
|
||||
return "vscatterpf0<ssemodesuffix>pd\t{%4|%4}";
|
||||
case 2:
|
||||
case 6:
|
||||
return "vscatterpf1<ssemodesuffix>pd\t{%4|%4}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "avx512er_exp2<mode><mask_name><round_saeonly_name>"
|
||||
[(set (match_operand:VF_512 0 "register_operand" "=v")
|
||||
(unspec:VF_512
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
2016-01-15 Alexander Fomin <alexander.fomin@intel.com>
|
||||
|
||||
Backport from mainline
|
||||
2016-01-13 Alexander Fomin <alexander.fomin@intel.com>
|
||||
|
||||
PR target/69228
|
||||
* gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust.
|
||||
* gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Likewise.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Likewise.
|
||||
|
||||
2016-01-12 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
|
||||
Backport from mainline r222186.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m256i idx;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue