2013/7/3 Jacek Caban <[email protected]>:
> On 07/03/13 02:29, dw wrote:
>> Thanks to both Kai and Jacek whose suggestions made this patch much
>> better.
>>
>> This patch includes two parts.  The first (and more important) deals
>> with how MSVC's intrinsics are used in mingw-w64:
>>
>> winnt.h:
>>
>> - In all cases (x86, x64, cygwin, not cygwin), remove include for
>> intrin.h and always include x86intrin.h.
>> - Always include (new file) intrin-impl.h, along with define to ensure
>> only winnt.h-related inline functions are created.
>> - Move all the implementations for the intrinsics I have been working
>> on from winnt.h to (new file) psdk_inc/intrin-impl.h.
>> - Temporarily (until these get migrated to intrin-impl.h) add
>> prototypes for __readgs* and __writegs* from intrin.h, needed since
>> intrin.h is no longer included.
>>
>> intrin.h:
>> - Add include for intrin-impl.h.
>> - Add comments describing how the MSVC intrinsics work in gcc.
>> - Changed all // to /* */
>> - Changed various "#if !(__ia64__ || __x86_64)" to "#if
>> !(defined(__ia64__) || defined(__x86_64))" which was causing compiler
>> warnings with certain settings.
>>
>> intrin-impl.h:
>> - New file to hold all inline versions of functions related to MSVC's
>> intrinsics.
>> - Add copious comments to the top of the file describing the logic of
>> how this should work.
>> - Use __MINGW_INTRIN_INLINE instead of __CRT_INLINE for functions
>>
>> Other:
>> - Make the corresponding changes to the files in
>> mingw-w64-crt\intrincs\*.c to use the new approach in intrin-impl.h.
>>
>> The second part relates to __faststorefence, _ReadWriteBarrier et al:
>>
>> - The existing code for __faststorefence doesn't actually generate a
>> fence.  Create intrinsic to use sfence which appears to be faster than
>> MS's trick on newer processors.
>> - MS's MemoryBarrier can't use __faststorefence if we aren't using
>> MS's trick.  Change this to use mfence.
>> - Add definitions for _ReadWriteBarrier, _ReadBarrier, _WriteBarrier.
>> This is done with #define, since inline may not produce exactly the
>> same results.
>> - Add intrinsic for __int2c using __builtint from intrin-mac.h.
>> - The code for DbgRaiseAssertionFailure won't compile with
>> -masm=intel.  Use __builtint from intrin-mac.h.
>> - Add __buildint to intrin-mac.h for DbgRaiseAssertionFailure & __int2c.
>
> Looks good to me.
>
> Thanks,
> Jacek

Yes, patch is ok. Jacek feel free to commit.

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

Reply via email to