In your trivial case, predication would be faster (or at least as fast) as doing a branch.
One way the compiler could handle your code would be
SGE select, Y, 10
ADD tmp0, X, Y
ADD tmp1, X, W
LERP X, tmp0, tmp1, select
Another way (using condition codes) would be
SUBC tmp0, Y, 10
ADD tmp0, X, Y
ADD tmp1, X, W
MOV X (GE), tmp1
MOV X (LT), tmp0
Either of these cases should be faster than actually doing branching on the input. Even for larger cases, predication can be faster. It really depends on the program's characteristics whether predication or branching will be faster. For branching to be faster, you need to be able to pay off the (relatively high) constant cost for doing a comparison and branch (potentially invalidating any data in the cache) by skipping many instructions. If the branch doesn't cull many instructions, predication may (and frequently will) be faster.