>> - dest = src1 >> (tmp - 1); \ >> + dest = src1 >> (-tmp - 1); \ >> dest++; \ >> dest >>= 1; \ > > Again, these three lines have the same effect as dest = 0, > so we can fold into the previous if(). > >> } else if (tmp < 0) { \ >> @@ -594,7 +594,7 @@ uint64_t HELPER(neon_rshl_s64)(uint64_t valop, uint64_t >> shiftop) >> val = 0; >> } else if (shift < -64) { >> val >>= 63; > > You didn't change this case, but it is the wrong answer: > should be 0. > >> - } else if (shift == -63) { >> + } else if (shift == -64) { >> val >>= 63; >> val++; >> val >>= 1; > > Always results in 0. >
Oops sorry, in these 3 cases, I just fixed obvious typos but didn't question the actual code.