authorgravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-12-12 18:23:48-08:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-13 13:24:38+01:00
log82f35c51866826fb71eb6f27d9210bb738d602e9
tree77f458447ffedf2d4f0fb2bb362ecaa17bb839dd
parenta68119f8f1d54b70e713e1e8ce07491ddba0f093

add branchHint to `std.Random.float`


1 files changed, 3 insertions(+), 3 deletions(-)

lib/std/Random.zig+3-3
...@@ -271,11 +271,10 @@ pub fn float(r: Random, comptime T: type) T {...@@ -271,11 +271,10 @@ pub fn float(r: Random, comptime T: type) T {
271 const rand = r.int(u64);271 const rand = r.int(u64);
272 var rand_lz = @clz(rand);272 var rand_lz = @clz(rand);
273 if (rand_lz >= 41) {273 if (rand_lz >= 41) {
274 // TODO: when #5177 or #489 is implemented,274 @branchHint(.unlikely);
275 // tell the compiler it is unlikely (1/2^41) to reach this point.
276 // (Same for the if branch and the f64 calculations below.)
277 rand_lz = 41 + @clz(r.int(u64));275 rand_lz = 41 + @clz(r.int(u64));
278 if (rand_lz == 41 + 64) {276 if (rand_lz == 41 + 64) {
277 @branchHint(.unlikely);
279 // It is astronomically unlikely to reach this point.278 // It is astronomically unlikely to reach this point.
280 rand_lz += @clz(r.int(u32) | 0x7FF);279 rand_lz += @clz(r.int(u32) | 0x7FF);
281 }280 }
...@@ -297,6 +296,7 @@ pub fn float(r: Random, comptime T: type) T {...@@ -297,6 +296,7 @@ pub fn float(r: Random, comptime T: type) T {
297 const addl_rand_lz = @clz(r.int(u64));296 const addl_rand_lz = @clz(r.int(u64));
298 rand_lz += addl_rand_lz;297 rand_lz += addl_rand_lz;
299 if (addl_rand_lz != 64) {298 if (addl_rand_lz != 64) {
299 @branchHint(.likely);
300 break;300 break;
301 }301 }
302 if (rand_lz >= 1022) {302 if (rand_lz >= 1022) {