-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Closed
Labels
enhancementSomething can be improvedSomething can be improvedresolvedSuccessfully resolved without a commitSuccessfully resolved without a commit
Description
While performing surgery on #935 to make it header-only for /clr:pure compatibility, I made <complex> drag in arm64_neon.h:
Lines 23 to 32 in 19c683d
| #elif defined(_M_IX86) || defined(_M_X64) | |
| #define _FMP_USING_X86_X64_INTRINSICS | |
| #include <emmintrin.h> | |
| #include <isa_availability.h> | |
| extern "C" int __isa_available; | |
| extern "C" __m128d __cdecl _mm_fmsub_sd(__m128d, __m128d, __m128d); | |
| #elif defined(_M_ARM64) | |
| #define _FMP_USING_ARM64_INTRINSICS | |
| #include <arm64_neon.h> | |
| #endif // ^^^ defined(_M_ARM64) ^^^ |
@statementreply observed that arm64_neon.h declares a zillion non-_Ugly identifiers and macros.
We should consider doing something about this. Possibilities:
- @CaseyCarter suggested extracting a small subheader (possibly into
intrin0.hitself) with just what the STL needs. This would also be good for x86/x64emmintrin.h. - Wait for vNext and after
/clr:pureis erased from human memory, go back to @statementreply's original separately compiled design, which avoids this identifier pollution. - Hybrid approach: Continue to use the header-only, non-intrinsic code for
/clr:pure, but separately compile the intrinsics for use by native and/clrcode. (The only reason I didn't try this was time pressure.)
frederick-vs-ja
Metadata
Metadata
Assignees
Labels
enhancementSomething can be improvedSomething can be improvedresolvedSuccessfully resolved without a commitSuccessfully resolved without a commit