This happens when CMP1 and CMP3 have the same predicate (or CMP2 and CMP3 have the same predicate). This helps optimizations such as the fololowing one: CMP(A,C)||CMP(B,C) => CMP(MIN/MAX(A,B), C) CMP(A,C)&&CMP(B,C) => CMP(MIN/MAX(A,B), C) Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D156215