On Tue, Jun 30, 2015 at 2:45 AM, Michael Kuperstein < michael.m.kuperst...@intel.com> wrote:
> Author: mkuper > Date: Tue Jun 30 04:45:38 2015 > New Revision: 241053 > > URL: http://llvm.org/viewvc/llvm-project?rev=241053&view=rev > Log: > [X86] Add FXSR intrinsics > > Add intrinsics for the FXSR instructions > (FXSAVE/FXSAVE64/FXRSTOR/FXRSTOR64) > > These were previously declared in Intrin.h for MSVC compatibility, but now > that we have them implemented, these declarations can be removed. > > Added: > cfe/trunk/lib/Headers/fxsrintrin.h (with props) > Modified: > cfe/trunk/include/clang/Basic/BuiltinsX86.def > cfe/trunk/lib/Headers/CMakeLists.txt > cfe/trunk/lib/Headers/Intrin.h > cfe/trunk/lib/Headers/immintrin.h > cfe/trunk/test/CodeGen/builtins-x86.c > > Modified: cfe/trunk/include/clang/Basic/BuiltinsX86.def > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsX86.def?rev=241053&r1=241052&r2=241053&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/Basic/BuiltinsX86.def (original) > +++ cfe/trunk/include/clang/Basic/BuiltinsX86.def Tue Jun 30 04:45:38 2015 > @@ -656,6 +656,12 @@ BUILTIN(__builtin_ia32_wrfsbase64, "vULL > BUILTIN(__builtin_ia32_wrgsbase32, "vUi", "") > BUILTIN(__builtin_ia32_wrgsbase64, "vULLi", "") > > +// FXSR > +BUILTIN(__builtin_ia32_fxrstor, "vv*", "") > +BUILTIN(__builtin_ia32_fxrstor64, "vv*", "") > +BUILTIN(__builtin_ia32_fxsave, "vv*", "") > +BUILTIN(__builtin_ia32_fxsave64, "vv*", "") > + > // ADX > BUILTIN(__builtin_ia32_addcarryx_u32, "UcUcUiUiUi*", "") > BUILTIN(__builtin_ia32_addcarryx_u64, "UcUcULLiULLiULLi*", "") > > Modified: cfe/trunk/lib/Headers/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/CMakeLists.txt?rev=241053&r1=241052&r2=241053&view=diff > > ============================================================================== > --- cfe/trunk/lib/Headers/CMakeLists.txt (original) > +++ cfe/trunk/lib/Headers/CMakeLists.txt Tue Jun 30 04:45:38 2015 > @@ -22,6 +22,7 @@ set(files > float.h > fma4intrin.h > fmaintrin.h > + fxsrintrin.h > htmintrin.h > htmxlintrin.h > ia32intrin.h > > Modified: cfe/trunk/lib/Headers/Intrin.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/Intrin.h?rev=241053&r1=241052&r2=241053&view=diff > > ============================================================================== > --- cfe/trunk/lib/Headers/Intrin.h (original) > +++ cfe/trunk/lib/Headers/Intrin.h Tue Jun 30 04:45:38 2015 > @@ -180,8 +180,6 @@ unsigned long __cdecl _byteswap_ulong(un > unsigned short __cdecl _byteswap_ushort(unsigned short); > void __cdecl _disable(void); > void __cdecl _enable(void); > -void __cdecl _fxrstor(void const *); > -void __cdecl _fxsave(void *); > long _InterlockedAddLargeStatistic(__int64 volatile *_Addend, long > _Value); > static __inline__ > long _InterlockedAnd(long volatile *_Value, long _Mask); > @@ -358,8 +356,6 @@ unsigned char _bittestandreset64(__int64 > static __inline__ > unsigned char _bittestandset64(__int64 *, __int64); > unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64); > -void __cdecl _fxrstor64(void const *); > -void __cdecl _fxsave64(void *); > long _InterlockedAnd_np(long volatile *_Value, long _Mask); > short _InterlockedAnd16_np(short volatile *_Value, short _Mask); > __int64 _InterlockedAnd64_np(__int64 volatile *_Value, __int64 _Mask); > > Added: cfe/trunk/lib/Headers/fxsrintrin.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/fxsrintrin.h?rev=241053&view=auto > > ============================================================================== > --- cfe/trunk/lib/Headers/fxsrintrin.h (added) > +++ cfe/trunk/lib/Headers/fxsrintrin.h Tue Jun 30 04:45:38 2015 > @@ -0,0 +1,53 @@ > +/*===---- fxsrintrin.h - FXSR intrinsic > ------------------------------------=== > + * > + * 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. > + * > + > *===-----------------------------------------------------------------------=== > + */ > + > +#ifndef __IMMINTRIN_H > +#error "Never use <fxsrintrin.h> directly; include <immintrin.h> instead." > +#endif > + > +#ifndef __FXSRINTRIN_H > +#define __FXSRINTRIN_H > + > +#define DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) > I think you need to name this __DEFAULT_FN_ATTRS as DEFAULT_FN_ATTRS is not in the implementors namespace. Also, it looks like the other header files undef it once they are done using it. > + > +static __inline__ void DEFAULT_FN_ATTRS > +_fxsave(void *__p) { > + return __builtin_ia32_fxsave(__p); > +} > + > +static __inline__ void DEFAULT_FN_ATTRS > +_fxsave64(void *__p) { > + return __builtin_ia32_fxsave64(__p); > +} > + > +static __inline__ void DEFAULT_FN_ATTRS > +_fxrstor(void *__p) { > + return __builtin_ia32_fxrstor(__p); > +} > + > +static __inline__ void DEFAULT_FN_ATTRS > +_fxrstor64(void *__p) { > + return __builtin_ia32_fxrstor64(__p); > +} > + > +#endif > > Propchange: cfe/trunk/lib/Headers/fxsrintrin.h > > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: cfe/trunk/lib/Headers/fxsrintrin.h > > ------------------------------------------------------------------------------ > svn:keywords = Author Date Id Rev URL > > Propchange: cfe/trunk/lib/Headers/fxsrintrin.h > > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > Modified: cfe/trunk/lib/Headers/immintrin.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/immintrin.h?rev=241053&r1=241052&r2=241053&view=diff > > ============================================================================== > --- cfe/trunk/lib/Headers/immintrin.h (original) > +++ cfe/trunk/lib/Headers/immintrin.h Tue Jun 30 04:45:38 2015 > @@ -142,6 +142,8 @@ _writegsbase_u64(unsigned long long __V) > > #include <shaintrin.h> > > +#include <fxsrintrin.h> > + > /* Some intrinsics inside adxintrin.h are available only on processors > with ADX, > * whereas others are also available at all times. */ > #include <adxintrin.h> > > Modified: cfe/trunk/test/CodeGen/builtins-x86.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-x86.c?rev=241053&r1=241052&r2=241053&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGen/builtins-x86.c (original) > +++ cfe/trunk/test/CodeGen/builtins-x86.c Tue Jun 30 04:45:38 2015 > @@ -260,6 +260,10 @@ void f0() { > > (void) __builtin_ia32_ldmxcsr(tmp_Ui); > tmp_Ui = __builtin_ia32_stmxcsr(); > + (void)__builtin_ia32_fxsave(tmp_vp); > + (void)__builtin_ia32_fxsave64(tmp_vp); > + (void)__builtin_ia32_fxrstor(tmp_vp); > + (void)__builtin_ia32_fxrstor64(tmp_vp); > tmp_V4f = __builtin_ia32_cvtpi2ps(tmp_V4f, tmp_V2i); > tmp_V2i = __builtin_ia32_cvtps2pi(tmp_V4f); > tmp_i = __builtin_ia32_cvtss2si(tmp_V4f); > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits