The SDAG version uses fminnum/fmaxnum, in converting it to fcmp+select it appears the order of the operands was chosen badly. This switches the conditions used to keep the constant on the RHS.
G_CTLZ
matchUMulHToLShr
TargetIntrinsicInfo
(neg (min/max x, (neg x)))
(max/min x, (neg x))