These should be smin rather than umin?
This highlights a potential sticking point because can we code generate such intrinsics for scalable vectors? LoopVectorize will emit calls to a vector math library rather than call this intrinsic directly. There's also the replace-with-veclib pass that will convert such intrinsics, again only if there's a suitable math library available.
Is it a good idea to allow builtins that we know will cause a code generation failure? Or might result in a scalarised implementation?