コンパイルオプションでSSEを指定すれば変わるかと思って
gcc -S a.c -O4 -msse3 -march=core2とした場合だと
.file "a.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
movl B, %eax
pushl %ebp
movl %eax, A
movl %esp, %ebp
movl B+4, %eax
movl %eax, A+4
movl B+8, %eax
movl %eax, A+8
movl B+12, %eax
movl %eax, A+12
leave
ret
.size f, .-f
.comm A,16,4
.comm B,16,4
.ident "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
.section .note.GNU-stack,"",@progbits
SSEの128bitレジスターを使った転送をしてくれるかと思ったら、ぜんぜん普通にmovlで32bitづつだった。
(gcc version 4.5.2)

最適化によるSSEのフル活用って、実際はあまり期待できないのかもしれない。
この辺はインラインアセンブラなどで手書きするのが確実なのかもしれない。