[Bug rtl-optimization/84989] [8 Regression] _mm512_broadcast_f32x4 triggers ICE in simplify_const_unary_operation, at simplify-rtx.c:1731

2018-03-20 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84989

--- Comment #3 from Sven Woop <m...@sven-woop.de> ---
Thus the bug is fixed in the master branch?

[Bug c++/84989] New: _mm512_broadcast_f32x4 triggers internal compiler bug

2018-03-20 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84989

Bug ID: 84989
   Summary: _mm512_broadcast_f32x4 triggers internal compiler bug
   Product: gcc
   Version: 8.0.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

Created attachment 43717
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43717=edit
reproducer

The following code produces an internal compiler error:

__m512 occluded(float a, float* b) {
  return _mm512_sub_ps(_mm512_broadcast_f32x4(_mm_load_ps(b)),  
   _mm512_broadcast_f32x4(_mm_set1_ps(a)));
}

[Bug target/80381] AVX512: -O3, _mm512_srai_epi32, the last argument must be an 8-bit immediate

2017-04-11 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80381

--- Comment #8 from Sven Woop <m...@sven-woop.de> ---
Thanks a lot. Sven

[Bug c++/80390] New: std::pair of aligned type gives bogus warning

2017-04-11 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80390

Bug ID: 80390
   Summary: std::pair of aligned type gives bogus warning
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following code gives a weird warning regarding using a wrong version of
::new for the aligned type. As this code does not do any allocations, and the
std::pair struct should inherit the alignment from its members this code should
be fine.

Code:
--

#include 

struct alignas(32) AlignedStruct {
  int a;
};

std::pair<AlignedStruct,AlignedStruct> my_make_pair(const AlignedStruct& p0,
const AlignedStruct& p1) {
  return std::make_pair(p0,p1);
}

Command line:
--
g++ -Wall -o test.o -c test.cpp

Output:

In file included from
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/bits/move.h:54:0,
 from
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/bits/stl_pair.h:59,
 from
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/utility:70,
 from test.cpp:1:
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits: In
substitution of \u2018template static
std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp =
AlignedStruct; _Arg = const AlignedStruct&;  =
]\u2019:
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:987:41:
  required from \u2018struct std::__is_direct_constructible_impl<AlignedStruct,
const AlignedStruct&>\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:143:12:
  required from \u2018struct std::__and_<std::is_destructible,
std::__is_direct_constructible_impl<AlignedStruct, const AlignedStruct&>
>\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:991:12:
  required from \u2018struct
std::__is_direct_constructible_new_safe<AlignedStruct, const
AlignedStruct&>\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:1073:12:
  required from \u2018struct std::__is_direct_constructible_new<AlignedStruct,
const AlignedStruct&>\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:1081:12:
  [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to
disable ]
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:1132:12:
  required from \u2018struct std::is_constructible<AlignedStruct, const
AlignedStruct&>\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:143:12:
  required from \u2018struct std::__and_<std::is_constructible<AlignedStruct,
const AlignedStruct&>, std::is_constructible<AlignedStruct, const
AlignedStruct&> >\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/bits/stl_pair.h:101:45:
  required from \u2018static constexpr bool std::_PCC<, _T1,
_T2>::_ConstructiblePair() [with _U1 = AlignedStruct; _U2 = AlignedStruct; bool
 = true; _T1 = AlignedStruct; _T2 = AlignedStruct]\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/bits/stl_pair.h:245:35:
  required by substitution of \u2018template() &&
_ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type  > constexpr
std::pair<AlignedStruct, AlignedStruct>::pair(const AlignedStruct&, const
AlignedStruct&) [with _U1 = AlignedStruct; _U2 = AlignedStruct; typename
std::enable_if<(_ConstructiblePair<_U1, _U2>() &&
_ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type  =
]\u2019
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/bits/stl_pair.h:524:14:
  required from \u2018constexpr std::pair::__type, typename
std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 =
const AlignedStruct&; _T2 = const AlignedStruct&; typename
std::__decay_and_strip<_T2>::__type = AlignedStruct; typename
std::__decay_and_strip<_Tp>::__type = AlignedStruct]\u2019
test.cpp:8:30:   required from here
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:976:18:
note: uses \u2018void* operator new(long unsigned int)\u2019, which does not
have an alignment parameter
   = decltype(::new _Tp(declval<_Arg>()))>
  ^~
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits:976:18:
note: use \u2018-faligned-new\u2019 to enable C++17 over-aligned new support
/home/swoop/projects/gcc/latest/usr/local/include/c++/7.0.1/type_traits: In
substitution of \u2018template static
std::true_type std::__do_is_direct_constructible_impl::__test(int) [with _Tp =
AlignedStruct; _Arg = const AlignedStruct&&;  =
]

