Existe uma dica do compilador para o GCC forçar a previsão de ramificação a sempre seguir um determinado caminho?

Para as arquiteturas Intel, existe uma maneira de instruir o compilador GCC a gerar código que sempre força a previsão de ramificação de uma maneira específica no meu código? O hardware da Intel suporta isso? E quanto a outros compiladores ou hardwares?

Eu usaria isso no código C ++, onde conheço o caso em que desejo executar rapidamente e não me importo com a lentidão quando a outra ramificação precisa ser tomada, mesmo quando ela foi recentemente retirada.

for (;;) {
  if (normal) { // How to tell compiler to always branch predict true value?
    doSomethingNormal();
  } else {
    exceptionalCase();
  }
}

Como uma pergunta a seguir para Evdzhan Mustafa, a dica pode apenas especificar uma dica pela primeira vez que o processador encontra a instrução, toda a previsão de ramificação subsequente, funcionando normalmente?

questionAnswers(7)

yourAnswerToTheQuestion