[cfe-commits] r155425 - in /cfe/trunk: lib/Headers/CMakeLists.txt lib/Headers/intrin.h test/Headers/ms-intrin.c

Chandler Carruth chandlerc at gmail.com
Mon Apr 23 23:00:40 PDT 2012


On Mon, Apr 23, 2012 at 10:37 PM, Matt Beaumont-Gay <matthewbg at google.com>wrote:

> On Mon, Apr 23, 2012 at 22:23, Chandler Carruth <chandlerc at gmail.com>
> 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!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120423/6ed83f34/attachment.html>


More information about the cfe-commits mailing list