Browse Source

Merged 0.9.7 branch, Factorized GLM_COMPILER_LLVM and GLM_COMPILER_APPLE_CLANG into GLM_COMPILER_CLANG

Christophe Riccio 9 years ago
parent
commit
6271aa1530

+ 2 - 2
glm/detail/_features.hpp

@@ -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)

+ 2 - 2
glm/detail/func_common.inl

@@ -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

+ 5 - 5
glm/detail/func_trigonometric.inl

@@ -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");
 
 
@@ -136,8 +136,8 @@ namespace glm
 #	if GLM_HAS_CXX11_STL
 #	if GLM_HAS_CXX11_STL
 		using std::asinh;
 		using std::asinh;
 #	else
 #	else
-		template <typename genType> 
-		GLM_FUNC_QUALIFIER genType asinh(genType const & x)
+		template <typename genType>
+		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");
 		
 		

+ 24 - 31
glm/detail/setup.hpp

@@ -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 __cplusplus >= 201402L // GLM_COMPILER_LLVM34 + -std=c++14
+#	if GLM_COMPILER & GLM_COMPILER_CLANG
+#		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
-#	define GLM_HAS_CXX11_STL 0
-#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__)
+#if GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_APPLE_CLANG)
+#	if defined(_LIBCPP_VERSION) && GLM_LANG & GLM_LANG_CXX11_FLAG
 #		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
-#		if GLM_COMPILER >= GLM_COMPILER_LLVM38
+#	elif GLM_COMPILER & GLM_COMPILER_CLANG
+#		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_LLVM37
+#	if GLM_COMPILER & GLM_COMPILER_CLANG
+#		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

+ 41 - 17
glm/gtc/reciprocal.hpp

@@ -24,16 +24,20 @@ namespace glm
 	/// @addtogroup gtc_reciprocal
 	/// @addtogroup gtc_reciprocal
 	/// @{
 	/// @{
 
 
-	/// Secant function. 
+	/// Secant function.
 	/// hypotenuse / adjacent or 1 / cos(x)
 	/// hypotenuse / adjacent or 1 / cos(x)
 	/// 
 	/// 
 	/// @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.
 	/// hypotenuse / opposite or 1 / sin(x)
 	/// hypotenuse / opposite or 1 / sin(x)
 	/// 
 	/// 
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
@@ -42,91 +46,111 @@ namespace glm
 	template <typename genType> 
 	template <typename genType> 
 	GLM_FUNC_DECL genType csc(genType angle);
 	GLM_FUNC_DECL genType csc(genType angle);
 		
 		
-	/// Cotangent function. 
+	/// Cotangent function.
 	/// adjacent / opposite or 1 / tan(x)
 	/// adjacent / opposite or 1 / tan(x)
 	/// 
 	/// 
 	/// @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.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @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.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @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.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @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.
 	/// 
 	/// 
 	/// @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.
 	/// 
 	/// 
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// 
 	/// 
 	/// @see gtc_reciprocal
 	/// @see gtc_reciprocal
-	template <typename genType> 
+	template <typename genType>
 	GLM_FUNC_DECL genType csch(genType angle);
 	GLM_FUNC_DECL genType csch(genType angle);
 		
 		
-	/// Cotangent hyperbolic function. 
+	/// Cotangent hyperbolic function.
 	/// 
 	/// 
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// 
 	/// 
 	/// @see gtc_reciprocal
 	/// @see gtc_reciprocal
-	template <typename genType> 
+	template <typename genType>
 	GLM_FUNC_DECL genType coth(genType angle);
 	GLM_FUNC_DECL genType coth(genType angle);
 
 
-	/// Inverse secant hyperbolic function. 
+	/// Inverse secant hyperbolic function.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// 
 	/// 
 	/// @see gtc_reciprocal
 	/// @see gtc_reciprocal
-	template <typename genType> 
+	template <typename genType>
 	GLM_FUNC_DECL genType asech(genType x);
 	GLM_FUNC_DECL genType asech(genType x);
 
 
