Hi, how to unstandard these instructions like below??
/0060/ IMAD.HI R0, R6, 0x66666667, RZ ;
/0070/ IMAD.HI R5, R7, 0x3e0f83e1, RZ ;
/0080/ SHF.R.U32.HI R2, RZ, 0x1f, R0 ;
/0090/ SHF.R.U32.HI R3, RZ, 0x1f, R5 ;
/00a0/ LEA.HI.SX32 R0, R0, R2, 0x1e ;
/00b0/ LEA.HI.SX32 R5, R5, R3, 0x1d ;
A brief overview (but not a detailed specification) of GPU machine instructions is provided here:
IMAD = integer multiply and add
SHF.R = funnel shift to the right
LEA = load effective address (better thought of as a specialized version of IMAD)
NVIDIA has never publicly provided detailed documentation on the native ISAs of their GPUs. If you need those details, you will have to reverse engineer them, or rely on documentation by third parties who have done this work.
A few more notes:
(1) . HI generally refers to the more significsant half of a double-wide result
(2) .U32 refers to an operation using unsigned 32-bit semantics
(3) .SX32 refers to 32-bit sign-extension (not sure on this one)
Also note that identically-named machine instructions have, due to the lack of binary compatibility across GPU architectures, in general similar but not necessarily identical functionality across architectures.