_mm512_mul_epi32 not working?

_mm512_mul_epi32 not working?

#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'


4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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:

__m512i x_, y_, z_;
x_ = _mm512_castps_si512( _mm512_mul_ps( _mm512_castsi512_ps(y_), _mm512_castsi512_ps(z_) ) );

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/

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.

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).

Leave a Comment

Please sign in to add a comment. Not a member? Join today