-	/// Inverse cosecant hyperbolic function. 
+	/// Inverse cosecant hyperbolic function.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// 
 	/// 
 	/// @see gtc_reciprocal
 	/// @see gtc_reciprocal
-	template <typename genType> 
+	template <typename genType>
 	GLM_FUNC_DECL genType acsch(genType x);
 	GLM_FUNC_DECL genType acsch(genType x);
 		
 		
-	/// Inverse cotangent hyperbolic function. 
+	/// Inverse cotangent hyperbolic function.
 	/// 
 	/// 
 	/// @return Return an angle expressed in radians.
 	/// @return Return an angle expressed in radians.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// @tparam genType Floating-point scalar or vector types.
 	/// 
 	/// 
 	/// @see gtc_reciprocal
 	/// @see gtc_reciprocal
-	template <typename genType> 
+	template <typename genType>
 	GLM_FUNC_DECL genType acoth(genType x);
 	GLM_FUNC_DECL genType acoth(genType x);
 
 
 	/// @}
 	/// @}

+ 54 - 32
glm/simd/platform.h

@@ -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
-#define GLM_COMPILER_LLVM			0x20000000
-#define GLM_COMPILER_LLVM32			0x20000030
-#define GLM_COMPILER_LLVM33			0x20000040
-#define GLM_COMPILER_LLVM34			0x20000050
-#define GLM_COMPILER_LLVM35			0x20000060
-#define GLM_COMPILER_LLVM36			0x20000070
-#define GLM_COMPILER_LLVM37			0x20000080
-#define GLM_COMPILER_LLVM38			0x20000090
-#define GLM_COMPILER_LLVM39			0x200000A0
+// Clang
+#define GLM_COMPILER_CLANG			0x20000000
+#define GLM_COMPILER_CLANG32			0x20000030
+#define GLM_COMPILER_CLANG33			0x20000040
+#define GLM_COMPILER_CLANG34			0x20000050
+#define GLM_COMPILER_CLANG35			0x20000060
+#define GLM_COMPILER_CLANG36			0x20000070
+#define GLM_COMPILER_CLANG37			0x20000080
+#define GLM_COMPILER_CLANG38			0x20000090
+#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)

+ 4 - 0
readme.md

@@ -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:

+ 38 - 17
test/core/core_setup_message.cpp

@@ -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:
-			std::printf("GLM_COMPILER_LLVM32\n");
+		case GLM_COMPILER_CLANG32:
+			std::printf("GLM_COMPILER_CLANG32\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM33:
-			std::printf("GLM_COMPILER_LLVM33\n");
+		case GLM_COMPILER_CLANG33:
+			std::printf("GLM_COMPILER_CLANG33\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM34:
-			std::printf("GLM_COMPILER_LLVM34\n");
+		case GLM_COMPILER_CLANG34:
+			std::printf("GLM_COMPILER_CLANG34\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM35:
-			std::printf("GLM_COMPILER_LLVM35\n");
+		case GLM_COMPILER_CLANG35:
+			std::printf("GLM_COMPILER_CLANG35\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM36:
-			std::printf("GLM_COMPILER_LLVM36\n");
+		case GLM_COMPILER_CLANG36:
+			std::printf("GLM_COMPILER_CLANG36\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM37:
-			std::printf("GLM_COMPILER_LLVM37\n");
+		case GLM_COMPILER_CLANG37:
+			std::printf("GLM_COMPILER_CLANG37\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM38:
-			std::printf("GLM_COMPILER_LLVM38\n");
+		case GLM_COMPILER_CLANG38:
+			std::printf("GLM_COMPILER_CLANG38\n");
 			break;
 			break;
-		case GLM_COMPILER_LLVM39:
-			std::printf("GLM_COMPILER_LLVM39\n");
+		case GLM_COMPILER_CLANG39:
+			std::printf("GLM_COMPILER_CLANG39\n");
 			break;
 			break;
 		default:
 		default:
 			std::printf("LLVM version not detected\n");
 			std::printf("LLVM version not detected\n");