https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116157

            Bug ID: 116157
           Summary: AVX2 _mm256_exp_ps function is missing in the compiler
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: binklings at 163 dot com
  Target Milestone: ---

Hello,
Issue:

In both gcc and g++, the _mm256_exp_ps function in Intel AVX2 intrinsics is
missing
gcc/g++ version: x86_64-posix-seh-rev1 13.2.0


Code:

#include <immintrin.h>

int main(){
    float a[4] = {0.1, 0.2, 0.3, 0.4};
    __m256 vec = _mm256_loadu_ps(a);
    vec = _mm256_exp_ps(vec);
    _mm256_storeu_ps(a, vec);
}


Compiler Command:

g++ -mavx2 -o test test.cpp
(or gcc)


both output:

test.cpp: In function 'int main()':
test.cpp:6:11: error: '_mm256_exp_ps' was not declared in this scope; did you
mean '_mm256_rcp_ps'?
    6 |     vec = _mm256_exp_ps(vec);
      |           ^~~~~~~~~~~~~
      |           _mm256_rcp_ps



The _mm256_exp_ps function:
https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/2021-10/mm-exp-ps-mm256-exp-ps.html

It seems that this SVML function can only be used in Intel compiler or MSVC.
Will it be supported in gcc/g++? Is there a way to use this function? Thanks

Reply via email to