> On Sep 19, 2025, at 10:22, David Rowley <[email protected]> wrote: > > On Fri, 19 Sept 2025 at 14:11, Chao Li <[email protected]> wrote: >> This patch uses left/right shift operators to optimize *2 and /2 operations >> in some functions that are in critical paths. >> >> For unsigned int, *2 and /2 exactly equal to <<1 and >>1. > > The compiler is most likely going to do this anyway. Try it out at > https://godbolt.org/z/Y538Yd4Ka
Thanks for the info. > > What maybe is worth looking at is verifying which of these variables > is signed when it really should be unsigned. Dividing by 2 and >> 1 > aren't the same for negative numbers. > Yes, I think I mentioned in the commit comment. For negative numbers, /2 doesn’t equal to >>1. I saw a lot of variables of type “int" named as “xxx_len”, feels like they can be unsigned. But we need to carefully check every one individually if we want change their types. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
