On Mon, Apr 23, 2012 at 10:37 PM, Matt Beaumont-Gay <[email protected]>wrote:
> On Mon, Apr 23, 2012 at 22:23, Chandler Carruth <[email protected]> > wrote: > > Author: chandlerc > > Date: Tue Apr 24 00:23:54 2012 > > New Revision: 155425 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=155425&view=rev > > Log: > > Introduce an initial sketch of a MSVC compatible 'intrin.h' builtin > > header, along with a stub test to make sure it compiles in the > > appropriate modes. > > > > Thanks to Aaron Ballman for working with me to figure out the initial > > strategy here, and to Nico for reviewing and pestering me to actually > > commit it. > > > > Added: > > cfe/trunk/lib/Headers/intrin.h > > cfe/trunk/test/Headers/ms-intrin.c > > Modified: > > cfe/trunk/lib/Headers/CMakeLists.txt > > > > Modified: cfe/trunk/lib/Headers/CMakeLists.txt > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=155425&r1=155424&r2=155425&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Headers/CMakeLists.txt (original) > > +++ cfe/trunk/lib/Headers/CMakeLists.txt Tue Apr 24 00:23:54 2012 > > @@ -8,6 +8,7 @@ > > float.h > > fma4intrin.h > > immintrin.h > > + intrin.h > > iso646.h > > limits.h > > lzcntintrin.h > > > > Added: cfe/trunk/lib/Headers/intrin.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/intrin.h?rev=155425&view=auto > > > ============================================================================== > > --- cfe/trunk/lib/Headers/intrin.h (added) > > +++ cfe/trunk/lib/Headers/intrin.h Tue Apr 24 00:23:54 2012 > > @@ -0,0 +1,66 @@ > > +/*===---- intrin.h - Microsoft VS compatible X86 intrinsics > -----------------=== > > + * > > + * Permission is hereby granted, free of charge, to any person > obtaining a copy > > + * of this software and associated documentation files (the > "Software"), to deal > > + * in the Software without restriction, including without limitation > the rights > > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or > sell > > + * copies of the Software, and to permit persons to whom the Software is > > + * furnished to do so, subject to the following conditions: > > + * > > + * The above copyright notice and this permission notice shall be > included in > > + * all copies or substantial portions of the Software. > > + * > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > EXPRESS OR > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > MERCHANTABILITY, > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT > SHALL THE > > + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR > OTHER > > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, > ARISING FROM, > > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > DEALINGS IN > > + * THE SOFTWARE. > > + * > > + > *===-----------------------------------------------------------------------=== > > + */ > > + > > +/* Unless we're compiling targeting MSVC platform, this header > shouldn't even > > + * *exist*. If there is a system header with the same name, defer to > that, > > + * etherwise produce an error for the user. > > + */ > > +#ifndef _MSC_VER > > +# if defined(__has_include_next) && __has_include_next(<intrin.h>) > > +# include_next <intrin.h> > > +# else > > +# error The <intrin.h> builtin header is for use when targeting > Windows and \ > > + provides MSVC compatible intrinsic declarations. It shouldn't > be used \ > > + on non-Windows targets. Instead, see <x86intrin.h> which is > supported \ > > + by Clang, GCC, and ICC on all platforms. > > +# endif > > +#else /* _MSC_VER */ > > + > > +#ifndef __INTRIN_H > > +#define __INTRIN_H > > + > > +/* These headers need to be provided by intrin.h in case users depend > on any of > > + * their contents. However, some of them are unavailable in freestanding > > + * builds, so guard them appropriately. > > + */ > > +#if __STDC_HOSTED__ > > +# include <crtdefs.h> > > +# include <setjmp.h> > > +#endif > > +#include <stddef.h> > > + > > +/* Microsoft includes all of the intrinsics, and then restricts their > > + * availability based on the particular target CPU; with Clang te rely > on the > > Typo: s/te/we/ > Fixed thanks!
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
