https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94427
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- The hot/cold thing smells like PR90911 btw. The cmov thing you identified is PR91154 which was fixed for archs that can do the required SSE min/max operation which is SSE 4.1 IIRC. It also is then a "duplicate" of the (various?) bugs about to-cmov-or-not-to-cmov where the microarchitectural details are unclear. So I fear with just SSE2 we can't do anything here but apply yet another heuristic special to hmmer that will likely hurt another case (there are corresponding bugs asking for _more_ cmov...). One of my first patches was to notice the special constant for the max/min operation and not do conditional move expansion (plus prevent later RTL ifcvt to apply with the same heuristics).