I've been reading about bit twiddling hacks and thought, are compilers able to avoid branching in the following code:
constexpr int min(const int lhs, const int rhs) noexcept {
    if (lhs < rhs) {
        return lhs;
    }
    return rhs
}
by replacing it with (explanation):
constexpr int min(const int lhs, const int rhs) noexcept {
    return y ^ ((x ^ y) & -(x < y));
}
Aucun commentaire:
Enregistrer un commentaire