sfmt 0.7.0

Rust implementation of SIMD-oriented Fast Mersenne Twister (SFMT)
Documentation

#define SFMT_MEXP 19937
#include "SFMT-src-1.5.1/SFMT.h"
#include <stdio.h>

static const w128_t sse2_param_mask = {
    {SFMT_MSK1, SFMT_MSK2, SFMT_MSK3, SFMT_MSK4}};

#include "SFMT-src-1.5.1/SFMT-sse2.h"

void print128(__m128i var) {
  uint32_t *val = (uint32_t *)&var;
  printf("%i %i %i %i\n", val[0], val[1], val[2], val[3]);
}

int main() {
  const __m128i a = _mm_setr_epi32(1, 2, 3, 4);
  const __m128i b = _mm_setr_epi32(431, 232, 83, 14);
  const __m128i c = _mm_setr_epi32(213, 22, 93, 234);
  const __m128i d = _mm_setr_epi32(112, 882, 23, 124);
  __m128i r;
  mm_recursion(&r, a, a, a, a);
  print128(r);
  mm_recursion(&r, a, b, c, d);
  print128(r);
}