Предположение:
Если вызывающая сторона сохраняет все регистры, которые ей все еще понадобятся после вызова функции, она теряет время, когда вызываемая функция не изменяет все эти регистры.
Еслиcallee сохраняет все регистры, которые он изменяет, он тратит время, когда вызывающему не нужны значения в этих регистрах снова.
Когда некоторые регистры сохраняются вызывающим, а некоторые - вызываемым, компилятор (или программист сборки) можетвыберите, какой тип использовать, в зависимости от того, требуется ли значение после следующего вызова функции.