Okay guys, let's get all the facts straight:
1. R300's branching in Vertex Shaders is based on constants, thus, it's static, as definted by the Vertex Shaders 2.0 specifications and also mentioned in the whitepapers on ATI's site.
Uttar: Look here: http://mirror.ati.com/developer/index.html
2. NV30's branching in Vertex Shaders is dynamic, which goes beyond
the Vertex Shaders 2.0 specifications and more suits the Vertex Shaders 3.0 specifications but not fully complies to it.
It's also worth mentioning that NV30 can fall back to branching based on constants, although I don't see any reason to do so...
3. R300 doesn't offer any sort of branching in Pixel Shaders.
4. NV30 doesn't offer any sort of "real" branching in Pixel Shaders, although what it does offer are "condition codes", which are a form of "branching" that executes all branches choosing the right one in the end. Many things can be accomplished with branching can also be accomplished with condition codes.