This adds new intrinsics "*absdiff" and "*hadd" to facilitate the efficient code generation for "sum of absolute differences" operation.
The patch also contains the introduction of corresponding SDNodes and basic legalization support
An RFC discussion could be found at below link
https://groups.google.com/forum/#!topic/llvm-dev/S3P1Sh3H--Q
I don't think floating point datatypes should be bundled in with integer datatypes in these intrinsics. Signedness isn't a concept for floating point datatypes, so it would be weird to have something operate on floats with a defined signedness. Also, it would mean two intrinsics were identical for floating point types which raises a canonicalisation problem.
I'd be happy if the floating point support for these intrinsics was removed for the time being, if you don't want to add another intrinsic right now.