#pragma once #include "StgSharpGraphic.h" #include "SSGinternal.h" #include #include #include STGSHARPGRAPHIC_API __m128* __cdecl load(float x, float y, float z, float w) { float array[4] = {x,y,z,w}; __m128* ptr = _aligned_malloc(sizeof(__m128),16); if (NULL != ptr) { *ptr = _mm_loadu_ps(&array); return ptr; } else { return -1; } } STGSHARPGRAPHIC_API __m128* __cdecl addps(__m128* ptr1, __m128* ptr2) { __m128* ret = _aligned_malloc(sizeof(__m128*),16); if (NULL != ret) { *ret = _mm_add_ps(*ptr1, *ptr2); return ret; } else { return -1; } } STGSHARPGRAPHIC_API __m128* __cdecl subps(__m128* ptr1, __m128* ptr2) { __m128* ret = _aligned_malloc(sizeof(__m128*), 16); if (NULL != ret) { *ret = _mm_sub_ps(*ptr1, *ptr2); return ret; } else { return -1; } } STGSHARPGRAPHIC_API __m128* __cdecl mulps_const(__m128* ptr, float value) { float c[4] = { value, value, value, value }; __m128* ret = _aligned_malloc(sizeof(__m128),16); __m128 valueVec = _mm_loadu_ps(&c); if (NULL != ret) { *ret = _mm_mul_ps(*ptr,valueVec); return ret; } else { return -1; } } STGSHARPGRAPHIC_API __m128* __cdecl mulps(__m128* ptr1, __m128* ptr2) { __m128* ret = _aligned_malloc(sizeof(__m128), 16); if (NULL != ret) { *ret = _mm_mul_ps(*ptr1, *ptr2); return ret; } else { return -1; } } STGSHARPGRAPHIC_API void __cdecl deinitM128(__m128* ptr) { free(ptr); }