avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd): New.
gcc/ * config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd): New. (_mm512_mask_prefetch_i64gather_pd): Ditto. (_mm512_prefetch_i32scatter_pd): Ditto. (_mm512_mask_prefetch_i32scatter_pd): Ditto. (_mm512_prefetch_i64scatter_pd): Ditto. (_mm512_mask_prefetch_i64scatter_pd): Ditto. (_mm512_mask_prefetch_i32gather_ps): Fix operand type. (_mm512_mask_prefetch_i64gather_ps): Ditto. (_mm512_prefetch_i32scatter_ps): Ditto. (_mm512_mask_prefetch_i32scatter_ps): Ditto. (_mm512_prefetch_i64scatter_ps): Ditto. (_mm512_mask_prefetch_i64scatter_ps): Ditto. * config/i386/i386-builtin-types.def: Define VOID_FTYPE_QI_V8SI_PCINT64_INT_INT and VOID_FTYPE_QI_V8DI_PCINT64_INT_INT. * config/i386/i386.c (ix86_builtins): Define IX86_BUILTIN_GATHERPFQPD, IX86_BUILTIN_GATHERPFDPD, IX86_BUILTIN_SCATTERPFDPD, IX86_BUILTIN_SCATTERPFQPD. (ix86_init_mmx_sse_builtins): Define __builtin_ia32_gatherpfdpd, __builtin_ia32_gatherpfdps, __builtin_ia32_gatherpfqpd, __builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdpd, __builtin_ia32_scatterpfdps, __builtin_ia32_scatterpfqpd, __builtin_ia32_scatterpfqps. (ix86_expand_builtin): Expand new built-ins. * config/i386/sse.md (avx512pf_gatherpf<mode>): Add SF suffix, fix memory access data type. (*avx512pf_gatherpf<mode>_mask): Ditto. (*avx512pf_gatherpf<mode>): Ditto. (avx512pf_scatterpf<mode>): Ditto. (*avx512pf_scatterpf<mode>_mask): Ditto. (*avx512pf_scatterpf<mode>): Ditto. (GATHER_SCATTER_SF_MEM_MODE): New. (avx512pf_gatherpf<mode>df): Ditto. (*avx512pf_gatherpf<mode>df_mask): Ditto. (*avx512pf_scatterpf<mode>df): Ditto. testsuite/ * gcc.target/i386/avx512pf-vgatherpf0dpd-1.c: New. * gcc.target/i386/avx512pf-vgatherpf0qpd-1.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf1dpd-1.c: Ditto. * gcc.target/i386/avx512pf-vgatherpf1qpd-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Ditto. * gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Ditto. * gcc.target/i386/sse-14.c: Add new built-ins, fix AVX-512ER built-ins roudning immediate. * gcc.target/i386/sse-22.c: Add new built-ins. * gcc.target/i386/sse-23.c: Ditto. * gcc.target/i386/avx-1.c: Ditto. From-SVN: r207149
This commit is contained in:
parent
fb1ca954c0
commit
e711dffdfe
18 changed files with 500 additions and 38 deletions
|
@ -1,3 +1,40 @@
|
|||
2014-01-27 Kirill Yukhin <kirill.yukhin@intel.com>
|
||||
|
||||
* config/i386/avx512pfintrin.h (_mm512_mask_prefetch_i32gather_pd): New.
|
||||
(_mm512_mask_prefetch_i64gather_pd): Ditto.
|
||||
(_mm512_prefetch_i32scatter_pd): Ditto.
|
||||
(_mm512_mask_prefetch_i32scatter_pd): Ditto.
|
||||
(_mm512_prefetch_i64scatter_pd): Ditto.
|
||||
(_mm512_mask_prefetch_i64scatter_pd): Ditto.
|
||||
(_mm512_mask_prefetch_i32gather_ps): Fix operand type.
|
||||
(_mm512_mask_prefetch_i64gather_ps): Ditto.
|
||||
(_mm512_prefetch_i32scatter_ps): Ditto.
|
||||
(_mm512_mask_prefetch_i32scatter_ps): Ditto.
|
||||
(_mm512_prefetch_i64scatter_ps): Ditto.
|
||||
(_mm512_mask_prefetch_i64scatter_ps): Ditto.
|
||||
* config/i386/i386-builtin-types.def: Define
|
||||
VOID_FTYPE_QI_V8SI_PCINT64_INT_INT and VOID_FTYPE_QI_V8DI_PCINT64_INT_INT.
|
||||
* config/i386/i386.c (ix86_builtins): Define IX86_BUILTIN_GATHERPFQPD,
|
||||
IX86_BUILTIN_GATHERPFDPD, IX86_BUILTIN_SCATTERPFDPD,
|
||||
IX86_BUILTIN_SCATTERPFQPD.
|
||||
(ix86_init_mmx_sse_builtins): Define __builtin_ia32_gatherpfdpd,
|
||||
__builtin_ia32_gatherpfdps, __builtin_ia32_gatherpfqpd,
|
||||
__builtin_ia32_gatherpfqps, __builtin_ia32_scatterpfdpd,
|
||||
__builtin_ia32_scatterpfdps, __builtin_ia32_scatterpfqpd,
|
||||
__builtin_ia32_scatterpfqps.
|
||||
(ix86_expand_builtin): Expand new built-ins.
|
||||
* config/i386/sse.md (avx512pf_gatherpf<mode>): Add SF suffix,
|
||||
fix memory access data type.
|
||||
(*avx512pf_gatherpf<mode>_mask): Ditto.
|
||||
(*avx512pf_gatherpf<mode>): Ditto.
|
||||
(avx512pf_scatterpf<mode>): Ditto.
|
||||
(*avx512pf_scatterpf<mode>_mask): Ditto.
|
||||
(*avx512pf_scatterpf<mode>): Ditto.
|
||||
(GATHER_SCATTER_SF_MEM_MODE): New.
|
||||
(avx512pf_gatherpf<mode>df): Ditto.
|
||||
(*avx512pf_gatherpf<mode>df_mask): Ditto.
|
||||
(*avx512pf_scatterpf<mode>df): Ditto.
|
||||
|
||||
2014-01-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/59934
|
||||
|
|
|
@ -48,74 +48,157 @@ typedef unsigned short __mmask16;
|
|||
#ifdef __OPTIMIZE__
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
|
||||
int const *addr, int scale, int hint)
|
||||
_mm512_mask_prefetch_i32gather_pd (__m256i index, __mmask8 mask,
|
||||
void *addr, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_gatherpfdps (mask, (__v16si) index, addr, scale, hint);
|
||||
__builtin_ia32_gatherpfdpd (mask, (__v8si) index, (long long const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i32gather_ps (__m512i index, __mmask16 mask,
|
||||
void *addr, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_gatherpfdps (mask, (__v16si) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i64gather_pd (__m512i index, __mmask8 mask,
|
||||
void *addr, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_gatherpfqpd (mask, (__v8di) index, (long long const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i64gather_ps (__m512i index, __mmask8 mask,
|
||||
int const *addr, int scale, int hint)
|
||||
void *addr, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_gatherpfqps (mask, (__v8di) index, addr, scale, hint);
|
||||
__builtin_ia32_gatherpfqps (mask, (__v8di) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_prefetch_i32scatter_ps (int const *addr, __m512i index, int scale,
|
||||
_mm512_prefetch_i32scatter_pd (void *addr, __m256i index, int scale,
|
||||
int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, addr, scale,
|
||||
hint);
|
||||
__builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) index,
|
||||
(long long const *)addr, scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i32scatter_ps (int const *addr, __mmask16 mask,
|
||||
__m512i index, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfdps (mask, (__v16si) index, addr, scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_prefetch_i64scatter_ps (int const *addr, __m512i index, int scale,
|
||||
_mm512_prefetch_i32scatter_ps (void *addr, __m512i index, int scale,
|
||||
int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, addr, scale,
|
||||
hint);
|
||||
__builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i64scatter_ps (int const *addr, __mmask16 mask,
|
||||
_mm512_mask_prefetch_i32scatter_pd (void *addr, __mmask8 mask,
|
||||
__m256i index, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfdpd (mask, (__v8si) index, (long long const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i32scatter_ps (void *addr, __mmask16 mask,
|
||||
__m512i index, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqps (mask, (__v8di) index, addr, scale, hint);
|
||||
__builtin_ia32_scatterpfdps (mask, (__v16si) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_prefetch_i64scatter_pd (void *addr, __m512i index, int scale,
|
||||
int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) index, (long long const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_prefetch_i64scatter_ps (void *addr, __m512i index, int scale,
|
||||
int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i64scatter_pd (void *addr, __mmask16 mask,
|
||||
__m512i index, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqpd (mask, (__v8di) index, (long long const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
extern __inline void
|
||||
__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
|
||||
_mm512_mask_prefetch_i64scatter_ps (void *addr, __mmask16 mask,
|
||||
__m512i index, int scale, int hint)
|
||||
{
|
||||
__builtin_ia32_scatterpfqps (mask, (__v8di) index, (int const *) addr,
|
||||
scale, hint);
|
||||
}
|
||||
|
||||
#else
|
||||
#define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \
|
||||
__builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \
|
||||
__builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \
|
||||
__builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \
|
||||
__builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \
|
||||
__builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
|
||||
(long long const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
||||
#define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \
|
||||
__builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \
|
||||
(int const *)ADDR, (int)SCALE, (int)HINT)
|
||||
|
|
|
@ -733,7 +733,9 @@ DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8SI, V8DI, INT)
|
|||
DEF_FUNCTION_TYPE (VOID, PINT, QI, V8DI, V8SI, INT)
|
||||
DEF_FUNCTION_TYPE (VOID, PLONGLONG, QI, V8DI, V8DI, INT)
|
||||
|
||||
DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCINT64, INT, INT)
|
||||
DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCINT, INT, INT)
|
||||
DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT64, INT, INT)
|
||||
DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCINT, INT, INT)
|
||||
|
||||
DEF_FUNCTION_TYPE_ALIAS (V2DF_FTYPE_V2DF, ROUND)
|
||||
|
|
|
@ -28406,9 +28406,13 @@ enum ix86_builtins
|
|||
IX86_BUILTIN_SCATTERSIV8DI,
|
||||
|
||||
/* AVX512PF */
|
||||
IX86_BUILTIN_GATHERPFQPD,
|
||||
IX86_BUILTIN_GATHERPFDPS,
|
||||
IX86_BUILTIN_GATHERPFDPD,
|
||||
IX86_BUILTIN_GATHERPFQPS,
|
||||
IX86_BUILTIN_SCATTERPFDPD,
|
||||
IX86_BUILTIN_SCATTERPFDPS,
|
||||
IX86_BUILTIN_SCATTERPFQPD,
|
||||
IX86_BUILTIN_SCATTERPFQPS,
|
||||
|
||||
/* AVX-512ER */
|
||||
|
@ -30939,15 +30943,27 @@ ix86_init_mmx_sse_builtins (void)
|
|||
IX86_BUILTIN_SCATTERDIV8DI);
|
||||
|
||||
/* AVX512PF */
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdpd",
|
||||
VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
|
||||
IX86_BUILTIN_GATHERPFDPD);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfdps",
|
||||
VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
|
||||
IX86_BUILTIN_GATHERPFDPS);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqpd",
|
||||
VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
|
||||
IX86_BUILTIN_GATHERPFQPD);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_gatherpfqps",
|
||||
VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
|
||||
IX86_BUILTIN_GATHERPFQPS);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdpd",
|
||||
VOID_FTYPE_QI_V8SI_PCINT64_INT_INT,
|
||||
IX86_BUILTIN_SCATTERPFDPD);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfdps",
|
||||
VOID_FTYPE_HI_V16SI_PCINT_INT_INT,
|
||||
IX86_BUILTIN_SCATTERPFDPS);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqpd",
|
||||
VOID_FTYPE_QI_V8DI_PCINT64_INT_INT,
|
||||
IX86_BUILTIN_SCATTERPFQPD);
|
||||
def_builtin (OPTION_MASK_ISA_AVX512PF, "__builtin_ia32_scatterpfqps",
|
||||
VOID_FTYPE_QI_V8DI_PCINT_INT_INT,
|
||||
IX86_BUILTIN_SCATTERPFQPS);
|
||||
|
@ -35593,17 +35609,30 @@ addcarryx:
|
|||
case IX86_BUILTIN_SCATTERDIV8DI:
|
||||
icode = CODE_FOR_avx512f_scatterdiv8di;
|
||||
goto scatter_gen;
|
||||
|
||||
case IX86_BUILTIN_GATHERPFDPD:
|
||||
icode = CODE_FOR_avx512pf_gatherpfv8sidf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_GATHERPFDPS:
|
||||
icode = CODE_FOR_avx512pf_gatherpfv16si;
|
||||
icode = CODE_FOR_avx512pf_gatherpfv16sisf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_GATHERPFQPD:
|
||||
icode = CODE_FOR_avx512pf_gatherpfv8didf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_GATHERPFQPS:
|
||||
icode = CODE_FOR_avx512pf_gatherpfv8di;
|
||||
icode = CODE_FOR_avx512pf_gatherpfv8disf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_SCATTERPFDPD:
|
||||
icode = CODE_FOR_avx512pf_scatterpfv8sidf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_SCATTERPFDPS:
|
||||
icode = CODE_FOR_avx512pf_scatterpfv16si;
|
||||
icode = CODE_FOR_avx512pf_scatterpfv16sisf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_SCATTERPFQPD:
|
||||
icode = CODE_FOR_avx512pf_scatterpfv8didf;
|
||||
goto vec_prefetch_gen;
|
||||
case IX86_BUILTIN_SCATTERPFQPS:
|
||||
icode = CODE_FOR_avx512pf_scatterpfv8di;
|
||||
icode = CODE_FOR_avx512pf_scatterpfv8disf;
|
||||
goto vec_prefetch_gen;
|
||||
|
||||
gather_gen:
|
||||
|
|
|
@ -417,6 +417,7 @@
|
|||
[V32QI V16HI V8SI (V8DI "TARGET_AVX512F") (V16SI "TARGET_AVX512F")])
|
||||
(define_mode_iterator VI48_256 [V8SI V4DI])
|
||||
(define_mode_iterator VI48_512 [V16SI V8DI])
|
||||
(define_mode_iterator VI4_256_8_512 [V8SI V8DI])
|
||||
|
||||
;; Int-float size matches
|
||||
(define_mode_iterator VI4F_128 [V4SI V4SF])
|
||||
|
@ -12495,10 +12496,14 @@
|
|||
(set_attr "btver2_decode" "vector,vector,vector,vector")
|
||||
(set_attr "mode" "TI")])
|
||||
|
||||
(define_expand "avx512pf_gatherpf<mode>"
|
||||
;; Packed float variants
|
||||
(define_mode_attr GATHER_SCATTER_SF_MEM_MODE
|
||||
[(V8DI "V8SF") (V16SI "V16SF")])
|
||||
|
||||
(define_expand "avx512pf_gatherpf<mode>sf"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
(mem:<ssescalarmode>
|
||||
(mem:<GATHER_SCATTER_SF_MEM_MODE>
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
(match_operand:VI48_512 1 "register_operand")
|
||||
|
@ -12512,10 +12517,10 @@
|
|||
operands[3]), UNSPEC_VSIBADDR);
|
||||
})
|
||||
|
||||
(define_insn "*avx512pf_gatherpf<mode>_mask"
|
||||
(define_insn "*avx512pf_gatherpf<mode>sf_mask"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand" "k")
|
||||
(match_operator:<ssescalarmode> 5 "vsib_mem_operator"
|
||||
(match_operator:<GATHER_SCATTER_SF_MEM_MODE> 5 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 2 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI48_512 1 "register_operand" "v")
|
||||
|
@ -12539,10 +12544,10 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_gatherpf<mode>"
|
||||
(define_insn "*avx512pf_gatherpf<mode>sf"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:<ssescalarmode> 4 "vsib_mem_operator"
|
||||
(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")
|
||||
|
@ -12566,10 +12571,83 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_expand "avx512pf_scatterpf<mode>"
|
||||
;; Packed double variants
|
||||
(define_expand "avx512pf_gatherpf<mode>df"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_or_constm1_operand")
|
||||
(mem:<ssescalarmode>
|
||||
(mem:V8DF
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
(match_operand:VI4_256_8_512 1 "register_operand")
|
||||
(match_operand:SI 3 "const1248_operand")]))
|
||||
(match_operand:SI 4 "const_0_to_1_operand")]
|
||||
UNSPEC_GATHER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
operands[5]
|
||||
= gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1],
|
||||
operands[3]), UNSPEC_VSIBADDR);
|
||||
})
|
||||
|
||||
(define_insn "*avx512pf_gatherpf<mode>df_mask"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand" "k")
|
||||
(match_operator:V8DF 5 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 2 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI4_256_8_512 1 "register_operand" "v")
|
||||
(match_operand:SI 3 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 4 "const_0_to_1_operand" "n")]
|
||||
UNSPEC_GATHER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[4]))
|
||||
{
|
||||
case 0:
|
||||
return "vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%5%{%0%}}";
|
||||
case 1:
|
||||
return "vgatherpf1<ssemodesuffix>pd\t{%5%{%0%}|%5%{%0%}}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(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_0_to_1_operand" "n")]
|
||||
UNSPEC_GATHER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 0:
|
||||
return "vgatherpf0<ssemodesuffix>pd\t{%4|%4}";
|
||||
case 1:
|
||||
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")
|
||||
(mem:<GATHER_SCATTER_SF_MEM_MODE>
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
(match_operand:VI48_512 1 "register_operand")
|
||||
|
@ -12583,10 +12661,10 @@
|
|||
operands[3]), UNSPEC_VSIBADDR);
|
||||
})
|
||||
|
||||
(define_insn "*avx512pf_scatterpf<mode>_mask"
|
||||
(define_insn "*avx512pf_scatterpf<mode>sf_mask"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand" "k")
|
||||
(match_operator:<ssescalarmode> 5 "vsib_mem_operator"
|
||||
(match_operator:<GATHER_SCATTER_SF_MEM_MODE> 5 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 2 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI48_512 1 "register_operand" "v")
|
||||
|
@ -12610,10 +12688,10 @@
|
|||
(set_attr "prefix" "evex")
|
||||
(set_attr "mode" "XI")])
|
||||
|
||||
(define_insn "*avx512pf_scatterpf<mode>"
|
||||
(define_insn "*avx512pf_scatterpf<mode>sf"
|
||||
[(unspec
|
||||
[(const_int -1)
|
||||
(match_operator:<ssescalarmode> 4 "vsib_mem_operator"
|
||||
(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")
|
||||
|
@ -12637,6 +12715,78 @@
|
|||
(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")
|
||||
(mem:V8DF
|
||||
(match_par_dup 5
|
||||
[(match_operand 2 "vsib_address_operand")
|
||||
(match_operand:VI4_256_8_512 1 "register_operand")
|
||||
(match_operand:SI 3 "const1248_operand")]))
|
||||
(match_operand:SI 4 "const_0_to_1_operand")]
|
||||
UNSPEC_SCATTER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
operands[5]
|
||||
= gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1],
|
||||
operands[3]), UNSPEC_VSIBADDR);
|
||||
})
|
||||
|
||||
(define_insn "*avx512pf_scatterpf<mode>df_mask"
|
||||
[(unspec
|
||||
[(match_operand:<avx512fmaskmode> 0 "register_operand" "k")
|
||||
(match_operator:V8DF 5 "vsib_mem_operator"
|
||||
[(unspec:P
|
||||
[(match_operand:P 2 "vsib_address_operand" "Tv")
|
||||
(match_operand:VI4_256_8_512 1 "register_operand" "v")
|
||||
(match_operand:SI 3 "const1248_operand" "n")]
|
||||
UNSPEC_VSIBADDR)])
|
||||
(match_operand:SI 4 "const_0_to_1_operand" "n")]
|
||||
UNSPEC_SCATTER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[4]))
|
||||
{
|
||||
case 0:
|
||||
return "vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%5%{%0%}}";
|
||||
case 1:
|
||||
return "vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%5%{%0%}}";
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
[(set_attr "type" "sse")
|
||||
(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 "const_0_to_1_operand" "n")]
|
||||
UNSPEC_SCATTER_PREFETCH)]
|
||||
"TARGET_AVX512PF"
|
||||
{
|
||||
switch (INTVAL (operands[3]))
|
||||
{
|
||||
case 0:
|
||||
return "vscatterpf0<ssemodesuffix>pd\t{%4|%4}";
|
||||
case 1:
|
||||
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,19 @@
|
|||
2014-01-27 Kirill Yukhin <kirill.yukhin@intel.com>
|
||||
|
||||
* gcc.target/i386/avx512pf-vgatherpf0dpd-1.c: New.
|
||||
* gcc.target/i386/avx512pf-vgatherpf0qpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vgatherpf1dpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vgatherpf1qpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Ditto.
|
||||
* gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Ditto.
|
||||
* gcc.target/i386/sse-14.c: Add new built-ins, fix AVX-512ER
|
||||
built-ins roudning immediate.
|
||||
* gcc.target/i386/sse-22.c: Add new built-ins.
|
||||
* gcc.target/i386/sse-23.c: Ditto.
|
||||
* gcc.target/i386/avx-1.c: Ditto.
|
||||
|
||||
2014-01-27 Christian Bruel <christian.bruel@st.com>
|
||||
|
||||
* gcc.target/sh/torture/strncmp.c: New tests.
|
||||
|
|
|
@ -362,6 +362,10 @@
|
|||
#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_gatherpfdpd(A, B, C, D, E) __builtin_ia32_gatherpfdpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_gatherpfqpd(A, B, C, D, E) __builtin_ia32_gatherpfqpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfdpd(A, B, C, D, E) __builtin_ia32_scatterpfdpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfqpd(A, B, C, D, E) __builtin_ia32_scatterpfqpd(A, B, C, 1, 1)
|
||||
|
||||
/* shaintrin.h */
|
||||
#define __builtin_ia32_sha1rnds4(A, B, C) __builtin_ia32_sha1rnds4(A, B, 1)
|
||||
|
|
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c
Normal file
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vgatherpf0dpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m256i idx;
|
||||
volatile __mmask8 m8;
|
||||
void *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 0);
|
||||
}
|
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c
Normal file
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vgatherpf0qpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m512i idx;
|
||||
volatile __mmask8 m8;
|
||||
int *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_mask_prefetch_i64gather_pd (idx, m8, base, 8, 0);
|
||||
}
|
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c
Normal file
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vgatherpf1dpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m256i idx;
|
||||
volatile __mmask8 m8;
|
||||
int *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 1);
|
||||
}
|
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c
Normal file
15
gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vgatherpf1qpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m512i idx;
|
||||
volatile __mmask8 m8;
|
||||
int *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_mask_prefetch_i64gather_pd (idx, m8, base, 8, 1);
|
||||
}
|
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c
Normal file
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m256i idx;
|
||||
volatile __mmask8 m8;
|
||||
void *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_prefetch_i32scatter_pd (base, idx, 8, 0);
|
||||
_mm512_mask_prefetch_i32scatter_pd (base, m8, idx, 8, 0);
|
||||
}
|
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
Normal file
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m512i idx;
|
||||
volatile __mmask8 m8;
|
||||
void *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_prefetch_i64scatter_pd (base, idx, 8, 0);
|
||||
_mm512_mask_prefetch_i64scatter_pd (base, m8, idx, 8, 0);
|
||||
}
|
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c
Normal file
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m256i idx;
|
||||
volatile __mmask8 m8;
|
||||
void *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_prefetch_i32scatter_pd (base, idx, 8, 1);
|
||||
_mm512_mask_prefetch_i32scatter_pd (base, m8, idx, 8, 1);
|
||||
}
|
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
Normal file
17
gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-mavx512pf -O2" } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\n\]*%zmm\[0-9\]" 2 } } */
|
||||
/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\n\]*\{%k\[1-7\]" 1 } } */
|
||||
|
||||
#include <immintrin.h>
|
||||
|
||||
volatile __m512i idx;
|
||||
volatile __mmask8 m8;
|
||||
int *base;
|
||||
|
||||
void extern
|
||||
avx512pf_test (void)
|
||||
{
|
||||
_mm512_prefetch_i64scatter_pd (base, idx, 8, 1);
|
||||
_mm512_mask_prefetch_i64scatter_pd (base, m8, idx, 8, 1);
|
||||
}
|
|
@ -523,6 +523,10 @@ test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1
|
|||
test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i32gather_pd, __m256i, __mmask8, void const *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i32scatter_pd, void const *, __mmask8, __m256i, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64gather_pd, __m512i, __mmask8, void const *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64scatter_pd, void const *, __mmask8, __m512i, 1, 1)
|
||||
|
||||
/* avx512erintrin.h */
|
||||
test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 5)
|
||||
|
|
|
@ -646,6 +646,11 @@ test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i,
|
|||
test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, 1)
|
||||
|
||||
test_3vx (_mm512_mask_prefetch_i32gather_pd, __m256i, __mmask8, void const *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i32scatter_pd, void const *, __mmask8, __m256i, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64gather_pd, __m512i, __mmask8, long long *, 1, 1)
|
||||
test_3vx (_mm512_mask_prefetch_i64scatter_pd, void const *, __mmask8, __m512i, 1, 1)
|
||||
|
||||
/* avx512erintrin.h */
|
||||
test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 5)
|
||||
test_1 (_mm512_exp2a23_round_ps, __m512, __m512, 5)
|
||||
|
|
|
@ -365,6 +365,10 @@
|
|||
#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_gatherpfdpd(A, B, C, D, E) __builtin_ia32_gatherpfdpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_gatherpfqpd(A, B, C, D, E) __builtin_ia32_gatherpfqpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfdpd(A, B, C, D, E) __builtin_ia32_scatterpfdpd(A, B, C, 1, 1)
|
||||
#define __builtin_ia32_scatterpfqpd(A, B, C, D, E) __builtin_ia32_scatterpfqpd(A, B, C, 1, 1)
|
||||
|
||||
/* avx512erintrin.h */
|
||||
#define __builtin_ia32_exp2pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask (A, B, C, 5)
|
||||
|
|
Loading…
Add table
Reference in a new issue