this isn't exactly documentation but found this
http://opensource.apple.com/source/objc4/objc4-551.1/runtime/Messengers.subproj/objc-msg-x86_64.s
/********************************************************************
*
* _objc_msgSend_uncached_impcache
* _objc_msgSend_uncached
* _objc_msgSend_stret_uncached
*
* Used to erase method cache entries in-place by
* bouncing them to the uncached lookup.
*
********************************************************************/
STATIC_ENTRY __objc_msgSend_uncached_impcache
// Method cache version
// THIS IS NOT A CALLABLE C FUNCTION
// Out-of-band condition register is NE for stret, EQ otherwise.
// Out-of-band r11 is the searched class
MESSENGER_START
nop
MESSENGER_END_SLOW
jne __objc_msgSend_stret_uncached
jmp __objc_msgSend_uncached
END_ENTRY __objc_msgSend_uncached_impcache
STATIC_ENTRY __objc_msgSend_uncached
DW_START __objc_msgSend_uncached
// THIS IS NOT A CALLABLE C FUNCTION
// Out-of-band r11 is the searched class
// r11 is already the class to search
MethodTableLookup %a1, %a2, __objc_msgSend_uncached // r11 = IMP
cmp %r11, %r11 // set eq (nonstret) for forwarding
jmp *%r11 // goto *imp
DW_END __objc_msgSend_uncached, 1
END_ENTRY __objc_msgSend_uncached
STATIC_ENTRY __objc_msgSend_stret_uncached
DW_START __objc_msgSend_stret_uncached
// THIS IS NOT A CALLABLE C FUNCTION
// Out-of-band r11 is the searched class
// r11 is already the class to search
MethodTableLookup %a2, %a3, __objc_msgSend_stret_uncached // r11 = IMP
test %r11, %r11 // set ne (stret) for forward; r11!=0
jmp *%r11 // goto *imp
DW_END __objc_msgSend_stret_uncached, 1
END_ENTRY __objc_msgSend_stret_uncached