Advertisement
Parcle

SSE Example

Feb 9th, 2023
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | Source Code | 0 0
  1. #include <intrin.h>
  2. #include <immintrin.h>
  3. #include <smmintrin.h>
  4. #include <wmmintrin.h>
  5.  
  6. #include <stdio.h>
  7.  
  8. typedef unsigned int u32;
  9.  
  10. u32 data[] = {
  11.     1,
  12.     2,
  13.     3,
  14.     4
  15. };
  16.  
  17. u32 SingleSSE(u32 Count, u32 *Input)
  18. {
  19.     __m128i Sum = _mm_setzero_si128();
  20.     for(u32 Index = 0; Index < Count; Index += 4)
  21.     {
  22.         Sum = _mm_add_epi32(Sum, _mm_load_si128((__m128i *)&Input[Index]));
  23.     }
  24.  
  25.     Sum = _mm_hadd_epi32(Sum, Sum);
  26.     Sum = _mm_hadd_epi32(Sum, Sum);
  27.    
  28.     return _mm_cvtsi128_si32(Sum);
  29. }
  30.  
  31. #pragma optimize("", off)
  32. int main(int ArgCount, char** Args)
  33. {
  34.     printf("%d", SingleSSE(4, data));
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement