@@ -1156,10 +1156,58 @@ extern "rust-intrinsic" {
1156
1156
/// Returns the number of bits set in an integer type `T`
1157
1157
pub fn ctpop < T > ( x : T ) -> T ;
1158
1158
1159
- /// Returns the number of leading bits unset in an integer type `T`
1159
+ /// Returns the number of leading unset bits (zeroes) in an integer type `T`.
1160
+ ///
1161
+ /// # Examples
1162
+ ///
1163
+ /// ```
1164
+ /// #![feature(core_intrinsics)]
1165
+ ///
1166
+ /// use std::intrinsics::ctlz;
1167
+ ///
1168
+ /// let x = 0b0001_1100_u8;
1169
+ /// let num_leading = unsafe { ctlz(x) };
1170
+ /// assert_eq!(num_leading, 3);
1171
+ /// ```
1172
+ ///
1173
+ /// An `x` with value `0` will return the bit width of `T`.
1174
+ ///
1175
+ /// ```
1176
+ /// #![feature(core_intrinsics)]
1177
+ ///
1178
+ /// use std::intrinsics::ctlz;
1179
+ ///
1180
+ /// let x = 0u16;
1181
+ /// let num_leading = unsafe { ctlz(x) };
1182
+ /// assert_eq!(num_leading, 16);
1183
+ /// ```
1160
1184
pub fn ctlz < T > ( x : T ) -> T ;
1161
1185
1162
- /// Returns the number of trailing bits unset in an integer type `T`
1186
+ /// Returns the number of trailing unset bits (zeroes) in an integer type `T`.
1187
+ ///
1188
+ /// # Examples
1189
+ ///
1190
+ /// ```
1191
+ /// #![feature(core_intrinsics)]
1192
+ ///
1193
+ /// use std::intrinsics::cttz;
1194
+ ///
1195
+ /// let x = 0b0011_1000_u8;
1196
+ /// let num_trailing = unsafe { cttz(x) };
1197
+ /// assert_eq!(num_trailing, 3);
1198
+ /// ```
1199
+ ///
1200
+ /// An `x` with value `0` will return the bit width of `T`:
1201
+ ///
1202
+ /// ```
1203
+ /// #![feature(core_intrinsics)]
1204
+ ///
1205
+ /// use std::intrinsics::cttz;
1206
+ ///
1207
+ /// let x = 0u16;
1208
+ /// let num_trailing = unsafe { cttz(x) };
1209
+ /// assert_eq!(num_trailing, 16);
1210
+ /// ```
1163
1211
pub fn cttz < T > ( x : T ) -> T ;
1164
1212
1165
1213
/// Reverses the bytes in an integer type `T`.
0 commit comments