Instcombine limits converting phi types to simple loads and stores. This does the same in codegenprepare, not processing phis that are not simple.
Note that volatile loads/store ISel will happy convert between float and int. Atomics are more likely to always be integer. This just keeps things simple and doesn't process either.