You might be interested in this HLSL SM3 approach: http://code4k.blogsp...osures-and.html
The best part is that the Cg compiler did this ages ago in software and doesn't require SM5, while the D3D implementation does
As MJP points out above, it lets you dictate the branch value on the CPU before issuing a draw-call, eliminating branches from shaders, while still being able to write them in a branchy way.
EDIT: It really is something of a non-feature.
The earlier equivalent to this was branching on boolean registers, which some GPU drivers use to eliminate the branch in software (and other drivers don't, but do still branch faster than a regular branch-on-ALU-results).