BTW, regarding a way to beat NVIDIA at their own game if they want to continue cheating:
When reading the shader files, change them a bit randomly. A few easy and "annoying-for-nv" changes would be:
1) randomly change the name of registers ( search for R0 in the string, replace all instances by R3, all instances of R3 by R2, and so on )
2) Put NOP operations in the code randomly
3) Add "easy-to-optimize-by-driver" operations randomly, such as MUL R0,R0,1 or ADD R0,R0,0. If ATI's compiler can also do this ( and I know NVIDIA can ), do operations whose results are never checked again ( like, if in the end only R0, R1 and R2 are still used, do MUL R3, R1, R2 and never use R3 again ).
Just make sure you don't add too many and that it makes it goes beyond PS2.0. standards and can't compile, though!
All of these could be bypassed by NVIDIA, but it'd take an awful lot more time for them to fix it than for FutureMark to add them IMO.
Uttar