This adds is_fpclass to the list of trivially vectorizable intrinsics, so that LV can vectorize it and SLP can vectorize/scalarize it.
Unlike other intrinsics, the signature of an is_fpclass doesn't use the return type as an overloaded type (i1 @llvm.is.fpclass.f32) -- the return element type is always i1 and the return vector width matches with the first operand.
This patch introduces a new utility function isVectorIntrinsicWithReturnOverloadType, to determine whether an intrinsic uses the return type as the first overloaded type.
Signed-off-by: Yilong Guo <yilong.guo@intel.com>
I personally think OverloadReturnType makes more sense.