Описание тега likely-unlikely

None Вероятные и маловероятные - это намеки компилятору на выдачу инструкций, которые вызовут предсказание ветвления в пользу "вероятной" стороны инструкции перехода.

likely а также unlikely - это подсказки компилятору для выдачи инструкций, которые заставят предсказание ветвления отдавать предпочтение "вероятной" стороне инструкции перехода.

Компилятор GCC предоставляет __builtin_expect, а также likely() а также unlikely() макросы, которые обертывают его встроенными.

Также см. Книгу Ульриха Дреппера " Что должен знать каждый программист о памяти", стр. 56 и 57, а также обсуждение статического предсказания ветвлений и пузырей в конвейере.