- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
The intel compiler generates this:
../simd/avx.hpp(50): internal error: assertion failed at: "shared/cfe/edgcpfe/decls.c", line 9448
static constexpr unary_value initialize = _mm256_set1_pd;
Here's how I generated the attached preprocessed file:
/compilers/intel/composer_xe_2019.3.199/compilers_and_libraries/linux/bin/intel64/icpc -std=c++14 -mavx2 -o junk.pp -c junk.cpp -E
Can someone try to reproduce this on Linux?
- Tags:
- Bug
- CC++
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Optimization
- Parallel Computing
- Vectorization
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
The error is reproducible on Linux. Apparently, from the error log, line number 3 of junk.cpp is triggering the error.
Do you mind sharing the minimal reproducible source code, so as to try and understand the root cause of the error?
--Rahul
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Note that I get the same error on the Mac with intel 19.
avx.hpp(69): internal error: assertion failed at: "shared/cfe/edgcpfe/decls.c", line 9486
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Noel,
Looks like a bug to me. Thanks for reporting this and providing sample codes, preprocessed files.
I will escalate this issue to the concerned team.
Regards,
Rahul
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the bug report. You can work around this compiler bug by providing a wrapper function around the intrinsic function. For example, add this function
#include <immintrin.h> __m256d wrap_mm256_set1_pd (double d) { return _mm256_set1_pd(d); }
And instead of referring to the intrinsic within the template, use the wrapper function's name,
static constexpr unary_value initialize = wrap_mm256_set1_pd;
Hope this helps. --Melanie
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is another workaround that doesn't require you to modify your source code, you can #define this symbol or put it into the compiler flags
icpc -c -D__INTEL_COMPILER_USE_INTRINSIC_PROTOTYPES=1 test.cpp
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have not heard back from you, so I will go ahead and close this thread. Intel will no longer monitor this thread. Feel free to post a new query if you require further assistance from Intel.

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