2013/6/19 dw <[email protected]>:
> So, having heard nothing back on this topic, I've decided to just try it and
> see how it looks.
Thanks.
> Below are the proposed contents of the new file intrin-impl.h, which gets
> included at the bottom of intrin.h. It's still a little rough, but it
> should be enough to decide if I'm heading in the right direction. My plan
> (pending feedback) is to see about migrating the rest of my most recent
> patch attempt (__faststorefence et al) to using this approach. Nothing
> tests ideas like using them.
>
> --------------------------------------------------------------------------------------------
>
> /* To use the implementations in this file, you would normally just #include
> <intrin.h>
> This will define inlines for all intrinsics.
> */
>
> /* To implement the library versions of the functions in this file, add code
> like this
> to the appropriate c file in mingw-w64-crt\intrincs:
>
> #define __INTRINSIC_ONLYSPECIAL
> #define __INTRINSIC_SPECIAL___stosb // Specify the function to
> implement
>
> #include <intrin.h>
> */
>
> /* To add an implementation for a new intrinsic to this file, first make
> sure the definition exists in intrin.h.
> The assumption is that intrin.h will ONLY contain definitions for MSVC's
> intrinsic functions. Next,
> use this outline when adding definitions to this file:
>
> #if __INTRINSIC_PROLOG(__faststorefence) // Checks to see if needed
>
> __INTRINSICS_USEINLINE // Optional. May be omitted (for example when using
> #define)
> <code goes here>
>
> #endif // __INTRINSIC_PROLOG
> */
>
> #ifndef _INTRIN_IMPL_
> #define _INTRIN_IMPL_
>
> #include <psdk_inc/intrin-mac.h>
>
> /* The logic for this macro is:
> (if we are not just defining special OR (we are defining special AND this
> is one of the ones we are defining))
> */
> #define __INTRINSIC_PROLOG(name) (!defined (__INTRINSIC_ONLYSPECIAL)) ||
> (defined (__INTRINSIC_ONLYSPECIAL) && defined(__INTRINSIC_SPECIAL_ ## name))
>
> #ifdef __INTRINSIC_ONLYSPECIAL
> #define __INTRINSICS_USEINLINE
> #else
> #define __INTRINSICS_USEINLINE __MINGW_INTRIN_INLINE
> #endif
>
> #ifdef __x86_64__
>
> #if __INTRINSIC_PROLOG(__faststorefence)
> __INTRINSICS_USEINLINE void __faststorefence(void) {
> _mm_sfence();
> }
> #endif // __INTRINSIC_PROLOG
>
> #endif // __x86_64__
>
> #if __INTRINSIC_PROLOG(__int2c)
> __INTRINSICS_USEINLINE void __int2c(void) {
> __buildint(0x2c);
> }
> #endif // __INTRINSIC_PROLOG
>
> #endif // _INTRIN_IMPL_
>
Code looks ok. I have no objections.
Thanks,
Kai
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public