Merged 0.9.7 branch, Factorized GLM_COMPILER_LLVM and GLM_COMPILER_APPLE_CLANG into GLM_COMPILER_CLANG

This commit is contained in:
Christophe Riccio 2016-07-16 00:54:05 +02:00
commit 6271aa1530
8 changed files with 170 additions and 106 deletions

View File

@ -255,7 +255,7 @@
# define GLM_CXX11_STATIC_ASSERT # define GLM_CXX11_STATIC_ASSERT
# endif # endif
#elif(GLM_COMPILER & GLM_COMPILER_LLVM) #elif(GLM_COMPILER & GLM_COMPILER_CLANG)
# if(__has_feature(cxx_exceptions)) # if(__has_feature(cxx_exceptions))
# define GLM_CXX98_EXCEPTIONS # define GLM_CXX98_EXCEPTIONS
# endif # endif
@ -396,4 +396,4 @@
# define GLM_CXX11_VARIADIC_TEMPLATES # define GLM_CXX11_VARIADIC_TEMPLATES
# endif # endif
#endif//(GLM_COMPILER & GLM_COMPILER_LLVM) #endif//(GLM_COMPILER & GLM_COMPILER_CLANG)

View File

@ -630,7 +630,7 @@ namespace detail
# else # else
return ::isnan(x) != 0; return ::isnan(x) != 0;
# endif # endif
# elif (GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM)) && (GLM_PLATFORM & GLM_PLATFORM_ANDROID) && __cplusplus < 201103L # elif (GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)) && (GLM_PLATFORM & GLM_PLATFORM_ANDROID) && __cplusplus < 201103L
return _isnan(x) != 0; return _isnan(x) != 0;
# elif GLM_COMPILER & GLM_COMPILER_CUDA # elif GLM_COMPILER & GLM_COMPILER_CUDA
return isnan(x) != 0; return isnan(x) != 0;
@ -664,7 +664,7 @@ namespace detail
# else # else
return ::isinf(x); return ::isinf(x);
# endif # endif
# elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM) # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)
# if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L) # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)
return _isinf(x) != 0; return _isinf(x) != 0;
# else # else

View File

