R600/SI: Don't promote f32 select to i32

This is nice for the instruction patterns, but it complicates
min / max matching. The select doesn't have the correct type and would
require looking through the bitcasts for the real float operands.
R600/SI: fmin/fmax_legacy are not associative
R600: Fix min/max matching problems with unordered compares

The returned operand needs to be permuted for the unordered
compares. Also fix incorrectly producing fmin_legacy / fmax_legacy
for f64, which don't exist.