Turning lowers to uppers without a branch

In another comment of the Curiouser Case, Arnaud Bouchez pointed to an interesting optimization that is use in mORMot‘s UpperCopy255Buf function: a branchless parallel upper case conversion.
At the core of that implementation are the following lines of code
c := src[i]; d := c or _80; dest[i] := c - ((d - _61) and not (d - _7b)) and ((not c) and _80) shr 2;
Ok, it may not be too obvious what happens at first sight. Let’s break it down.
(more…)
In a comment to the
When a double is neither greater nor lesser, is it equal ?
SQLite offers through its
We all need more battery life, and for quad-core i7 & i5, a simple way to gain more battery is to simply turn off extra cores.
After battling for half a day with that subtle bug, I am posting the workaround and analysis here, in case other stumble on it.
A lot of the advice on password hashing says that client-side password hashing is not necessary, provided you are using HTTPS or another secure protocol, for instance in
Despite having “lite” in its name,
I am a big fan of