I don't know how much you guys already know about this, but in the DirectX 9 SDK the documentation contains not only the expected information on VS and PS 2.0, but information on "extended" versions of each, plus version 3.0. Here's a brief list of the new features:
If the NV30 is to support the "Extended" versions of both VS and PS 2.0, the difference is quite significant. These versions provide dynamic flow control for vertex shader programs and both static and dynamic flow control for pixel shader programs.
Some more significant information on these new versions:
Vertex Shader 2.0:
New instructions:
Setup instructions - defb, defi
Arithmetic instructions - mova
Macros - abs, crs, expp, logp, lrp, nrm, pow, sincos, slt
Static flow control instructions - call, callnz, else, end, endif, endloop, endrep, if, label, loop, rep, ret
New registers - constant float, constant integer, constant Boolean, loop counter
Vertex Shader 2.0 Extended:
New features (with a cap set):
Dynamic flow control instructions - break, breakc, ifc
Predication - setp instruction, p# register
Static flow control nesting depth
Number of temporary registers
Vertex Shader 3.0:
New features:
Static flow control nesting depth
Dynamic flow control instructions - break, breakc, ifc
Predication - setp instruction, p# register
Number of temporary registers
Indexing registers
Vertex textures - texld texture address instruction
Vertex stream frequency
Pixel Shader 2.0:
New instructions:
Setup instructions: def, ps
Arithmetic instructions: add, cmp, cnd, dp3, dp4, lrp, mad, mov, mul, nop, sub
Macros: exp, frc, log, m3x2, m3x3, m3x4, m4x3, m4x4
Texture instructions:
Added: texldb, texldp
Removed: tex, texbem, texbeml, texcoord, texcrd, texdepth, texdp3, texdp3tex, texm3x2depth, texm3x2pad, texm3x2tex, texm3x3, texm3x3pad, texm3x3tex, texm3x3spec, texm3x3vspec, texreg2ar, texreg2gb, texreg2rgb
New registers: constant float, sampler, output color, output depth
New modifiers: negate, partial precision, saturate
Removed co-issuing of instructions
Pixel Shader 2.0 Extended:
New static flow control instructions (with a cap set): call, callnz, else, end, endif, endloop, endrep, if, label, loop, rep, ret
Static flow control nesting depth
Number of temporary registers
Dynamic flow control instructions: break, breakc, ifc
Gradient instructions: dsx and dsy
Texture instructions: texldd
Predication - setp instruction, p# register
New registers: constant integer, constant Boolean, loop counter, predicate
New modifiers (with a cap set): arbitrary swizzle
Pixel Shader 3.0:
Static flow control instructions: call, callnz, else, end, endif, endloop, endrep, if, label, loop, rep, ret
Static flow control nesting depth
Number of temporary registers
Dynamic flow control instructions: break, breakc, ifc
Predication: setp instruction, p# register
New registers: constant integer, constant Boolean, loop counter, predicate
New modifiers: arbitrary swizzle
If the NV30 is to support the "Extended" versions of both VS and PS 2.0, the difference is quite significant. These versions provide dynamic flow control for vertex shader programs and both static and dynamic flow control for pixel shader programs.
Some more significant information on these new versions:
Instructions Counts:
VS 2.0 - 256
VS 2.0 Extended - 256
VS 3.0 - 512 (min)
PS 2.0 - 64 arithmetic + 32 texture
PS 2.0 Extended - 96 (min) to 512 (max)
PS 3.0 - 512 (min)