I don't want to argue about this but we're really getting into sematics. Pointers are sort of also variables, so even if the most integers are not getting bigger, pointers are. Depending on the code this may or may not be noticable.
Plus, I did say 0-15% slowdown, which is realistic.
a) 64bit int operations on Opteron take the same time like 32bit ops except mul (+1cycle) and div(~ 2x time of 32bit). That's also true for address operations. And when the CPU loads a 32bit value from cache or mem it already transfers 64bit at once.
b) The AMD64 ABI allows passing function/method parameters in integer and fp/sse registers. That gives another possibility for speedup since the push/pop pairs which are usually used are a source for slowdown because the CPU serializes them (IPC==1 then).
But to support ;) your conclusions with numbers I compared GCC 32bit code to 64bit code:
SPECint:
+11,6
+8,1
+2,9
-25,0
+48,2
-15,3
+49,2
-6,1
+1,5
+6,2
+5,0
-6,9
+4,8
SPECfp:
+3,9
-8,6
+18,2
+5,4
+30,2
+93,6
-0,5
+17,2
+22,1
+18,9
Regardless, very few companies will decide to maintain a separate AMD64 port if there is no need for larger address space.
.. or if customers don't want to buy a faster version.
Regards,
DDB