1 typedef unsigned int u32
;
2 typedef unsigned long long u64
;
4 static inline u64
rot_insert(u64 x
, u64 y
, u32 n
, u32 mb
, u32 me
)
28 mask
+= 1ULL << (63 - mb
);
29 mask
+= 1ULL << (63 - mb
);
30 mask
-= 1ULL << (63 - me
);
36 return (x
& mask
) | (y
& ~mask
);
40 u64 f_##N##_##B(u64 x, u64 y) { return rot_insert(x,y,N,B,63-N); } \
41 u64 g_##N##_##B(u64 x, u64 y) { return rot_insert(y,x,N,B,63-N); }