31 #include <m4ri/m4ri_config.h> 
   34 #include <emmintrin.h> 
   37 #include <m4ri/misc.h> 
   45 static inline void _mzd_combine(
word *c, 
word const *t1, 
wi_t wide_in) {
 
   55   __m128i *__c = (__m128i*)c;
 
   56   __m128i *__t1 = (__m128i*)t1;
 
   57   const __m128i *eof = (__m128i*)((
unsigned long)(c + wide) & ~0xFUL);
 
   62     xmm1 = _mm_xor_si128(*__c, *__t1++);
 
   64     xmm1 = _mm_xor_si128(*__c, *__t1++);
 
   69     xmm1 = _mm_xor_si128(*__c, *__t1++); 
 
   75   wide = ((
sizeof(
word) * wide) % 16) / 
sizeof(
word);
 
   78     __M4RI_DD_RAWROW(c, wide_in);
 
   81 #endif // __M4RI_HAVE_SSE2 
   83   wi_t n = (wide + 7) / 8;
 
   85   case 0: 
do { *c++ ^= *t1++;
 
   86     case 7:    *c++ ^= *t1++;
 
   87     case 6:    *c++ ^= *t1++;
 
   88     case 5:    *c++ ^= *t1++;
 
   89     case 4:    *c++ ^= *t1++;
 
   90     case 3:    *c++ ^= *t1++;
 
   91     case 2:    *c++ ^= *t1++;
 
   92     case 1:    *c++ ^= *t1++;
 
   95   __M4RI_DD_RAWROW(c, wide_in);
 
   99 #include "xor_template.h" 
  103 #include "xor_template.h" 
  107 #include "xor_template.h" 
  111 #include "xor_template.h" 
  115 #include "xor_template.h" 
  119 #include "xor_template.h" 
  123 #include "xor_template.h" 
#define __M4RI_ALIGNMENT(addr, n)
Return alignment of addr w.r.t. n. For example the address 17 would be 1 aligned w.r.t. 16. 
Definition: misc.h:421
 
uint64_t word
A word is the typical packed data structure to represent packed bits. 
Definition: misc.h:87
 
int wi_t
Type of word indexes. 
Definition: misc.h:80