base: Add function to count trailing zeros in a 64-bit integer
authorNikos Nikoleris <nikos.nikoleris@arm.com>
Sun, 26 May 2019 22:31:22 +0000 (23:31 +0100)
committerNikos Nikoleris <nikos.nikoleris@arm.com>
Mon, 10 Jun 2019 17:36:55 +0000 (17:36 +0000)
Change-Id: Iaad0679b403bc5015ffeacbf7284313e41a36cd0
Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19128
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/base/bitfield.hh

index ec1ffce501c3bbcd1ccd5b732f5f0ad138ea660d..59b239a88d79fe74fc4c84bc3d715e7e7a5830ac 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 ARM Limited
+ * Copyright (c) 2017, 2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -293,4 +293,15 @@ inline int ctz32(uint32_t value)
     return value ? __builtin_ctz(value) : 32;
 }
 
+/**
+ * Count trailing zeros in a 64-bit value.
+ *
+ * @param An input value
+ * @return The number of trailing zeros or 64 if the value is zero.
+ */
+inline int ctz64(uint64_t value)
+{
+    return value ? __builtin_ctzll(value) : 64;
+}
+
 #endif // __BASE_BITFIELD_HH__