- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I noticed, that it is no longer possible to overload the multiplication operator for vector datatypes with a length of 512 bit. While the code below compiled properly ICC 15, it no longer runs on ICC 16 (update 3) or ICC 17 (20160517).
static inline __m512d operator * (const __m512d& a, const __m512d& b) { return _mm512_mul_pd(a,b); } static inline __m512d foo (const __m512d& a, const __m512d& b) { return a * b; }
error: operation not supported for these simd operands
I assume, that it has something to do with the introduction of those operations for datatypes with length 128 bit and 256 bit (see http://developers-club.com/posts/265565/ ).
Is there any way to circumvent this problem except for
a) changing all occurrences of a*b to either intrinsics or a proper function
b) or introducing a new datatype as a wrapper?
It would also be nice, if either support for vector types of 512 bit length will be added in newer editions of ICC, or if the above way would work again.
Greetings,
Steffen
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Steffen,
I can reproduce this issue and looks like moving from 16.0 Update 2 to Update 3 introduced this error. I am escalating this issue to compiler engineering.
Thanks and Regards
Anoop

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page