@ -84,7 +84,7 @@ namespace glm
// atan // atan
template <typename genType> template <typename genType>
GLM_FUNC_QUALIFIER genType atan(genType const & y, genType const & x) GLM_FUNC_QUALIFIER genType atan(genType y, genType x)
{ {
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'atan' only accept floating-point input"); GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'atan' only accept floating-point input");
@ -137,7 +137,7 @@ namespace glm
using std::asinh; using std::asinh;
# else # else
template <typename genType> template <typename genType>
GLM_FUNC_QUALIFIER genType asinh(genType const & x) GLM_FUNC_QUALIFIER genType asinh(genType x)
{ {
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'asinh' only accept floating-point input"); GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'asinh' only accept floating-point input");
@ -156,7 +156,7 @@ namespace glm
using std::acosh; using std::acosh;
# else # else
template <typename genType> template <typename genType>
GLM_FUNC_QUALIFIER genType acosh(genType const & x) GLM_FUNC_QUALIFIER genType acosh(genType x)
{ {
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'acosh' only accept floating-point input"); GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'acosh' only accept floating-point input");
@ -177,7 +177,7 @@ namespace glm
using std::atanh; using std::atanh;
# else # else
template <typename genType> template <typename genType>
GLM_FUNC_QUALIFIER genType atanh(genType const & x) GLM_FUNC_QUALIFIER genType atanh(genType x)
{ {
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'atanh' only accept floating-point input"); GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'atanh' only accept floating-point input");

View File

@ -28,7 +28,7 @@
# pragma message("GLM: CUDA compiler detected") # pragma message("GLM: CUDA compiler detected")
# elif GLM_COMPILER & GLM_COMPILER_VC # elif GLM_COMPILER & GLM_COMPILER_VC
# pragma message("GLM: Visual C++ compiler detected") # pragma message("GLM: Visual C++ compiler detected")
# elif GLM_COMPILER & GLM_COMPILER_LLVM # elif GLM_COMPILER & GLM_COMPILER_CLANG
# pragma message("GLM: Clang compiler detected") # pragma message("GLM: Clang compiler detected")
# elif GLM_COMPILER & GLM_COMPILER_INTEL # elif GLM_COMPILER & GLM_COMPILER_INTEL
# pragma message("GLM: Intel Compiler detected") # pragma message("GLM: Intel Compiler detected")
@ -134,14 +134,14 @@
#elif defined(GLM_FORCE_CXX98) #elif defined(GLM_FORCE_CXX98)
# define GLM_LANG GLM_LANG_CXX98 # define GLM_LANG GLM_LANG_CXX98
#else #else
# if GLM_COMPILER & GLM_COMPILER_LLVM # if GLM_COMPILER & GLM_COMPILER_CLANG
# if __cplusplus >= 201402L // GLM_COMPILER_LLVM34 + -std=c++14 # if __cplusplus >= 201402L // GLM_COMPILER_CLANG34 + -std=c++14
# define GLM_LANG GLM_LANG_CXX14 # define GLM_LANG GLM_LANG_CXX14
# elif __has_feature(cxx_decltype_auto) && __has_feature(cxx_aggregate_nsdmi) // GLM_COMPILER_LLVM33 + -std=c++1y # elif __has_feature(cxx_decltype_auto) && __has_feature(cxx_aggregate_nsdmi) // GLM_COMPILER_CLANG33 + -std=c++1y
# define GLM_LANG GLM_LANG_CXX1Y # define GLM_LANG GLM_LANG_CXX1Y
# elif __cplusplus >= 201103L // GLM_COMPILER_LLVM33 + -std=c++11 # elif __cplusplus >= 201103L // GLM_COMPILER_CLANG33 + -std=c++11
# define GLM_LANG GLM_LANG_CXX11 # define GLM_LANG GLM_LANG_CXX11
# elif __has_feature(cxx_static_assert) // GLM_COMPILER_LLVM29 + -std=c++11 # elif __has_feature(cxx_static_assert) // GLM_COMPILER_CLANG29 + -std=c++11
# define GLM_LANG GLM_LANG_CXX0X # define GLM_LANG GLM_LANG_CXX0X
# elif __cplusplus >= 199711L # elif __cplusplus >= 199711L
# define GLM_LANG GLM_LANG_CXX98 # define GLM_LANG GLM_LANG_CXX98
@ -263,15 +263,8 @@
// http://gcc.gnu.org/projects/cxx0x.html // http://gcc.gnu.org/projects/cxx0x.html
// http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx // http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx
#if GLM_PLATFORM == GLM_PLATFORM_ANDROID || GLM_PLATFORM == GLM_PLATFORM_CYGWIN #if GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_APPLE_CLANG)
# define GLM_HAS_CXX11_STL 0 # if defined(_LIBCPP_VERSION) && GLM_LANG & GLM_LANG_CXX11_FLAG
#elif GLM_COMPILER & GLM_COMPILER_LLVM
# if __has_include(<__config>) // libc++
# include <__config>
//# else // libstdc++
//# include <bits/c++config.h>
# endif
# if defined(_LIBCPP_VERSION)// || defined(__GLIBCXX__)
# define GLM_HAS_CXX11_STL 1 # define GLM_HAS_CXX11_STL 1
# else # else
# define GLM_HAS_CXX11_STL 0 # define GLM_HAS_CXX11_STL 0
@ -284,7 +277,7 @@
#endif #endif
// N1720 // N1720
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert) # define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_STATIC_ASSERT 1 # define GLM_HAS_STATIC_ASSERT 1
@ -303,11 +296,11 @@
((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \ ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC2012)) || \
((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \ ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \
((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \ ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC43)) || \
((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_LLVM) && (GLM_COMPILER >= GLM_COMPILER_LLVM30))) ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG) && (GLM_COMPILER >= GLM_COMPILER_CLANG30)))
#endif #endif
// N2235 // N2235
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_CONSTEXPR __has_feature(cxx_constexpr) # define GLM_HAS_CONSTEXPR __has_feature(cxx_constexpr)
# define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR # define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
@ -320,7 +313,7 @@
#endif #endif
// N2672 // N2672
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers) # define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_INITIALIZER_LISTS 1 # define GLM_HAS_INITIALIZER_LISTS 1
@ -332,7 +325,7 @@
#endif #endif
// N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf // N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions) # define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)
#elif GLM_LANG & (GLM_LANG_CXX11_FLAG | GLM_LANG_CXXMS_FLAG) #elif GLM_LANG & (GLM_LANG_CXX11_FLAG | GLM_LANG_CXXMS_FLAG)
# define GLM_HAS_UNRESTRICTED_UNIONS 1 # define GLM_HAS_UNRESTRICTED_UNIONS 1
@ -344,7 +337,7 @@
#endif #endif
// N2346 // N2346
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions) # define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_DEFAULTED_FUNCTIONS 1 # define GLM_HAS_DEFAULTED_FUNCTIONS 1
@ -357,7 +350,7 @@
#endif #endif
// N2118 // N2118
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references) # define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_RVALUE_REFERENCES 1 # define GLM_HAS_RVALUE_REFERENCES 1
@ -369,7 +362,7 @@
#endif #endif
// N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf // N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions) # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1
@ -382,7 +375,7 @@
#endif #endif
// N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf // N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates) # define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_TEMPLATE_ALIASES 1 # define GLM_HAS_TEMPLATE_ALIASES 1
@ -395,7 +388,7 @@
#endif #endif
// N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html // N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
#if GLM_COMPILER & GLM_COMPILER_LLVM #if GLM_COMPILER & GLM_COMPILER_CLANG
# define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for) # define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)
#elif GLM_LANG & GLM_LANG_CXX11_FLAG #elif GLM_LANG & GLM_LANG_CXX11_FLAG
# define GLM_HAS_RANGE_FOR 1 # define GLM_HAS_RANGE_FOR 1
@ -450,8 +443,8 @@
# else # else
# define GLM_HAS_OPENMP 0 # define GLM_HAS_OPENMP 0
# endif # endif
# elif GLM_COMPILER & GLM_COMPILER_LLVM # elif GLM_COMPILER & GLM_COMPILER_CLANG
# if GLM_COMPILER >= GLM_COMPILER_LLVM38 # if GLM_COMPILER >= GLM_COMPILER_CLANG38
# define GLM_HAS_OPENMP 31 # define GLM_HAS_OPENMP 31
# else # else
# define GLM_HAS_OPENMP 0 # define GLM_HAS_OPENMP 0
@ -510,7 +503,7 @@
# if GLM_COMPILER & GLM_COMPILER_VC # if GLM_COMPILER & GLM_COMPILER_VC
# define GLM_INLINE __forceinline # define GLM_INLINE __forceinline
# define GLM_NEVER_INLINE __declspec((noinline)) # define GLM_NEVER_INLINE __declspec((noinline))
# elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM) # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)
# define GLM_INLINE inline __attribute__((__always_inline__)) # define GLM_INLINE inline __attribute__((__always_inline__))
# define GLM_NEVER_INLINE __attribute__((__noinline__)) # define GLM_NEVER_INLINE __attribute__((__noinline__))
# elif GLM_COMPILER & GLM_COMPILER_CUDA # elif GLM_COMPILER & GLM_COMPILER_CUDA
@ -590,15 +583,15 @@
# else # else
# define GLM_VECTOR_CALL # define GLM_VECTOR_CALL
# endif # endif
#elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_LLVM | GLM_COMPILER_CUDA | GLM_COMPILER_INTEL) #elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG | GLM_COMPILER_CUDA | GLM_COMPILER_INTEL)
# define GLM_DEPRECATED __attribute__((__deprecated__)) # define GLM_DEPRECATED __attribute__((__deprecated__))
# define GLM_ALIGN(x) __attribute__((aligned(x))) # define GLM_ALIGN(x) __attribute__((aligned(x)))
# define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x))) # define GLM_ALIGNED_STRUCT(x) struct __attribute__((aligned(x)))
# define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment))) # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))
# define GLM_RESTRICT_FUNC __restrict__ # define GLM_RESTRICT_FUNC __restrict__
# define GLM_RESTRICT __restrict__ # define GLM_RESTRICT __restrict__
# if GLM_COMPILER & GLM_COMPILER_LLVM # if GLM_COMPILER & GLM_COMPILER_CLANG
# if GLM_COMPILER >= GLM_COMPILER_LLVM37 # if GLM_COMPILER >= GLM_COMPILER_CLANG37
# define GLM_VECTOR_CALL __vectorcall # define GLM_VECTOR_CALL __vectorcall
# else # else
# define GLM_VECTOR_CALL # define GLM_VECTOR_CALL

