What instruction selection algorithm is used in LLVM?

Hello,
   I was searching on the net, but I cannot figure out what instruction
selection algorithm is used in LLVM backends in version 2.6.
   Are there multiple algorithms used, or is it just one? E.g. one for -O0 and
different for -O3?

Thank you
   Adam