STL_MSFT added a comment.

Yes, the "real builtin" approach seems to be best. For a recent example, 
https://reviews.llvm.org/D49606 added `__shiftright128` as an inline function 
in intrin.h, but that didn't work with MSVC's STL when I moved our declaration 
of `__shiftright128` from intrin.h to intrin0.h. This was fixed by 
https://reviews.llvm.org/D50907 making `__shiftright128` a real builtin.

For the record, MSVC's intrin.h declares ~880 intrinsics (plus many many more 
from immintrin.h etc.) and it includes intrin0.h to get the declarations of 
~130 intrinsics. There is no duplication - each intrinsic is declared in either 
the small intrin0.h or the large intrin.h. MSVC's STL then includes intrin0.h 
in its headers for increased throughput. We occasionally move intrinsics from 
intrin.h to intrin0.h as we discover that they're needed in the STL (as we've 
recently done for `__shiftright128`, `_umul128`, `_BitScanForward[64]`, and 
`_BitScanReverse[64]`).


Repository:
  rC Clang

https://reviews.llvm.org/D53912



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to