https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115065
Bug ID: 115065 Summary: AVR clz is not always fast as can be Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: WolfgaNg.Hospital at arcor dot de Target Milestone: --- Created attachment 58186 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58186&action=edit AVR assembly code for __clzhi2 For 8-bit AVRs, count leading zeroes is based on __clzhi2. (This is in contrast to popcount using the single-register (qi) variant. Possibly due to the convenience of having the MSB of the result cleared in just one place. No idea if it was wiser to declare the result single-register, plenty even for "double-width integer" arguments.) Instruction order isn't optimal up to now, allowing to take one cycle off for argument values 1-255. (This includes the worst case: 1.)