View File

@ -30,7 +30,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType sec(genType angle); GLM_FUNC_DECL genType sec(genType angle);
/// Cosecant function. /// Cosecant function.
@ -48,7 +52,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType cot(genType angle); GLM_FUNC_DECL genType cot(genType angle);
/// Inverse secant function. /// Inverse secant function.
@ -57,7 +65,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType asec(genType x); GLM_FUNC_DECL genType asec(genType x);
/// Inverse cosecant function. /// Inverse cosecant function.
@ -66,7 +78,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType acsc(genType x); GLM_FUNC_DECL genType acsc(genType x);
/// Inverse cotangent function. /// Inverse cotangent function.
@ -75,7 +91,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType acot(genType x); GLM_FUNC_DECL genType acot(genType x);
/// Secant hyperbolic function. /// Secant hyperbolic function.
@ -83,7 +103,11 @@ namespace glm
/// @tparam genType Floating-point scalar or vector types. /// @tparam genType Floating-point scalar or vector types.
/// ///
/// @see gtc_reciprocal /// @see gtc_reciprocal
<<<<<<< HEAD
template <typename genType> template <typename genType>
=======
template <typename genType>
>>>>>>> 0.9.7
GLM_FUNC_DECL genType sech(genType angle); GLM_FUNC_DECL genType sech(genType angle);
/// Cosecant hyperbolic function. /// Cosecant hyperbolic function.

