4 void xor2(int128
*r
, const int128
*x
)
10 void and2(int128
*r
, const int128
*x
)
16 void or2(int128
*r
, const int128
*x
)
22 void copy2(int128
*r
, const int128
*x
)
28 void shufb(int128
*r
, const unsigned char *l
)
32 unsigned char *cr
= (unsigned char *)r
;
33 unsigned char *ct
= (unsigned char *)&t
;
52 void shufd(int128
*r
, const int128
*x
, const unsigned int c
)
55 uint32
*tp
= (uint32
*)&t
;
56 uint32
*xp
= (uint32
*)x
;
64 void rshift32_littleendian(int128
*r
, const unsigned int n
)
66 unsigned char *rp
= (unsigned char *)r
;
68 t
= load32_littleendian(rp
);
70 store32_littleendian(rp
, t
);
71 t
= load32_littleendian(rp
+4);
73 store32_littleendian(rp
+4, t
);
74 t
= load32_littleendian(rp
+8);
76 store32_littleendian(rp
+8, t
);
77 t
= load32_littleendian(rp
+12);
79 store32_littleendian(rp
+12, t
);
82 void rshift64_littleendian(int128
*r
, const unsigned int n
)
84 unsigned char *rp
= (unsigned char *)r
;
86 t
= load64_littleendian(rp
);
88 store64_littleendian(rp
, t
);
89 t
= load64_littleendian(rp
+8);
91 store64_littleendian(rp
+8, t
);
94 void lshift64_littleendian(int128
*r
, const unsigned int n
)
96 unsigned char *rp
= (unsigned char *)r
;
98 t
= load64_littleendian(rp
);
100 store64_littleendian(rp
, t
);
101 t
= load64_littleendian(rp
+8);
103 store64_littleendian(rp
+8, t
);
106 void toggle(int128
*r
)
108 r
->a
^= 0xffffffffffffffffULL
;
109 r
->b
^= 0xffffffffffffffffULL
;
112 void xor_rcon(int128
*r
)
114 unsigned char *rp
= (unsigned char *)r
;
116 t
= load32_littleendian(rp
+12);
118 store32_littleendian(rp
+12, t
);
121 void add_uint32_big(int128
*r
, uint32 x
)
123 unsigned char *rp
= (unsigned char *)r
;
125 t
= load32_littleendian(rp
+12);
127 store32_littleendian(rp
+12, t
);