[Bug target/80381] AVX512: -O3, _mm512_srai_epi32, the last argument must be an 8-bit immediate

2017-04-10 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80381

--- Comment #4 from Sven Woop <m...@sven-woop.de> ---
BTW, the AVX-512 version of this "bug" also compiles with ICC and Clang 4.

[Bug target/80381] AVX512: -O3, _mm512_srai_epi32, the last argument must be an 8-bit immediate

2017-04-10 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80381

--- Comment #3 from Sven Woop <m...@sven-woop.de> ---
Right, this could be considered a user bug. However, we ran into this as we are
successfully using this code sequence in our code:

#include 

#define __forceinline inline __attribute__((always_inline))

struct vint8
{
  __forceinline vint8(const int i) 
: v(_mm256_set1_epi32(i)) {}

  __forceinline vint8(const __m256i& t) 
: v(t) {}

  friend __forceinline const vint8 operator >>( const vint8& a, const int n ) { 
return _mm256_srai_epi32(a.v, n); 
  }

  __m256i v; 
};

vint8 test8(int shift)
{
  const vint8 blocks_add(shift);
  return blocks_add >> shift;
}


Which is essentially the same bug for AVX2. However, this code compiles with
every compiler that supports AVX2, be it GCC, Clang, or MSVC. Also the
corresponding sequence for SSE compiles with every compiler we tried so far.

I would have expected GCC to behave consistent for AVX-256 and AVX-512 for this
code.

[Bug c++/80381] New: AVX512: -O3, _mm512_srai_epi32, the last argument must be an 8-bit immediate

2017-04-10 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80381

Bug ID: 80381
   Summary: AVX512: -O3, _mm512_srai_epi32, the last argument must
be an 8-bit immediate
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

I again reduced the issue we ran into, this time I have a reproducer that fails
when compiling with -O3.

Code:
-

#include 

#define __forceinline inline __attribute__((always_inline))

struct vint16
{
  __forceinline vint16(const int i) 
: v(_mm512_set1_epi32(i)) {}

  __forceinline vint16(const __m512i& t) 
: v(t) {}

  friend __forceinline const vint16 operator >>( const vint16& a, const int n )
{ 
return _mm512_srai_epi32(a.v, n); 
  }

  __m512i v; 
};

vint16 test16(int shift)
{
  const vint16 blocks_add = shift;
  return blocks_add >> shift;
}

Command line:
--

g++ -mavx512f -mavx512dq -mavx512cd -mavx512bw -mavx512vl -mf16c -mavx2 -mfma
-mlzcnt -mbmi -mbmi2 -O3 test.cpp -c -o test.o

Output:
---

/home/swoop/projects/gcc/latest/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.0.1/include/avx512fintrin.h:
In function \u2018vint16 test16(int)\u2019:
/home/swoop/projects/gcc/latest/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.0.1/include/avx512fintrin.h:1318:50:
error: the last argument must be an 8-bit immediate
   return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
~~^~~~
 (__v16si)
 ~ 
 _mm512_undefined_epi32 (),
 ~~
 (__mmask16) -1);

[Bug c++/80353] New: AVX512: _mm512_slli_epi32, the last argument must be an 8-bit immediate

2017-04-07 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80353

Bug ID: 80353
   Summary: AVX512: _mm512_slli_epi32, the last argument must be
an 8-bit immediate
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

GCC trunk does not propagate constant to _mm512_slli_epi32 intrinsic:

#include 

#define __forceinline inline __attribute__((always_inline))

