¿Hay alguna sugerencia del compilador para que GCC obligue a la predicción de rama a ir siempre de cierta manera?
Para las arquitecturas de Intel, ¿hay alguna forma de instruir al compilador GCC para que genere código que siempre fuerce la predicción de ramificaciones de una manera particular en mi código? ¿El hardware Intel incluso admite esto? ¿Qué pasa con otros compiladores o hardwares?
Lo usaría en el código C ++ donde conozco el caso en el que deseo correr rápido y no me importa la ralentización cuando se necesita tomar la otra rama, incluso cuando ha tomado esa rama recientemente.
for (;;) {
if (normal) { // How to tell compiler to always branch predict true value?
doSomethingNormal();
} else {
exceptionalCase();
}
}
Como una pregunta de seguimiento para Evdzhan Mustafa, ¿puede la sugerencia solo especificar una sugerencia por primera vez que el procesador encuentra la instrucción, toda la predicción de rama posterior, funciona normalmente?