View File

@ -103,7 +103,14 @@
#define GLM_COMPILER_GCC51 0x02000300 #define GLM_COMPILER_GCC51 0x02000300
#define GLM_COMPILER_GCC52 0x02000400 #define GLM_COMPILER_GCC52 0x02000400
#define GLM_COMPILER_GCC53 0x02000500 #define GLM_COMPILER_GCC53 0x02000500
#define GLM_COMPILER_GCC60 0x02000600 #define GLM_COMPILER_GCC54 0x02000600
#define GLM_COMPILER_GCC60 0x02000700
#define GLM_COMPILER_GCC61 0x02000800
#define GLM_COMPILER_GCC62 0x02000900
#define GLM_COMPILER_GCC70 0x02000A00
#define GLM_COMPILER_GCC71 0x02000B00
#define GLM_COMPILER_GCC72 0x02000C00
#define GLM_COMPILER_GCC80 0x02000D00
// CUDA // CUDA
#define GLM_COMPILER_CUDA 0x10000000 #define GLM_COMPILER_CUDA 0x10000000
@ -115,17 +122,18 @@
#define GLM_COMPILER_CUDA65 0x10000090 #define GLM_COMPILER_CUDA65 0x10000090
#define GLM_COMPILER_CUDA70 0x100000A0 #define GLM_COMPILER_CUDA70 0x100000A0
#define GLM_COMPILER_CUDA75 0x100000B0 #define GLM_COMPILER_CUDA75 0x100000B0
#define GLM_COMPILER_CUDA80 0x100000C0
// LLVM // Clang
#define GLM_COMPILER_LLVM 0x20000000 #define GLM_COMPILER_CLANG 0x20000000
#define GLM_COMPILER_LLVM32 0x20000030 #define GLM_COMPILER_CLANG32 0x20000030
#define GLM_COMPILER_LLVM33 0x20000040 #define GLM_COMPILER_CLANG33 0x20000040
#define GLM_COMPILER_LLVM34 0x20000050 #define GLM_COMPILER_CLANG34 0x20000050
#define GLM_COMPILER_LLVM35 0x20000060 #define GLM_COMPILER_CLANG35 0x20000060
#define GLM_COMPILER_LLVM36 0x20000070 #define GLM_COMPILER_CLANG36 0x20000070
#define GLM_COMPILER_LLVM37 0x20000080 #define GLM_COMPILER_CLANG37 0x20000080
#define GLM_COMPILER_LLVM38 0x20000090 #define GLM_COMPILER_CLANG38 0x20000090
#define GLM_COMPILER_LLVM39 0x200000A0 #define GLM_COMPILER_CLANG39 0x200000A0
// Build model // Build model
#define GLM_MODEL_32 0x00000010 #define GLM_MODEL_32 0x00000010
@ -167,43 +175,43 @@
#elif defined(__clang__) #elif defined(__clang__)
# if GLM_PLATFORM & GLM_PLATFORM_APPLE # if GLM_PLATFORM & GLM_PLATFORM_APPLE
# if __clang_major__ == 5 && __clang_minor__ == 0 # if __clang_major__ == 5 && __clang_minor__ == 0
# define GLM_COMPILER GLM_COMPILER_LLVM33 # define GLM_COMPILER GLM_COMPILER_CLANG33
# elif __clang_major__ == 5 && __clang_minor__ == 1 # elif __clang_major__ == 5 && __clang_minor__ == 1
# define GLM_COMPILER GLM_COMPILER_LLVM34 # define GLM_COMPILER GLM_COMPILER_CLANG34
# elif __clang_major__ == 6 && __clang_minor__ == 0 # elif __clang_major__ == 6 && __clang_minor__ == 0
# define GLM_COMPILER GLM_COMPILER_LLVM35 # define GLM_COMPILER GLM_COMPILER_CLANG35
# elif __clang_major__ == 6 && __clang_minor__ >= 1 # elif __clang_major__ == 6 && __clang_minor__ >= 1
# define GLM_COMPILER GLM_COMPILER_LLVM36 # define GLM_COMPILER GLM_COMPILER_CLANG36
# elif __clang_major__ >= 7 # elif __clang_major__ >= 7
# define GLM_COMPILER GLM_COMPILER_LLVM37 # define GLM_COMPILER GLM_COMPILER_CLANG37
# else # else
# define GLM_COMPILER GLM_COMPILER_LLVM # define GLM_COMPILER GLM_COMPILER_CLANG
# endif # endif
# else # else
# if __clang_major__ == 3 && __clang_minor__ == 0 # if __clang_major__ == 3 && __clang_minor__ == 0
# define GLM_COMPILER GLM_COMPILER_LLVM30 # define GLM_COMPILER GLM_COMPILER_CLANG30
# elif __clang_major__ == 3 && __clang_minor__ == 1 # elif __clang_major__ == 3 && __clang_minor__ == 1
# define GLM_COMPILER GLM_COMPILER_LLVM31 # define GLM_COMPILER GLM_COMPILER_CLANG31
# elif __clang_major__ == 3 && __clang_minor__ == 2 # elif __clang_major__ == 3 && __clang_minor__ == 2
# define GLM_COMPILER GLM_COMPILER_LLVM32 # define GLM_COMPILER GLM_COMPILER_CLANG32
# elif __clang_major__ == 3 && __clang_minor__ == 3 # elif __clang_major__ == 3 && __clang_minor__ == 3
# define GLM_COMPILER GLM_COMPILER_LLVM33 # define GLM_COMPILER GLM_COMPILER_CLANG33
# elif __clang_major__ == 3 && __clang_minor__ == 4 # elif __clang_major__ == 3 && __clang_minor__ == 4
# define GLM_COMPILER GLM_COMPILER_LLVM34 # define GLM_COMPILER GLM_COMPILER_CLANG34
# elif __clang_major__ == 3 && __clang_minor__ == 5 # elif __clang_major__ == 3 && __clang_minor__ == 5
# define GLM_COMPILER GLM_COMPILER_LLVM35 # define GLM_COMPILER GLM_COMPILER_CLANG35
# elif __clang_major__ == 3 && __clang_minor__ == 6 # elif __clang_major__ == 3 && __clang_minor__ == 6
# define GLM_COMPILER GLM_COMPILER_LLVM36 # define GLM_COMPILER GLM_COMPILER_CLANG36
# elif __clang_major__ == 3 && __clang_minor__ == 7 # elif __clang_major__ == 3 && __clang_minor__ == 7
# define GLM_COMPILER GLM_COMPILER_LLVM37 # define GLM_COMPILER GLM_COMPILER_CLANG37
# elif __clang_major__ == 3 && __clang_minor__ == 8 # elif __clang_major__ == 3 && __clang_minor__ == 8
# define GLM_COMPILER GLM_COMPILER_LLVM38 # define GLM_COMPILER GLM_COMPILER_CLANG38
# elif __clang_major__ == 3 && __clang_minor__ >= 9 # elif __clang_major__ == 3 && __clang_minor__ >= 9
# define GLM_COMPILER GLM_COMPILER_LLVM39 # define GLM_COMPILER GLM_COMPILER_CLANG39
# elif __clang_major__ >= 4 # elif __clang_major__ >= 4
# define GLM_COMPILER GLM_COMPILER_LLVM39 # define GLM_COMPILER GLM_COMPILER_CLANG39
# else # else
# define GLM_COMPILER GLM_COMPILER_LLVM # define GLM_COMPILER GLM_COMPILER_CLANG
# endif # endif
# endif # endif
@ -247,10 +255,24 @@
# define GLM_COMPILER (GLM_COMPILER_GCC51) # define GLM_COMPILER (GLM_COMPILER_GCC51)
# elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 2) # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 2)
# define GLM_COMPILER (GLM_COMPILER_GCC52) # define GLM_COMPILER (GLM_COMPILER_GCC52)
# elif (__GNUC__ == 5) && (__GNUC_MINOR__ >= 3) # elif (__GNUC__ == 5) && (__GNUC_MINOR__ == 3)
# define GLM_COMPILER (GLM_COMPILER_GCC53) # define GLM_COMPILER (GLM_COMPILER_GCC53)
# elif (__GNUC__ >= 6) # elif (__GNUC__ == 5) && (__GNUC_MINOR__ >= 4)
# define GLM_COMPILER (GLM_COMPILER_GCC54)
# elif (__GNUC__ == 6) && (__GNUC_MINOR__ == 0)
# define GLM_COMPILER (GLM_COMPILER_GCC60) # define GLM_COMPILER (GLM_COMPILER_GCC60)
# elif (__GNUC__ == 6) && (__GNUC_MINOR__ == 1)
# define GLM_COMPILER (GLM_COMPILER_GCC61)
# elif (__GNUC__ == 6) && (__GNUC_MINOR__ >= 2)
# define GLM_COMPILER (GLM_COMPILER_GCC62)
# elif (__GNUC__ == 7) && (__GNUC_MINOR__ == 0)
# define GLM_COMPILER (GLM_COMPILER_GCC70)
# elif (__GNUC__ == 7) && (__GNUC_MINOR__ == 1)
# define GLM_COMPILER (GLM_COMPILER_GCC71)
# elif (__GNUC__ == 7) && (__GNUC_MINOR__ == 2)
# define GLM_COMPILER (GLM_COMPILER_GCC72)
# elif (__GNUC__ >= 8)
# define GLM_COMPILER (GLM_COMPILER_GCC80)
# else # else
# define GLM_COMPILER (GLM_COMPILER_GCC) # define GLM_COMPILER (GLM_COMPILER_GCC)
# endif # endif
@ -321,7 +343,7 @@
# define GLM_ARCH (GLM_ARCH_SSE3) # define GLM_ARCH (GLM_ARCH_SSE3)
#elif defined(GLM_FORCE_SSE2) #elif defined(GLM_FORCE_SSE2)
# define GLM_ARCH (GLM_ARCH_SSE2) # define GLM_ARCH (GLM_ARCH_SSE2)
#elif (GLM_COMPILER & (GLM_COMPILER_LLVM | GLM_COMPILER_GCC)) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_LINUX)) #elif (GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_GCC)) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_LINUX))
// This is Skylake set of instruction set // This is Skylake set of instruction set
# if defined(__AVX512BW__) && defined(__AVX512F__) && defined(__AVX512CD__) && defined(__AVX512VL__) && defined(__AVX512DQ__) # if defined(__AVX512BW__) && defined(__AVX512F__) && defined(__AVX512CD__) && defined(__AVX512VL__) && defined(__AVX512DQ__)
# define GLM_ARCH (GLM_ARCH_AVX512) # define GLM_ARCH (GLM_ARCH_AVX512)

