

/* 02Aug97                                                       p5spdefs2.h */
/*           corrected the entries for powrj and powdj                       */
/*           added ush64 entry after ash64                                   */
/*           corrected entry for arem64 to specify 4 (32-bit)                */
/*           arguments of total size 16 bytes                                */
/*           corrected entry for arem64 to specify a return type of real     */
/*           size 8 instead of integer size 8                                */
/*           modify the entries for f_lishft and f_mle to make               */
/*           them "integer" procedures (this reflects the status             */
/*           of the support procedures used on PENTIUM but does              */
/*           not reflect the correct status in for example SPARC             */

/*each entry is used as four byte values, as follows:    */
/*   (Byte 3 is the least significant byte, etc)         */
/*                                                       */
/*     Byte 3: type of function result                   */
/*     Byte 2: size of function result                   */
/*     Byte 1: 0 - use m/c specific subs etc, 1 - don't  */
  /* I think this means 1 == mangle per abi ... 0 means leave name as is */
/*     Byte 0: 0 => regular routine                      */
/*             1 => integer routine (does not use reals) */
/*             2 => real*4 arithmetic routine            */
/*             3 => real*8 arithmetic routine            */
/* Note Bytes 0 & 1 are not releavant to the INtel bridge */
#define _FN(b0,b1,b2,b3)	(((b0)<<24)|((b1)<<16)|((b2)<<8)|(b3))
#define _VFN(b0,b1)		_FN(b0,b1,0,0)			/* void */
#define _IFN(b0,b1)		_FN(b0,b1,INTSIZE,Intval)	/* int */
#define _LIFN(b0,b1)		_FN(b0,b1,INTSIZE*2,Intval)	/* long long */
#define _UFN(b0,b1)		_FN(b0,b1,INTSIZE,Uintval)	/* unsigned */
#define _LUFN(b0,b1)		_FN(b0,b1,INTSIZE*2,Uintval)	/* long long u*/
#define _PFN(b0,b1)		_FN(b0,b1,ADDRESSSIZE,0)	/* ptr */
#define _RFN(b0,b1)		_FN(b0,b1,4,RealType)		/* float */
#define _DFN(b0,b1)		_FN(b0,b1,8,RealType)		/* double */
#define _R10FN(b0,b1)		_FN(b0,b1,10,RealType)		/* real*10 */
#define _R12FN(b0,b1)		_FN(b0,b1,12,RealType)		/* real*12 */
#define _R16FN(b0,b1)		_FN(b0,b1,16,RealType)		/* real*16 */
#define INTSIZE 4

/* Eprocpdesc gives a parameter summary for each expression */
/* support procedure as *Nparams<<16! Bytes of Params       */
#define _ARGS(nparams,paramsize)	(((nparams)<<16)|(paramsize))

/* Expparaminfo */
#if defined(MAXEXPPARAM) && MAXEXPPARAM!=5
#error definition of _EXP assumes MAXEXPPARAM is 5
#endif
/* This array contains the paramater type and size of each */
/* parameter of each expression support procedure  as      */
/* (epctype)<<24 ! size in bytes                           */
/* A maximum of MAXEXPPARAM parameters are allowed.        */
/* Routines needing more have to go via Mspcall            */
#define _ARG(epctype,size)	(((epctype)<<24)|(size))
#define _I		_ARG(Intval,INTSIZE)		/* int */
#define _LI		_ARG(Intval,INTSIZE*2)		/* long long */
#define _U		_ARG(Uintval,INTSIZE)		/* unsigned */
#define _LU		_ARG(Uintval,INTSIZE*2)	/* long long unsigned */
#define _P		_ARG(0,ADDRESSSIZE)		/* ptr */
#define _R		_ARG(RealType,4)		/* float */
#define _D		_ARG(RealType,8)		/* double */
#define _R10		_ARG(RealType,10)		/* float */
#define _R12		_ARG(RealType,12)		/* double */
#define _R16		_ARG(RealType,16)		/* double */
#define _C8		_ARG(Cmplxval,8)		/* Complex with two real*4 */
#define _C16		_ARG(Cmplxval,16)		/* Complex with two real*8 */
#define _C20		_ARG(Cmplxval,20)		/* Complex with two real*10 */
#define _C24		_ARG(Cmplxval,24)		/* Complex with two real*12 */
#define _C32		_ARG(Cmplxval,32)		/* Complex with two real*16 */