__forceinline __m128i sll128 ( const __m128i a, const int& n ) { return
_mm_slli_epi32(a, n); }
__forceinline __m256i sll256 ( const __m256i a, const int& n ) { return
_mm256_slli_epi32(a, n); }
__forceinline __m512i sll512 ( const __m512i a, const int& n ) { return
_mm512_slli_epi32(a, n); }

void test()
{
  __m128i a = sll128(_mm_set1_epi32(0),4);
  __m256i b = sll256(_mm256_set1_epi32(0),4);
  __m512i c = sll512(_mm512_set1_epi32(0),4);
}

The first two work, while the last not. Output is:

test.cpp:8:73: error: the last argument must be an 8-bit immediate
 __forceinline __m512i sll512 ( const __m512i a, const int& n ) { return
_mm512_slli_epi32(a, n); }

[Bug target/80339] internal compiler error: in int_mode_for_mode, at stor-layout.c:406

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80339

--- Comment #2 from Sven Woop <m...@sven-woop.de> ---
Ok I isolated the issue, please see attached reproducer. The bug is quite
delicate. Removing some unused variables in the code, and further minor
adjustments easily let the bug disappear.

[Bug target/80339] internal compiler error: in int_mode_for_mode, at stor-layout.c:406

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80339

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
Created attachment 41141
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41141=edit
reproducer

just do make

[Bug c++/80337] AVX512: operand type mismatch for `vxorps'

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80337

Sven Woop <m...@sven-woop.de> changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
Duplicate

*** This bug has been marked as a duplicate of bug 80336 ***

[Bug target/80338] no such instruction: kmovb, operand type mismatch for vrcp14ps

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80338

--- Comment #3 from Sven Woop <m...@sven-woop.de> ---
Ok with binutils.x86_64 2.25.1-22.base.el7 this works. Now I have an internal
compiler error, will try to isolate this too.

[Bug target/80338] no such instruction: kmovb, operand type mismatch for vrcp14ps

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80338

--- Comment #2 from Sven Woop <m...@sven-woop.de> ---
binutils.x86_64 2.23.52.0.1-16.el7

Will check if I can upgrade somehow.

[Bug c++/80339] New: internal compiler error: in int_mode_for_mode, at stor-layout.c:406

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80339

Bug ID: 80339
   Summary: internal compiler error: in int_mode_for_mode, at
stor-layout.c:406
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

Here some internal compiler error I just got. Will work an a reproducer and
submit later. Looks like this issue was reported already several times, but
could never get reproduced (bugs 79733, 79808).

/home/swoop/projects/gcc/latest/usr/local/lib/gcc/x86_64-pc-linux-gnu/7.0.1/include/avx512fintrin.h:10087:48:
internal compiler error: in int_mode_for_mode, at stor-layout.c:406
   return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
  ~~^
   (__mmask16) __B);
     
0xd2544b int_mode_for_mode(machine_mode)
../../gcc/stor-layout.c:406
0xa007ae emit_move_via_integer
../../gcc/expr.c:3289
0xa0d175 emit_move_insn_1(rtx_def*, rtx_def*)
../../gcc/expr.c:3670
0xa0d454 emit_move_insn(rtx_def*, rtx_def*)
../../gcc/expr.c:3738
0x9f0582 copy_to_reg(rtx_def*)
../../gcc/explow.c:585
0x109e6a7 ix86_expand_builtin
../../gcc/config/i386/i386.c:37854
0x8d3eb7 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
../../gcc/builtins.c:6362
0xa09c2d expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
../../gcc/expr.c:10822
0xa15303 store_expr_with_bounds(tree_node*, rtx_def*, int, bool, bool,
tree_node*)
../../gcc/expr.c:5552
0xa16b07 expand_assignment(tree_node*, tree_node*, bool)
../../gcc/expr.c:5321
0x8f8776 expand_call_stmt
../../gcc/cfgexpand.c:2656
0x8f8776 expand_gimple_stmt_1
../../gcc/cfgexpand.c:3571
0x8f8776 expand_gimple_stmt
../../gcc/cfgexpand.c:3737
0x8fa1ff expand_gimple_basic_block
../../gcc/cfgexpand.c:5744
0x8ffcf6 execute
../../gcc/cfgexpand.c:6357
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

[Bug target/80336] AVX512: operand type mismatch for `vxorps'

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80336

