Browse Source

More load experiments

Groove 7 years ago
parent
commit
4712d510cf
1 changed files with 54 additions and 2 deletions
  1. 54 2
      test/gtx/gtx_load.cpp

+ 54 - 2
test/gtx/gtx_load.cpp

@@ -11,13 +11,65 @@
 
 namespace glm
 {
-/*
+	enum genTypeEnum
+	{
+		QUALIFIER_HIGHP,
+		QUALIFIER_MEDIUMP,
+		QUALIFIER_LOWP
+	};
+
+	template <typename genType>
+	struct genTypeTrait
+	{};
+
+	template <length_t L, typename T>
+	struct genTypeTrait<vec<L, T, aligned_highp> >
+	{
+		static const genTypeEnum GENTYPE = QUALIFIER_HIGHP;
+	};
+
+	template <length_t L, typename T>
+	struct genTypeTrait<vec<L, T, aligned_mediump> >
+	{
+		static const genTypeEnum GENTYPE = QUALIFIER_MEDIUMP;
+	};
+
+	template <length_t L, typename T>
+	struct genTypeTrait<vec<L, T, aligned_lowp> >
+	{
+		static const genTypeEnum GENTYPE = QUALIFIER_LOWP;
+	};
+
+	template<length_t L, typename T, qualifier Q, bool isAligned>
+	struct load_gentype
+	{
+	
+	};
+
+#	if GLM_ARCH & GLM_ARCH_SSE_BIT
+	template<qualifier Q>
+	struct load_gentype<4, float, Q, true>
+	{
+		GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, float, Q> load(float const* Mem)
+		{
+			vec<4, float, Q> Result;
+			Result.data = _mm_loadu_ps(Mem);
+			return Result;
+		}
+	};
+#	endif//GLM_ARCH & GLM_ARCH_SSE_BIT
+
+	template<typename genType>
+	GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType example_identity()
+	{
+		return detail::init_gentype<genType, detail::genTypeTrait<genType>::GENTYPE>::identity();
+	}
+
 	template <typename genType, typename valType>
 	genType load(valType const* Mem)
 	{
 		
 	}
-*/
 
 	aligned_vec4 loadu(float const* Mem)
 	{