I searched a lot but could not find if the following statements are legal in a #version 330 vertex shader:
#define note_the_following_whitespace
http://www.opengl.org/registry/doc/GLSLangSpec.3.30.6.pdf
From 5.9
The arithmetic binary operators add (+), subtract (-), multiply (*), and divide (/) operate on integer and floating-point scalars, vectors, and matrices.
(...)
One operand is a scalar, and the other is a vector or matrix. In this case, the scalar operation is applied independently to each component of the vector or matrix, resulting in the same size vector or matrix.
So if it doesn't compile on ATI, it just means its driver is incorrect in that regard.