--- Comment #2 from Sven Woop <m...@sven-woop.de> ---
*** Bug 80337 has been marked as a duplicate of this bug. ***

[Bug c++/80338] New: no such instruction: kmovb, operand type mismatch for vrcp14ps

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80338

Bug ID: 80338
   Summary: no such instruction: kmovb, operand type mismatch for
vrcp14ps
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following code fails to compile with GCC 6.3 and trunk:

#include 

inline __attribute__((always_inline)) const __m128 rcp2  ( const __m128& a )
{
#if defined(__AVX512VL__)
  const __m128 r = _mm_rcp14_ps(a);
#else
  const __m128 r = _mm_rcp_ps(a);
#endif

#if defined(__AVX2__)
  const __m128 res = _mm_mul_ps(r,_mm_fnmadd_ps(r, a, _mm_set1_ps(2.0f)));
#else
  const __m128 res = _mm_mul_ps(r,_mm_sub_ps(_mm_set1_ps(2.0f), _mm_mul_ps(r,
a)));
  //return _mm_sub_ps(_mm_add_ps(r, r), _mm_mul_ps(_mm_mul_ps(r, r), a));
#endif

  return res;
}

inline __attribute__((always_inline)) __m128 load4 ( const void* const a ) {
return _mm_load_ps((float*)a); }

inline __attribute__((always_inline)) const __m128 msub  ( const __m128& a,
const __m128& b, const __m128& c) { return _mm_fmsub_ps(a,b,c); }

void test(__m128 ray_org, __m128 ray_dir, float ray_tnear, float ray_tfar)
{
  char* stack[100];
  char** stackPtr = stack+1;

  const __m128 ray_rdir = rcp2(ray_dir);
  __m128 rdir = _mm_set1_ps(*(float*)_rdir);
  __m128 org_rdir = _mm_set1_ps(*(float*)_org);

  /* pop loop */
  while (true) pop:
  {
stackPtr--;
char* cur = (char*) *stackPtr;

/* downtraversal loop */
while (true)
{
  const __m128 tNearX = msub(load4((float*)((const char*)+0)), rdir,
org_rdir);
  const __m128 tFarX  = msub(load4((float*)((const char*)+3)), rdir,
org_rdir);
  const __m128 tNear_ = _mm_max_ps(tNearX,_mm_set1_ps(ray_tnear));
  const __m128 tFar_  = _mm_min_ps(tFarX ,_mm_set1_ps(ray_tfar));
  const __mmask8 vmask = _mm_cmp_ps_mask(tNear_, tFar_, _MM_CMPINT_LE);
  size_t mask = _mm512_kmov(vmask);
  if (mask == 0)
goto pop;
}
  }
}

Command line:
g++ -mavx512f -mavx512dq -mavx512cd -mavx512bw -mavx512vl -mf16c -mavx2 -mfma
-mlzcnt -mbmi -mbmi2 test.cpp -c -o test

Output:
/tmp/ccNhXh57.s: Assembler messages:
/tmp/ccNhXh57.s:26: Error: no such instruction: `kmovb %eax,%k2'
/tmp/ccNhXh57.s:27: Error: operand type mismatch for `vrcp14ps'
/tmp/ccNhXh57.s:125: Error: no such instruction: `kmovb %eax,%k3'
/tmp/ccNhXh57.s:126: Error: operand type mismatch for `vcmpps'
/tmp/ccNhXh57.s:127: Error: no such instruction: `kmovb %k1,-49(%rbp)'

[Bug c++/80337] New: AVX512: operand type mismatch for `vxorps'

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80337

Bug ID: 80337
   Summary: AVX512: operand type mismatch for `vxorps'
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following code fails to compile with the GCC 6.3 and trunk:

#include 

inline __attribute__((always_inline))float fmin(floata, floatb) {
return a

[Bug c++/80336] New: AVX512: operand type mismatch for `vxorps'