/* the following were derived automatically from the intelspnames1.h
 * and have been checked and updated by hand (pds)
 */
_EXP(0,  powii,   "f_powii",  _IFN(0,1),  _ARGS(2,8), _I,  _I,  0,   0,   0)
_EXP(1,  powri,   "f_powri",  _RFN(0,1),  _ARGS(2,8), _R,  _I,  0,   0,   0)
_EXP(2,  powdi,   "f_powdi",  _DFN(0,1),  _ARGS(2,12),_D,  _I,  0,   0,   0)
_EXP(3,  powiq,   "a_powiq",  _R16FN(0,0),_ARGS(2,20),_P,  _P,  _I,  0,   0)
_EXP(4,  powci,   "f_powci",  _VFN(0,1),  _ARGS(3,12),_P,  _P,  _I,  0,   0)
_EXP(5,  powzi,   "f_powzi",  _VFN(0,1),  _ARGS(3,12),_P,  _P,  _I,  0,   0)
_EXP(6,  powzzi,  "f_powzzi", _VFN(0,1),  _ARGS(3,12),-1,  -1,  0,   0,   0)
_EXP(7,  powr10i, "f_powr10i",_R10FN(0,1), _ARGS(2,16), _R10, _I,  0,   0,   0)
_EXP(8,  powr10j, "f_powr10j",_R10FN(0,1), _ARGS(2,20), _R10, _LI, 0, 0, 0)
_EXP(9,  powrr,   "f_powrr",  _RFN(0,1),  _ARGS(2,8), _R,  _R,  0,   0,   0)
_EXP(10, powdd,   "f_powdd",  _DFN(0,1),  _ARGS(2,16),_D,  _D,  0,   0,   0)
_EXP(11, powqq,   "a_powq",   _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(12, powcc,   "f_powcc",  _VFN(0,1),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(13, powzz,   "f_powzz",  _VFN(0,1),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(14, powzzz,  "f_powzzz", _VFN(0,1),  _ARGS(3,12),_P,  _P, _P,   0,   0)
_EXP(15, powjj,   "f_powjj",  _LIFN(0,1), _ARGS(2,16), _LI, _LI, 0,   0,   0)
_EXP(16, powji,   "f_powji",  _LIFN(0,1), _ARGS(2,12), _LI, _I,  0,   0,   0)
_EXP(17, powrj,   "f_powrj",  _RFN(0,1),  _ARGS(2,12), _R,  _LI, 0,   0,   0)
_EXP(18, powdj,   "f_powdj",  _DFN(0,0),  _ARGS(2,16), _D,  _LI, 0,   0,   0)
_EXP(19, powcj,   "f_powcj",  _VFN(0,0),  _ARGS(3,16), _P,  _P, _LI,  0,   0)
_EXP(20, powzj,   "f_powzj",  _VFN(0,0),  _ARGS(3,16), _P,  _P, _LI,  0,   0)
_EXP(21, powqj,   "f_powqj",  _VFN(0,0),  _ARGS(3,16), _P,  _P, _LI,  0,   0)
_EXP(22, powzzj,  "f_powzzj", _VFN(0,0),  _ARGS(3,16), _P,  _P, _LI,  0,   0)
_EXP(23, powll, "f_powr10r10", _R10FN(0,0), _ARGS(2,24), _R10, _R10, 0,  0,  0)
_EXP(24, powvi,  "f_powc20i", _VFN(0,0),  _ARGS(3,12), _P,  _P, _I,   0,   0)
_EXP(25, powvv,  "f_powc20c20", _VFN(0,0),  _ARGS(3,12), _P,  _P, _P,   0,   0)
_EXP(26, powvj,   "f_powc20j", _VFN(0,0),  _ARGS(3,16), _P,  _P, _LI,  0,   0)
_EXP(27, unk11,   "unknown",  _VFN(0,0),  _ARGS(0,0), -1,  -1,  0,   0,   0)
_EXP(28, itor,    "i_itor",   _DFN(0,0),  _ARGS(1,4), _I,  0,   0,   0,   0)
_EXP(29, utor,    "i_utor",   _DFN(0,0),  _ARGS(1,4), _U,  0,   0,   0,   0)
_EXP(30, lisign,  "f_lisign", _IFN(0,0),  _ARGS(2,8), _I,  _I,  0,   0,   0)
_EXP(31, ljsign,  "f_ljsign", _LIFN(0,0), _ARGS(2,16),_LI, _LI, 0,   0,   0)
_EXP(32, lsign,   "f_lsign",  _RFN(0,0),  _ARGS(2,8), _R,  _R,  0,   0,   0)
_EXP(33, ldsign,  "f_ldsign", _DFN(0,0),  _ARGS(2,16),_D,  _D,  0,   0,   0)
_EXP(34, llsign,  "f_llsign", _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(35, lqsign,  "f_lqsign", _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(36, lishft,  "f_lishft", _IFN(1,0),  _ARGS(2,8), _I,  _I,  0,   0,   0)
_EXP(37, libits,  "f_libits", _IFN(0,0),  _ARGS(3,12),_I,  _I,  _I,  0,   0)
_EXP(38, lbtest,  "f_lbtest", _IFN(0,0),  _ARGS(2,8), _I,  _I,  0,   0,   0)
_EXP(39, laint,   "f_laint",  _RFN(0,0),  _ARGS(1,4), _R,  0,   0,   0,   0)
_EXP(40, lanint,  "f_lanint", _RFN(0,0),  _ARGS(1,4), _R,  0,   0,   0,   0)
_EXP(41, ldint,   "f_ldint",  _DFN(0,0),  _ARGS(1,8), _D,  0,   0,   0,   0)
_EXP(42, ldnint,  "f_ldnint", _DFN(0,0),  _ARGS(1,8), _D,  0,   0,   0,   0)
_EXP(43, llint,   "f_llint",  _R10FN(0,0),_ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(44, llnint,  "f_llnint", _R10FN(0,0),_ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(45, lqint,   "f_lqint",  _VFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(46, lqnint,  "f_lqnint", _VFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(47, lamod,   "f_lamod",  _RFN(0,0),  _ARGS(2,8), _R,  _R,  0,   0,   0)
_EXP(48, ldmod,   "f_ldmod",  _DFN(0,0),  _ARGS(2,16),_D,  _D,  0,   0,   0)
_EXP(49, llmod,   "f_llmod",  _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(50, lqmod,   "f_lqmod",  _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(51, addl,    "addl",     _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(52, subl,    "subl",     _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(53, mull,    "mull",     _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(54, divl,    "divl",     _R10FN(0,0),_ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(55, comparel,"comparel", _IFN(0,0),  _ARGS(2,24),_R10,_R10,0,   0,   0)
_EXP(56, addq,    "a_addq",   _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(57, subq,    "a_subq",   _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(58, mulq,    "a_mulq",   _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(59, divq,    "a_divq",   _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(60, compareq,"compareq", _IFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(61, jtoq,    "a_jtoq",   _VFN(0,0),  _ARGS(2,12),_P,  _LI, 0,   0,   0)
_EXP(62, qtoj,    "a_qtoj",   _LIFN(0,0), _ARGS(2,8), _P,  _I,  0,   0,   0)
_EXP(63, u8tor16, "f_u8tor16",_VFN(0,0),  _ARGS(2,12),_P,  _LU, 0,   0,   0)
_EXP(64, dtoq,    "a_dtoq",   _VFN(0,0),  _ARGS(2,12),_P,  _D,  0,   0,   0)
_EXP(65, qtod,    "a_qtod",   _DFN(0,0),  _ARGS(1,4), _P,  0,   0,   0,   0)
_EXP(66, r16tou8, "f_r16tou8",_LUFN(0,0), _ARGS(1,4), _P,  0,   0,   0,   0)
_EXP(67, itoq,    "a_itoq",   _VFN(0,0),  _ARGS(2,8), _P,  _I,  0,   0,   0)
_EXP(68, qtoi,    "a_qtoi",   _IFN(0,0),  _ARGS(2,8), _P,  _I,  0,   0,   0)
_EXP(69, u4tor16, "f_u4tor16",_VFN(0,0),  _ARGS(2,8), _P,  _U,  0,   0,   0)
_EXP(70, rtoq,    "a_rtoq",   _VFN(0,0),  _ARGS(2,8), _P,  _R,  0,   0,   0)
_EXP(71, r16tou4, "f_r16tou4",_UFN(0,0),  _ARGS(1,4), _P,  0,   0,   0,   0)
_EXP(72, qtol,    "a_qtol",   _R10FN(0,0),_ARGS(1,4), _P,  0,   0,   0,   0)
_EXP(73, jtol,    "a_jtol",   _R10FN(0,0),_ARGS(1,8), _LI, 0,   0,   0,   0)
_EXP(74, ltoj,    "a_ltoj",   _LIFN(0,0), _ARGS(2,16),_R10,_I,  0,   0,   0)
_EXP(75, u8tor10, "f_u8tor10",_R10FN(0,0),_ARGS(1,8), _LU, 0,   0,   0,   0)
_EXP(76, dtol,    "a_dtol",   _R10FN(0,0),_ARGS(1,8), _D,  0,   0,   0,   0)
_EXP(77, ltod,    "ltod",     _DFN(0,0),  _ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(78, r10tou8, "f_r10tou8",_LUFN(0,0), _ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(79, itol,    "itol",     _R10FN(0,0),_ARGS(1,4), _I,  0,   0,   0,   0)
_EXP(80, ltoi,    "ltoi",     _IFN(0,0),  _ARGS(2,16),_R10,_I,  0,   0,   0)
_EXP(81, u4tor10, "f_u4tor10",_R10FN(0,0),_ARGS(1,4), _U,  0,   0,   0,   0)
_EXP(82, ftol,    "ftol",     _R10FN(0,0),_ARGS(1,4), _R,  0,   0,   0,   0)
_EXP(83, r10tou4, "f_r10tou4",_UFN(0,0),  _ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(84, ltoq,    "a_ltoq",   _VFN(0,0),  _ARGS(2,16),_P,  _R10,0,   0,   0)
_EXP(85, negl,    "negl",     _R10FN(0,0),_ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(86, fabsl,   "a_fabsl",  _R10FN(0,0),_ARGS(1,12),_R10,0,   0,   0,   0)
_EXP(87, negq,    "a_negq",   _VFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(88, fabsq,   "a_fabsq",  _VFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(89, caddl,   "w_caddl",  _VFN(0,0),  _ARGS(5,52),_P,  _R10,_R10,_R10,_R10)
_EXP(90, csubl,   "w_csubl",  _VFN(0,0),  _ARGS(5,52),_P,  _R10,_R10,_R10,_R10)
_EXP(91, cmull,   "w_cmull",  _VFN(0,0),  _ARGS(5,52),_P,  _R10,_R10,_R10,_R10)
_EXP(92, cdivl,   "w_cdivl",  _VFN(0,0),  _ARGS(5,52),_P,  _R10,_R10,_R10,_R10)
_EXP(93, ceql,    "w_ceql",   _IFN(0,0),  _ARGS(4,48),_R10,_R10,_R10,_R10,0)
_EXP(94, cnel,    "w_cnel",   _IFN(0,0),  _ARGS(4,48),_R10,_R10,_R10,_R10,0)
_EXP(95, caddq,   "w_caddq",  _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(96, csubq,   "w_csubq",  _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(97, cmulq,   "w_cmulq",  _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(98, cdivq,   "w_cdivq",  _VFN(0,0),  _ARGS(3,12),_P,  _P,  _P,  0,   0)
_EXP(99, ceqq,    "w_ceqq",   _IFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(100,cneq,    "w_cneq",   _IFN(0,0),  _ARGS(2,8), _P,  _P,  0,   0,   0)
_EXP(101,memset,  "memset",   _VFN(0,0),  _ARGS(3,12),_I,  _I,  _I,  0,   0)
_EXP(102,   mle,  "f_mle",    _VFN(1,0),  _ARGS(1,4), _I,   0,   0,  0,   0)
_EXP(103, lccdiv, "f_lccdiv", _VFN(0,0),  _ARGS(2,16), _C8, _C8,   0,   0,   0)
_EXP(104, lcddiv, "f_lcddiv", _VFN(0,0),  _ARGS(2,32), _C16, _C16,0,   0,   0)
_EXP(105, ulladd, "__aulladd",_LUFN(0,0), _ARGS(2,16), _LU, _LU, 0, 0,0 )
_EXP(106, ullsub, "__aullsub",_LUFN(0,0), _ARGS(2,16), _LU, _LU, 0, 0,0 )
_EXP(107, ullmul, "__allmul", _LUFN(0,0), _ARGS(2,16), _LU, _LU, 0, 0,0 )
_EXP(i08, ulldiv, "__aulldiv",_LUFN(0,0), _ARGS(2,16), _LU, _LU, 0, 0,0 )
_EXP(109, ullrem, "__aullrem",_LUFN(0,0), _ARGS(2,16), _LU, _LU, 0, 0,0 )
_EXP(110, ullcmp, "__aullcmp",_IFN(0,0),  _ARGS(2,16), _LU, _LU, 0, 0,0 )


_SP(0,  ccmult,  "f_ccmult",  _VFN(0,1),  _ARGS(3,12))
_SP(1,  cdmult,  "f_cdmult",  _VFN(0,1),  _ARGS(3,12))
_SP(2,  cqmult,  "f_cqmult",  _VFN(0,1),  _ARGS(3,12))
_SP(3,  ccdiv,   "f_ccdiv",   _VFN(0,1),  _ARGS(3,12))
_SP(4,  cddiv,   "f_cddiv",   _VFN(0,1),  _ARGS(3,12))
_SP(5,  cqdiv,   "f_cqdiv",   _VFN(0,1),  _ARGS(3,12))
_SP(6,  index,   "s_index",   _VFN(0,1),  _ARGS(4,16))
_SP(7,  concat,  "f_concat",  _VFN(0,1),  _ARGS(4,16))
_SP(8,  stop,    "p_stop",    _VFN(0,0),  _ARGS(0,0))
_SP(9,  cpystr,  "f_cpystr",  _VFN(0,1),  _ARGS(4,16))
_SP(10, cpstr,   "f_cpstr",   _IFN(0,1),  _ARGS(5,20))
_SP(11, eoft,    "p_eoft",    _IFN(0,1),  _ARGS(1,4))
_SP(12, eof,     "p_eof",     _IFN(0,1),  _ARGS(1,4))
_SP(13, eol,     "p_eol",     _IFN(0,1),  _ARGS(1,4))
_SP(14, lazy,    "p_lazy",    _IFN(0,1),  _ARGS(1,4))
_SP(15, shft,    "i_shft",    _IFN(0,1),  _ARGS(2,8))
_SP(16, bits,    "i_bits",    _IFN(0,1),  _ARGS(3,12))
_SP(17, bset,    "i_bset",    _IFN(0,1),  _ARGS(2,8))
_SP(18, btest,   "i_btest",   _IFN(0,1),  _ARGS(2,8))
_SP(19, bclr,    "i_bclr",    _IFN(0,1),  _ARGS(2,8))
_SP(20, ishftc,  "f_ishftc",  _IFN(0,1),  _ARGS(3,12))
_SP(21, auxst,   "s#auxst",   _IFN(0,1),  _ARGS(1,4))
_SP(22, adjustl, "s_adjustl", _VFN(0,1),  _ARGS(4,16))
_SP(23, adjustr, "s_adjustr", _VFN(0,1),  _ARGS(4,16))
_SP(24, vrfy,    "i_vrfy",    _IFN(0,1),  _ARGS(4,16))
_SP(25, lshift,  "i_lshift",  _IFN(0,1),  _ARGS(2,8))
_SP(26, rshift,  "i_rshift",  _IFN(0,1),  _ARGS(2,8))
_SP(27, mpy_jj,  "mpy_jj",    _LIFN(0,1), _ARGS(2,8))
_SP(28, div_jj,  "div_jj",    _LIFN(0,1), _ARGS(2,8))
_SP(29, udiv,    "#udiv",     _IFN(0,1),  _ARGS(2,8))
_SP(30, urem,    "#urem",     _IFN(0,1),  _ARGS(2,8))
_SP(31, mod,     "j_mod",     _LIFN(0,1), _ARGS(2,8))
_SP(32, bcomp,   "s_bcomp",   _VFN(0,1),  _ARGS(3,12))
_SP(33, bmove,   "s_bmove",   _VFN(0,1),  _ARGS(3,12))
_SP(34, bfill,   "s_bfill",   _VFN(0,1),  _ARGS(3,12))
_SP(35, cdmdiv,  "f_cdmdiv",  _VFN(0,1),  _ARGS(3,12))
_SP(36, cdmmult, "f_cdmmult", _VFN(0,1),  _ARGS(3,12))
_SP(37, memcpy,  "memcpy",    _VFN(0,1),  _ARGS(3,12))
_SP(38, ckmul,   "s_ckmul",   _IFN(0,1),  _ARGS(2,8))
_SP(39, ckmulu,  "s_ckmulu",  _UFN(0,1),  _ARGS(2,8))
_SP(40, ckaddu,  "s_ckaddu",  _UFN(0,1),  _ARGS(2,8))
_SP(41, cksubu,  "s_cksubu",  _UFN(0,1),  _ARGS(2,8))
_SP(42, ashr64,  "__ashr64",  _VFN(0,1),  _ARGS(0,0))
_SP(43, ashl64,  "__ashl64",  _VFN(0,1),  _ARGS(0,0))
_SP(44, ushr64,  "__ushr64",  _VFN(0,1),  _ARGS(0,0))
_SP(45, arem64,  "__arem64",  _DFN(0,1),  _ARGS(4,16))
_SP(46, ash64,   "__ash64",   _VFN(0,1),  _ARGS(0,0))
_SP(47, ush64,   "__ush64",   _VFN(0,1),  _ARGS(0,0))
_SP(48, cshft64, "__cshft64", _LIFN(0,1),  _ARGS(4,16))
#undef _FN
#undef _VFN
#undef _IFN
#undef _LIFN
#undef _UFN
#undef _LUFN
#undef _PFN
#undef _RFN
#undef _DFN
#undef _R10FN
#undef _R12FN
#undef _R16FN
#undef _ARGS
#undef _ARG
#undef _I
#undef _LI
#undef _U
#undef _LU
#undef _P
#undef _R
#undef _D
#undef _R10
#undef _R12
#undef _R16
#undef _C8
#undef _C16
#undef _C20
#undef _C24
#undef _C32
