Instruction darn was introduced in ISA 3.0. It means 'Deliver A Random Number'.
The immediate number L means:
- L=0, the generated random number is 32-bit (higher 32-bits are all-zero)
- L=1, the generated random number is 'conditioned' (processed by hardware to reduce bias)
- L=2, the generated random number is not conditioned, directly from noise source
GCC implements them in three separate intrinsics. (__builtin_darn, __builtin_darn_32 and __builtin_darn_raw)
This patch also addresses Bugzilla PR39800.