5

I've found that MSVC's copy of zmmintrin.h defines functions for computing the Inverse Cube Root of an __m512 32-bit float vector and a __m512d double vector

 _mm512_invcbrt_ps();
 _mm512_invcbrt_pd();

However, these functions appear nowhere in the Intel Intrinsics Guide: https://software.intel.com/sites/landingpage/IntrinsicsGuide/

or in Intel's more detailed development guide: https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/intrinsics/intrinsics-for-intel-advanced-vector-extensions-512-intel-avx-512-instructions/intrinsics-for-arithmetic-operations-1/intrinsics-for-short-vector-math-library-svml-operations/intrinsics-for-root-function-operations-512-bit.html

They don't seem to be listed on Microsoft's website though, see: https://learn.microsoft.com/en-us/cpp/intrinsics/compiler-intrinsics?view=msvc-160

I know there are Sequence Intrinsics for the Inverse Square Root:

_mm512_invsqrt_ps();
_mm512_invsqrt_pd();

and I'm aware that there are Inverse Cube Root Sequence Intrinsics for AVX:

 _mm256_invcbrt_ps();
 _mm256_invcbrt_pd();

So are _mm512_invcbrt_ps(); and _mm512_invcbrt_pd(); Microsoft Specific or did Intel literally forget to document one of their intrinsics ?!?

dave_thenerd
  • 448
  • 3
  • 10
  • 5
    xxx_invcbrt_xxx *et al* are part of SVML, rather than regular intrinsics which map to machine instructions. – Paul R Aug 14 '21 at 07:37
  • 4
    Kind of the opposite question from [Where is Clang's '\_mm256\_pow\_ps' intrinsic?](https://stackoverflow.com/q/36636159) / [C++ error: ‘\_mm\_sin\_ps’ was not declared in this scope](https://stackoverflow.com/q/31978592) about cases where Intel *does* confusingly document SVML functions next to actual intrinsics, but other compilers don't come with SVML. – Peter Cordes Aug 14 '21 at 11:38
  • I think it may be MSVC-specific after all, _mm512_invcbrt_ps does not compile on Godbolt's with GGC Trunk with options: -O3 -mavx512f mveclibabi=svml – dave_thenerd Aug 24 '21 at 02:14
  • 1
    I don't think they are MSVC-specific, as they are present here https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_invcbrt_p&expand=4092 , also available in ICC https://godbolt.org/z/bo3PYWrxc – Alex Guteniev Sep 13 '21 at 07:26
  • 1
    @AlexGuteniev I said in my post that I'm aware of the AVX Intrinsics, I'm asking about the AVX-512 versions using 512-Bit registers. – dave_thenerd Sep 14 '21 at 15:19
  • Hm, right. 512-bit are not documented. – Alex Guteniev Sep 14 '21 at 15:22

0 Answers0