There is an obvious bug in the lowering code when non-boolean integer value is expected. The existing code wrongly assumes the NE comparison's constant operand is always zero and also skips EQ predicate. This either produces wrong profile annotation or misses annotation.
Other predicate kinds should also be supported (separately).
Maybe inline the ExpectedValue->getZExtValue() so that there is no need to have ExpectedIntValue.