This adds fptosi_sat and fptoui_sat to the list of trivially vectorizable functions, mainly so that the loop vectorizer can vectorize the instruction. Marking them as trivially vectorizable also allows them to be SLP vectorized, and Scalarized.
The signature of a fptosi_sat requires two type overrides (@llvm.fptosi.sat.v2i32.v2f32), unlike other intrinsics that often only take a single. This patch alters hasVectorInstrinsicOverloadedScalarOpd to hasVectorInstrinsicOverloadedOpd, so that it can mark the first operand of the intrinsic as a overleaded (but not scalar) operand.
Existing typo in the names here and above - "Instrinsic" -> "Intrinsic".
On top of that, these function names don't read clearly to me, so if we're changing things anyway, maybe we can do better.
"isVectorIntrinsicWithScalarOpAtArg"
"isVectorIntrinsicWithDifferentTypeAtArg"
This still seems out-of-place...maybe it should be an introspective function of IntrinsicInst instead - "getTypeForArgNum"?