2017-04-06 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80336

Bug ID: 80336
   Summary: AVX512: operand type mismatch for `vxorps'
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following code fails to compile with the GCC 6.3 and trunk:

#include 

inline __attribute__((always_inline))float fmin(floata, floatb) {
return a

[Bug target/80327] _mm512_abs_ps intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80327

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
This intrinsic is documented here:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_abs_ps=AVX_512=41

This is supported by latest ICC and Clang.

[Bug target/80326] _mm512_trunc_ps intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80326

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
Ok that one is in the SVML and only supported by ICC, not by Clang:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=SVML=_mm512_trunc_ps

There seem to be no SVML for GCC, thus please close this issue.

[Bug target/80325] _mm512_undefined intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80325

--- Comment #2 from Sven Woop <m...@sven-woop.de> ---
For AVX512 the Intel Intrinsics guide also mentioned the _mm512_undefined as
alias for _mm512_undefined_ps.

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_undefined=AVX_512

ICC and Clang support _mm512_undefined.

[Bug target/80324] _mm512_reduce_xxx type instrinsics are missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80324

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
These intrinsics are supported by latest ICC and Clang.

Documentation of these can be found here:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=reduce=AVX_512

Likely many other reduce intrinsics that show up in the Intrinsics Guide are
missing in GCC too.

[Bug target/80323] _mm512_int2mask and _mm512_mask2int intrinsics are missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80323

--- Comment #1 from Sven Woop <m...@sven-woop.de> ---
Documentation of these can be found here:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_int2mask

These are supported by the latest ICC and Clang.

[Bug c++/80327] New: _mm512_abs_ps intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80327

Bug ID: 80327
   Summary: _mm512_abs_ps intrinsic missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The _mm512_abs_ps intrinsic is missing in GCC 6.3 and trunk version.

[Bug c++/80326] New: _mm512_trunc_ps intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80326

Bug ID: 80326
   Summary: _mm512_trunc_ps intrinsic missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The _mm512_trunc_ps intrinsic is missing in GCC 6.3 and trunk version.

[Bug c++/80325] New: _mm512_undefined intrinsic missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80325

Bug ID: 80325
   Summary: _mm512_undefined intrinsic missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The _mm512_undefined intrinsic is missing in GCC 6.3 and also in the trunk
version.

[Bug c++/80324] New: _mm512_reduce_xxx type instrinsics are missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80324

Bug ID: 80324
   Summary: _mm512_reduce_xxx type instrinsics are missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following intrinsics are missing in GCC 6.3 (and also in trunk):

_mm512_reduce_add_epi32
_mm512_reduce_add_epi64
_mm512_reduce_add_pd
_mm512_reduce_add_ps
_mm512_reduce_and_epi32
_mm512_reduce_and_epi64
_mm512_reduce_max_epi32
_mm512_reduce_max_epi64
_mm512_reduce_max_epu32
_mm512_reduce_max_pd
_mm512_reduce_max_ps
_mm512_reduce_min_epi32
_mm512_reduce_min_epi64
_mm512_reduce_min_epu32
_mm512_reduce_min_pd
_mm512_reduce_min_ps
_mm512_reduce_mul_epi32
_mm512_reduce_mul_ps
_mm512_reduce_or_epi64

There are likely some others too, but these are the ones for which compilation
of our project fails.

[Bug c++/80323] New: _mm512_int2mask and _mm512_mask2int intrinsics are missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80323

Bug ID: 80323
   Summary: _mm512_int2mask and _mm512_mask2int intrinsics are
missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following intrinsics are missing in GCC 6.3 (and also in trunk).

_mm512_int2mask
_mm512_mask2int

[Bug c++/80322] New: convert intrinsics missing

2017-04-05 Thread m...@sven-woop.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80322

Bug ID: 80322
   Summary: convert intrinsics missing
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: m...@sven-woop.de
  Target Milestone: ---

The following intrinsics are missing in GCC 6.3 (and also in trunk).

_mm512_cvtsd_f64
_mm512_cvtss_f32
_mm256_cvtsd_f64
_mm256_cvtss_f32