Yes, autovecorization is mostly for loops. MSVC does autovec when it can figure out access pattern. In simplest case where you have i'th element processed in loop, it will work pretty well. The operations doesn't need to be math.h functions. It works fine for just arithmetic. Here's an example:
https://godbolt.org/g/o4w1nT Lines 35-50 in assembly contains vector mul/add.
It works fine also for sin/cos and similar function (contrary to what Casey said two weeks ago that MSVC doesn't do vector cos and sin, it does this now starting with MSVC2010 if I'm not mistaken):
https://godbolt.org/g/QePfyW You can see line 38 contains call to 4-wide cosf builtin-function __vdecl_cosf4.
Btw /arch:SSE2 is invalid switch for 64-bit architecture. 64-bit intel architecture always has SSE2 instructions available, so this switch is usless, SSE2 code generation is always enabled.