rand/rand.c (rdrand_quick): Improve the loop.
The `RDRAND' instruction can fail, leaving carry clear. Previously, I
just exposed the carry flag in a register (with `SETC'), and looped
around in C.
Rewrite the loop in assembler. This is makes the flow cleaner, and
(coincidentally) avoids a dependency on the `SETcc' instructions (though
if I thought a processor might have `RDRAND' and not `SETcc', I wouldn't
have written the original code the way I did). But the main benefit is
that I don't have nightmares about seeing
...; setc al; test al, al; ...
sequences any more. There's still the issue of `i' being tested for
zero twice, but I don't think I can fix that without resorting to `asm
goto', and that has its own problems.