View File

@ -78,6 +78,7 @@ glm::mat4 camera(float Translate, glm::vec2 const & Rotate)
- Added MIPS CPUs detection - Added MIPS CPUs detection
- Added PowerPC CPUs detection - Added PowerPC CPUs detection
- Use Cuda built-in function for abs function implementation with Cuda compiler - Use Cuda built-in function for abs function implementation with Cuda compiler
- Factorized GLM_COMPILER_LLVM and GLM_COMPILER_APPLE_CLANG into GLM_COMPILER_CLANG
##### Fixes: ##### Fixes:
- Fixed GTX_extended_min_max filename typo #386 - Fixed GTX_extended_min_max filename typo #386
@ -96,11 +97,14 @@ glm::mat4 camera(float Translate, glm::vec2 const & Rotate)
#### [GLM 0.9.7.6](https://github.com/g-truc/glm/tree/0.9.7) - 2016-0X-XX #### [GLM 0.9.7.6](https://github.com/g-truc/glm/tree/0.9.7) - 2016-0X-XX
##### Improvements: ##### Improvements:
- Added pkg-config file #509 - Added pkg-config file #509
- Updated list of compiler versions detected
- Improved C++ 11 STL detection #523
##### Fixes: ##### Fixes:
- Fixed STL for C++11 detection on ICC #510 - Fixed STL for C++11 detection on ICC #510
- Fixed missing vec1 overload to length2 and distance2 functions #431 - Fixed missing vec1 overload to length2 and distance2 functions #431
- Fixed long long warnings when using C++98 on GCC and Clang #482 - Fixed long long warnings when using C++98 on GCC and Clang #482
- Fixed scalar reciprocal functions (GTC_reciprocal) #520
#### [GLM 0.9.7.5](https://github.com/g-truc/glm/releases/tag/0.9.7.5) - 2016-05-24 #### [GLM 0.9.7.5](https://github.com/g-truc/glm/releases/tag/0.9.7.5) - 2016-05-24
##### Improvements: ##### Improvements:

View File

@ -62,9 +62,30 @@ int test_compiler()
case GLM_COMPILER_GCC53: case GLM_COMPILER_GCC53:
std::printf("GLM_COMPILER_GCC53\n"); std::printf("GLM_COMPILER_GCC53\n");
break; break;
case GLM_COMPILER_GCC54:
std::printf("GLM_COMPILER_GCC54\n");
break;
case GLM_COMPILER_GCC60: case GLM_COMPILER_GCC60:
std::printf("GLM_COMPILER_GCC60\n"); std::printf("GLM_COMPILER_GCC60\n");
break; break;
case GLM_COMPILER_GCC61:
std::printf("GLM_COMPILER_GCC61\n");
break;
case GLM_COMPILER_GCC62:
std::printf("GLM_COMPILER_GCC62\n");
break;
case GLM_COMPILER_GCC70:
std::printf("GLM_COMPILER_GCC70\n");
break;
case GLM_COMPILER_GCC71:
std::printf("GLM_COMPILER_GCC71\n");
break;
case GLM_COMPILER_GCC72:
std::printf("GLM_COMPILER_GCC72\n");
break;
case GLM_COMPILER_GCC80:
std::printf("GLM_COMPILER_GCC80\n");
break;
default: default:
std::printf("GCC version not detected\n"); std::printf("GCC version not detected\n");
Error += 1; Error += 1;
@ -75,33 +96,33 @@ int test_compiler()
{ {
std::printf("GLM_COMPILER_CUDA\n"); std::printf("GLM_COMPILER_CUDA\n");
} }
else if(GLM_COMPILER & GLM_COMPILER_LLVM) else if(GLM_COMPILER & GLM_COMPILER_CLANG)
{ {
switch(GLM_COMPILER) switch(GLM_COMPILER)
{ {
case GLM_COMPILER_LLVM32: case GLM_COMPILER_CLANG32:
std::printf("GLM_COMPILER_LLVM32\n"); std::printf("GLM_COMPILER_CLANG32\n");
break; break;
case GLM_COMPILER_LLVM33: case GLM_COMPILER_CLANG33:
std::printf("GLM_COMPILER_LLVM33\n"); std::printf("GLM_COMPILER_CLANG33\n");
break; break;
case GLM_COMPILER_LLVM34: case GLM_COMPILER_CLANG34:
std::printf("GLM_COMPILER_LLVM34\n"); std::printf("GLM_COMPILER_CLANG34\n");
break; break;
case GLM_COMPILER_LLVM35: case GLM_COMPILER_CLANG35:
std::printf("GLM_COMPILER_LLVM35\n"); std::printf("GLM_COMPILER_CLANG35\n");
break; break;
case GLM_COMPILER_LLVM36: case GLM_COMPILER_CLANG36:
std::printf("GLM_COMPILER_LLVM36\n"); std::printf("GLM_COMPILER_CLANG36\n");
break; break;
case GLM_COMPILER_LLVM37: case GLM_COMPILER_CLANG37:
std::printf("GLM_COMPILER_LLVM37\n"); std::printf("GLM_COMPILER_CLANG37\n");
break; break;
case GLM_COMPILER_LLVM38: case GLM_COMPILER_CLANG38:
std::printf("GLM_COMPILER_LLVM38\n"); std::printf("GLM_COMPILER_CLANG38\n");
break; break;
case GLM_COMPILER_LLVM39: case GLM_COMPILER_CLANG39:
std::printf("GLM_COMPILER_LLVM39\n"); std::printf("GLM_COMPILER_CLANG39\n");
break; break;
default: default:
std::printf("LLVM version not detected\n"); std::printf("LLVM version not detected\n");