тоесть я понимаю, что их можно использовать для хранения временных значений между вызовами, меня как бы интересует что считается лучшей практикой, в каком обычно хранят tmp значения
XMM0, RAX, RCX, RDX, R8, R9, R10, R11 скорее всего система перезапишет своим мусором, к тому же RCX, RDX, R8, R9 ты сам угробишь аргументами перед функцией (остальные аргументы, если будут, то пойдут через стек или память).
Ну а с остальными регистрами будь спокоен, система их не тронет (хочется верить).
RSI, RDI тоже юзаются и наверняка будут испорчены.