This patch implements builtin_reduce_max and builtin_reduce_min as
specified in D111529.
The order of operations does not matter for min or max reductions and
they can be directly lowered to the corresponding
llvm.vector.reduce.{fmin,fmax,umin,umax,smin,smax} intrinsic calls.
Is this indented incorrectly? There appear to be 2 ifs at the same level