5 void xor2(int128 *r, const int128 *x)
7 r->u64[0] ^= x->u64[0];
8 r->u64[1] ^= x->u64[1];
11 void and2(int128 *r, const int128 *x)
13 r->u64[0] &= x->u64[0];
14 r->u64[1] &= x->u64[1];
17 void or2(int128 *r, const int128 *x)
19 r->u64[0] |= x->u64[0];
20 r->u64[1] |= x->u64[1];
23 void copy2(int128 *r, const int128 *x)
25 r->u64[0] = x->u64[0];
26 r->u64[1] = x->u64[1];
29 void shufb(int128 *r, const unsigned char *l)
56 void shufd(int128 *r, const int128 *x, const unsigned int c)
60 t.u32[0] = x->u32[c >> 0 & 3];
61 t.u32[1] = x->u32[c >> 2 & 3];
62 t.u32[2] = x->u32[c >> 4 & 3];
63 t.u32[3] = x->u32[c >> 6 & 3];
67 void rshift32_littleendian(int128 *r, const unsigned int n)
69 unsigned char *rp = (unsigned char *)r;
71 t = load32_littleendian(rp);
73 store32_littleendian(rp, t);
74 t = load32_littleendian(rp+4);
76 store32_littleendian(rp+4, t);
77 t = load32_littleendian(rp+8);
79 store32_littleendian(rp+8, t);
80 t = load32_littleendian(rp+12);
82 store32_littleendian(rp+12, t);
85 void rshift64_littleendian(int128 *r, const unsigned int n)
87 unsigned char *rp = (unsigned char *)r;
89 t = load64_littleendian(rp);
91 store64_littleendian(rp, t);
92 t = load64_littleendian(rp+8);
94 store64_littleendian(rp+8, t);
97 void lshift64_littleendian(int128 *r, const unsigned int n)
99 unsigned char *rp = (unsigned char *)r;
101 t = load64_littleendian(rp);
103 store64_littleendian(rp, t);
104 t = load64_littleendian(rp+8);
106 store64_littleendian(rp+8, t);
109 void toggle(int128 *r)
111 r->u64[0] ^= 0xffffffffffffffffULL;
112 r->u64[1] ^= 0xffffffffffffffffULL;
115 void xor_rcon(int128 *r)
117 unsigned char *rp = (unsigned char *)r;
119 t = load32_littleendian(rp+12);
121 store32_littleendian(rp+12, t);
124 void add_uint32_big(int128 *r, uint32 x)
126 unsigned char *rp = (unsigned char *)r;
128 t = load32_littleendian(rp+12);
130 store32_littleendian(rp+12, t);