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/ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
