The predicate argument alone should be enough to determine the class that needs to be created.
For some cases where we were always creating an ICmpInst I used the ICmpInst constructor directly. I can do that as a separate patch if that's prefered.
Do I need to be concerned with out of tree users of this?
Not sure who the best reviewers of this are. The CmpInst::Create function has been untouched for many years.