Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| std:bit [2023/04/08 16:19] – rajit | std:bit [2025/09/16 14:32] (current) – rajit |
|---|
| </code> | </code> |
| This concatenates ''N'' copies of the ''W''-bit input ''x'' to create an output of width ''N*W''. | This concatenates ''N'' copies of the ''W''-bit input ''x'' to create an output of width ''N*W''. |
| | |
| | |
| | <code act> |
| | export template<pint W, W2> function sign_extend(int<W> x) : int<W2>; |
| | </code> |
| | This sign-extends the integer ''x'' (bitwidth ''W'') to bitwidth ''W2''. ''W2'' must be strictly larger than ''W''. |
| | |
| | |
| | <code act> |
| | export template<pint W> function rol(int<W> x) : int<W>; |
| | </code> |
| | Left rotate the ''W'' bit integer by 1. The MSB of ''x'' becomes the LSB of the result (rotating shift). |
| | |
| | <code act> |
| | export template<pint W> function ror(int<W> x) : int<W>; |
| | </code> |
| | Right rotate ''x'' by one, with the LSB of ''x'' becoming the MSB of the result. |
| | |
| | <code act> |
| | export template<pint W> function find_msb_pos(int<W> x) : int<std::ceil_log2(W)>; |
| | </code> |
| | This function assumes that ''x'' is non-zero, and returns the bit position of the most significant one in ''x''. |
| | |
| | <code act> |
| | export template<pint W> function popcount(int<W> x) : int<std::ceil_log2(W+1)>; |
| | </code> |
| | This function returns a count of the number of bits of ''x'' that are set to 1. |
| | |
| |
| |
| |