Unter einem Artikel über Fixed-Integer-Width-Vektoren (hier) stand ein netter Hinweis, den ich hier mal zitiere:
Instead of doing stuff like
(word >> bit_offset) & self.mask
, in C or C++ I usually write_bextr_u64
, or when using modern C#Bmi1.X64.BitFieldExtract
. Note however these intrinsics compile into 2 instructions not one, because the CPU instruction takes start/length arguments from lower/higher bytes of a single 16-bit number.
Geht seit Haswell (~2013), cool!