On 3/27/23 20:06, Song Gao wrote:
+#define SSRLRNS(E1, E2, T1, T2, T3) \ +static T1 do_ssrlrns_ ## E1(T2 e2, int sa, int sh) \ +{ \ + T1 shft_res; \ + \ + shft_res = do_vsrlr_ ## E2(e2, sa); \ + T1 mask; \ + mask = (1ul << sh) -1; \
I've probably missed other instances in review, but "ul" and "l" are *always* incorrect. For 32-bit hosts, this is not wide enough. If it were, "u" or no suffix would have been sufficient. For uses like this, MAKE_64BIT_MASK(0, sh) is what you want. For other kinds of uses, "ull" or "ll" is correct. r~