- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
#include <immintrin.h> #include <zmmintrin.h> // not needed but put here to show it is indeed included ... __m512i a,b,c; a = _mm512_mul_epi32(b,c);
produces this error:
undefined reference to '_mm512_mul_epi32'
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The Intrinsics function _mm512_mul_epi32 is not available on KNC, but you could use _mm512_mul_ps involving two cast operations. Cast operations have zero latency and thereby no influence on the performance.
Try sty like this:
[cpp]
__m512i x_, y_, z_;
x_ = _mm512_castps_si512( _mm512_mul_ps( _mm512_castsi512_ps(y_), _mm512_castsi512_ps(z_) ) );
[/cpp]
For some reasons I don't really understand the function _mm512_fmadd233_epi32 is listed in the Intrinsics guide as a = b*c. That is really strange - it must be a typo i guess...
Have a look in http://software.intel.com/sites/landingpage/IntrinsicsGuide/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Patrick,
This does seem to be a typo. I checked the Intel MIC instrinsic reference in the compiler documentation which seems to be correct.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Regarding the original question, the intrinsic for 32-bit integer multiplication is named _mm512_mullo_epi32.
(_mm512_mul_ps will do a floating-point multiplication, which may not be what the OP wanted).

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