title: What does SSE instructions optimize in practice, and how does the compiler enables and use them?
body: <p>SSE and/or 3D now! have vector instructions, but what do they optimize in practice ? Are 8 bits characters treated 4 by 4 instead of 1 by 1 for example ? Are there optimisation for some arithmetical operations ? Does the word size have any effect (16 bits, 32 bits, 64 bits) ?</p>
  
  <p>Does all compilers use them when they are available ?</p>
  
  <p>Does one really have to understand assembly to use SSE instructions ? Does knowing about electronics and gate logics helps understanding this ?</p>