Hi @ll, in his ACM queue article <https://queue.acm.org/detail.cfm?id=3372264>, Matt Godbolt used the function
| bool isWhitespace(char c) | { | return c == ' ' | || c == '\r' | || c == '\n' | || c == '\t'; | } as an example, for which GCC 9.1 emits the following assembly for AMD64 processors (see <https://godbolt.org/z/acm19_conds>): | xor eax, eax ; result = false | cmp dil, 32 ; is c > 32 | ja .L4 ; if so, exit with false | movabs rax, 4294977024 ; rax = 0x100002600 | shrx rax, rax, rdi ; rax >>= c | and eax, 1 ; result = rax & 1 |.L4: | ret This code is but not optimal! The following equivalent and branchless code works on i386 too, it needs neither an AMD64 processor nor the SHRX instruction, which is not available on older processors: mov ecx, edi mov eax, 2600h ; eax = (1 << '\r') | (1 << '\n') | (1 << '\t') test cl, cl setnz al ; eax |= (c != '\0') shr eax, cl ; eax >>= (c % ' ') xor edx, edx cmp ecx, 33 ; CF = c <= ' ' adc edx, edx ; edx = (c <= ' ') and eax, edx ret regards Stefan Kanthak