LLVM converts sqrt libcall to intrinsic call if the argument is within the range(greater than or equal to 0.0). In this case the compiler is not able to deduce the non-negativity on its own. Extended ValueTracking to understand such loops. Have created new ABI's for matching Intrinsics with three operands (those existed only for 2 operands) `matchSimpleTernaryIntrinsicRecurrence` and `matchThreeInputRecurrence`. Fixes https://github.com/llvm/llvm-project/issues/174813