lib/C/iec_std_functions.h
changeset 1086 ee66a14e38f7
parent 1085 9766936990db
parent 1073 24ef30a9bcee
child 1090 61fee9f5368a
equal deleted inserted replaced
1085:9766936990db 1086:ee66a14e38f7
    85 #ifdef DISABLE_EN_ENO_PARAMETERS
    85 #ifdef DISABLE_EN_ENO_PARAMETERS
    86 
    86 
    87   /* Do _not_ generate the EN and ENO parameters! */
    87   /* Do _not_ generate the EN and ENO parameters! */
    88   #define EN_ENO_PARAMS
    88   #define EN_ENO_PARAMS
    89   #define EN_ENO
    89   #define EN_ENO
    90   #define EN_PFX _NO_EN
       
    91 
    90 
    92   #define TEST_EN(TYPENAME)
    91   #define TEST_EN(TYPENAME)
    93   #define TEST_EN_COND(TYPENAME, COND)
    92   #define TEST_EN_COND(TYPENAME, COND)
    94 
    93 
    95 #else
    94 #else
    96     
    95     
    97   /* _Do_ generate the EN and ENO parameters! */
    96   /* _Do_ generate the EN and ENO parameters! */
    98   #define EN_ENO_PARAMS BOOL EN, BOOL *ENO,
    97   #define EN_ENO_PARAMS BOOL EN, BOOL *ENO,
    99   #define EN_ENO EN, ENO,
    98   #define EN_ENO EN, ENO,
   100   #define EN_PFX _EN
       
   101 
    99 
   102   #define TEST_EN(TYPENAME)\
   100   #define TEST_EN(TYPENAME)\
   103     if (!EN) {\
   101     if (!EN) {\
   104       if (ENO != NULL)\
   102       if (ENO != NULL)\
   105         *ENO = __BOOL_LITERAL(FALSE);\
   103         *ENO = __BOOL_LITERAL(FALSE);\
   491 
   489 
   492 /*****************************************************/
   490 /*****************************************************/
   493 /***   Table 24 - Standard arithmetic functions    ***/
   491 /***   Table 24 - Standard arithmetic functions    ***/
   494 /*****************************************************/
   492 /*****************************************************/
   495 
   493 
   496 /* NOTE: unlike all other standard functions, the arithmetic based (extensible) functions
   494 #define __arith_expand(fname,TYPENAME, OP)\
   497  *       (ADD, MUL, AND, OR, XOR) have several implementations:
   495 static inline TYPENAME fname(EN_ENO_PARAMS UINT param_count, TYPENAME op1, ...){\
   498  *        - 8 optimized versions for when the functon is called with 1 to 8 INput parameters
   496   va_list ap;\
   499  *        - an extra non-optimized version for every other case. 
   497   UINT i;\
   500  *       
   498   TEST_EN(TYPENAME)\
   501  *       This means that instead of the functions usually named 
   499   \
   502  *           ADD_TTTT() 
   500   va_start (ap, op1);         /* Initialize the argument list.  */\
   503  *           ADD__TTTT__TTTT()        (where TTTT is a type, e.g. INT)
   501   \
   504  *       we have instead
   502   for (i = 0; i < param_count - 1; i++){\
   505  *           ADD_TTTT1(),  ADD_TTTT2(), ... ,ADD_TTTT8()
   503     op1 = op1 OP va_arg (ap, VA_ARGS_##TYPENAME);\
   506  *           ADD_TTTTX()              
   504   }\
   507  *           ADD_TTTT_VAR()           
   505   \
   508  *           ADD__TTTT__TTTT1(), ..., ADD__TTTT__TTTT8()       
   506   va_end (ap);                  /* Clean up.  */\
   509  *           ADD__TTTT__TTTT_VAR()    
   507   return op1;\
   510  *       
   508 }
   511  *       The standard names
       
   512  *           ADD_TTTT() 
       
   513  *           ADD__TTTT__TTTT()
       
   514  *       are instead later (in this .h file) declared as macros, which will choose
       
   515  *       at compilation time the correct version/implementation to call
       
   516  *       based on the number of input parameters in that specific call.
       
   517  */
       
   518 #define __arith_expand(fname, TYPENAME, OP)				\
       
   519 									\
       
   520 	static inline TYPENAME fname##1(EN_ENO_PARAMS			\
       
   521 					TYPENAME op1) {			\
       
   522 		TEST_EN(TYPENAME);					\
       
   523 		return op1;						\
       
   524 	}								\
       
   525 									\
       
   526 	static inline TYPENAME fname##2(EN_ENO_PARAMS			\
       
   527 					TYPENAME op1,			\
       
   528 					TYPENAME op2) {			\
       
   529 		TEST_EN(TYPENAME);					\
       
   530 		op1 = op1 OP op2;					\
       
   531 		return op1;						\
       
   532 	}								\
       
   533 									\
       
   534 	static inline TYPENAME fname##3(EN_ENO_PARAMS			\
       
   535 					TYPENAME op1,			\
       
   536 					TYPENAME op2,			\
       
   537 					TYPENAME op3){			\
       
   538 		TEST_EN(TYPENAME);					\
       
   539 		op1 = op1 OP op2 OP op3;				\
       
   540 		return op1;						\
       
   541 	}								\
       
   542 									\
       
   543 	static inline TYPENAME fname##4(EN_ENO_PARAMS			\
       
   544 					TYPENAME op1,			\
       
   545 					TYPENAME op2,			\
       
   546 					TYPENAME op3,			\
       
   547 					TYPENAME op4){			\
       
   548 		TEST_EN(TYPENAME);					\
       
   549 		op1 = op1 OP op2 OP op3 OP op4;				\
       
   550 		return op1;						\
       
   551 	}								\
       
   552 									\
       
   553 	static inline TYPENAME fname##5(EN_ENO_PARAMS			\
       
   554 					TYPENAME op1,			\
       
   555 					TYPENAME op2,			\
       
   556 					TYPENAME op3,			\
       
   557 					TYPENAME op4,			\
       
   558 					TYPENAME op5){			\
       
   559 		TEST_EN(TYPENAME);					\
       
   560 		op1 = op1 OP op2 OP op3 OP op4 OP op5;			\
       
   561 		return op1;						\
       
   562 	}								\
       
   563 									\
       
   564 	static inline TYPENAME fname##6(EN_ENO_PARAMS			\
       
   565 					TYPENAME op1,			\
       
   566 					TYPENAME op2,			\
       
   567 					TYPENAME op3,			\
       
   568 					TYPENAME op4,			\
       
   569 					TYPENAME op5,			\
       
   570 					TYPENAME op6){			\
       
   571 		TEST_EN(TYPENAME);					\
       
   572 		op1 = op1 OP op2 OP op3 OP op4 OP op5 OP op6;		\
       
   573 		return op1;						\
       
   574 	}								\
       
   575 									\
       
   576 	static inline TYPENAME fname##7(EN_ENO_PARAMS			\
       
   577 					TYPENAME op1,			\
       
   578 					TYPENAME op2,			\
       
   579 					TYPENAME op3,			\
       
   580 					TYPENAME op4,			\
       
   581 					TYPENAME op5,			\
       
   582 					TYPENAME op6,			\
       
   583 					TYPENAME op7){			\
       
   584 		TEST_EN(TYPENAME);					\
       
   585 		op1 = op1 OP op2 OP op3 OP op4 OP op5 OP op6 OP op7;	\
       
   586 		return op1;						\
       
   587 	}								\
       
   588 									\
       
   589 	static inline TYPENAME fname##8(EN_ENO_PARAMS			\
       
   590 					TYPENAME op1,			\
       
   591 					TYPENAME op2,			\
       
   592 					TYPENAME op3,			\
       
   593 					TYPENAME op4,			\
       
   594 					TYPENAME op5,			\
       
   595 					TYPENAME op6,			\
       
   596 					TYPENAME op7,			\
       
   597 					TYPENAME op8){			\
       
   598 		TEST_EN(TYPENAME);					\
       
   599 		op1 =   op1 OP op2 OP op3 OP op4 OP			\
       
   600 			op5 OP op6 OP op7 OP op8;			\
       
   601 		return op1;						\
       
   602 	}								\
       
   603 									\
       
   604 	static inline TYPENAME fname##_VAR(EN_ENO_PARAMS		\
       
   605 					UINT param_count,		\
       
   606 					TYPENAME op1, ...){		\
       
   607 		va_list ap;						\
       
   608 		UINT i;							\
       
   609 		TEST_EN(TYPENAME)					\
       
   610 									\
       
   611 			va_start (ap, op1);         /* Initialize the argument list.  */ \
       
   612 									\
       
   613 		for (i = 0; i < param_count - 1; i++){			\
       
   614 			op1 = op1 OP va_arg (ap, VA_ARGS_##TYPENAME);	\
       
   615 		}							\
       
   616 									\
       
   617 		va_end (ap);                  /* Clean up.  */		\
       
   618 		return op1;						\
       
   619 	}								\
       
   620 									\
       
   621 
       
   622 /* macros needed for #if-like behaviour inside of macro */
       
   623 #define ARITH_OPERATION_COND_IGNORE(...)
       
   624 #define ARITH_OPERATION_COND_IDENT(...) __VA_ARGS__
       
   625 #define ARITH_OPERATION_COND_SKIP_
       
   626 #define ARITH_OPERATION_COND_CLAUSE1(...) __VA_ARGS__ ARITH_OPERATION_COND_IGNORE
       
   627 #define ARITH_OPERATION_COND_CLAUSE2(...) ARITH_OPERATION_COND_IDENT
       
   628 
       
   629 #define ARITH_OPERATION_COND_(A,B,C,...) C
       
   630 #define ARITH_OPERATION_COND(EXP)			\
       
   631 	ARITH_OPERATION_COND_(				\
       
   632 		EXP,					\
       
   633 		ARITH_OPERATION_COND_CLAUSE1,		\
       
   634 		ARITH_OPERATION_COND_CLAUSE2, ~)
       
   635 
       
   636 #define ARITH_OPERATION_LE_(X, Y) ARITH_OPERATION_COND_ ## X ## _LE_ ## Y
       
   637 #define ARITH_OPERATION_LE( X, Y) ARITH_OPERATION_LE_(X, Y)
       
   638 
       
   639 /*
       
   640  * Macro to remove typecast in argument number placed by code generator:
       
   641  * (UINT)3 -> 3
       
   642  */
       
   643 #define CLEAR_TYPECAST(X)
       
   644 #define MAX_INLINE_PARAM_COUNT 8
       
   645 #ifdef DISABLE_EN_ENO_PARAMETERS
       
   646 
       
   647 #define ARITH_OPERATION_CALL__(FNAME, PARAM_COUNT, ...)			\
       
   648 	ARITH_OPERATION_COND(ARITH_OPERATION_LE(PARAM_COUNT, MAX_INLINE_PARAM_COUNT)) \
       
   649 	(FNAME##_VAR(PARAM_COUNT, __VA_ARGS__))				\
       
   650 	(FNAME##PARAM_COUNT(      __VA_ARGS__))
       
   651 
       
   652 #define ARITH_OPERATION_CALL_( FNAME, PARAM_COUNT, ...)    ARITH_OPERATION_CALL__(FNAME, PARAM_COUNT, __VA_ARGS__)
       
   653 #define ARITH_OPERATION_CALL(  FNAME, PARAM_COUNT, ...)    ARITH_OPERATION_CALL_( FNAME, CLEAR_TYPECAST PARAM_COUNT, __VA_ARGS__)
       
   654 
       
   655 #else
       
   656 
       
   657 #define ARITH_OPERATION_CALL__(EN, ENO, FNAME, PARAM_COUNT, ...)	\
       
   658 	ARITH_OPERATION_COND(ARITH_OPERATION_LE(PARAM_COUNT, MAX_INLINE_PARAM_COUNT)) \
       
   659 	(FNAME##_VAR(       (EN), (ENO), PARAM_COUNT, __VA_ARGS__))	\
       
   660 	(FNAME##PARAM_COUNT((EN), (ENO), __VA_ARGS__))
       
   661 
       
   662 
       
   663 #define ARITH_OPERATION_CALL_( EN, ENO, FNAME, PARAM_COUNT, ...)    ARITH_OPERATION_CALL__(EN, ENO, FNAME, PARAM_COUNT, __VA_ARGS__)
       
   664 #define ARITH_OPERATION_CALL(  EN, ENO, FNAME, PARAM_COUNT, ...)    ARITH_OPERATION_CALL_(EN, ENO, FNAME, CLEAR_TYPECAST PARAM_COUNT, __VA_ARGS__)
       
   665 
       
   666 #endif
       
   667 
       
   668 #ifdef DISABLE_EN_ENO_PARAMETERS
       
   669 #define ARITH_OPERATION__TYPE__TYPE_NO_EN(FNAME, PARAM_COUNT, ...)             ARITH_OPERATION_CALL(FNAME, PARAM_COUNT, __VA_ARGS__)
       
   670 #else
       
   671 #define ARITH_OPERATION__TYPE__TYPE_EN(FNAME, EN, ENO, PARAM_COUNT, ...)       ARITH_OPERATION_CALL(EN, ENO, FNAME, PARAM_COUNT, __VA_ARGS__)
       
   672 #endif
       
   673 
       
   674 #define ARITH_OPERATION__TYPE__TYPE_(PFX, ...)               ARITH_OPERATION__TYPE__TYPE##PFX(__VA_ARGS__)
       
   675 #define ARITH_OPERATION__TYPE__TYPE( PFX, ...)               ARITH_OPERATION__TYPE__TYPE_(PFX, __VA_ARGS__)
       
   676 
       
   677 
       
   678 
   509 
   679 #define __arith_static(fname,TYPENAME, OP)\
   510 #define __arith_static(fname,TYPENAME, OP)\
   680 /* explicitly typed function */\
   511 /* explicitly typed function */\
   681 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS TYPENAME op1, TYPENAME op2){\
   512 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS TYPENAME op1, TYPENAME op2){\
   682   TEST_EN(TYPENAME)\
   513   TEST_EN(TYPENAME)\
   693 #define __add(TYPENAME) \
   524 #define __add(TYPENAME) \
   694 __arith_expand(ADD_##TYPENAME, TYPENAME, +) 			 /* explicitly typed function */\
   525 __arith_expand(ADD_##TYPENAME, TYPENAME, +) 			 /* explicitly typed function */\
   695 __arith_expand(ADD__##TYPENAME##__##TYPENAME, TYPENAME, +)	 /* overloaded function */
   526 __arith_expand(ADD__##TYPENAME##__##TYPENAME, TYPENAME, +)	 /* overloaded function */
   696 __ANY_NUM(__add)
   527 __ANY_NUM(__add)
   697 
   528 
   698 #define ADD_SINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_SINT,            __VA_ARGS__)
       
   699 #define ADD__SINT__SINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__SINT__SINT,     __VA_ARGS__)
       
   700 
       
   701 #define ADD_INT(...)           ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_INT,             __VA_ARGS__)
       
   702 #define ADD__INT__INT(...)     ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__INT__INT,       __VA_ARGS__)
       
   703 
       
   704 #define ADD_DINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_DINT,            __VA_ARGS__)
       
   705 #define ADD__DINT__DINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__DINT__DINT,     __VA_ARGS__)
       
   706 
       
   707 #define ADD_LINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_LINT,            __VA_ARGS__)
       
   708 #define ADD__LINT__LINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__LINT__LINT,     __VA_ARGS__)
       
   709 
       
   710 #define ADD_USINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_USINT,           __VA_ARGS__)
       
   711 #define ADD__USINT__USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__USINT__USINT,   __VA_ARGS__)
       
   712 
       
   713 #define ADD_UINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_UINT,            __VA_ARGS__)
       
   714 #define ADD__UINT__UINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__UINT__UINT,     __VA_ARGS__)
       
   715 
       
   716 #define ADD_UDINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_UDINT,           __VA_ARGS__)
       
   717 #define ADD__UDINT__UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__UDINT__UDINT,   __VA_ARGS__)
       
   718 
       
   719 #define ADD_ULINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_ULINT,           __VA_ARGS__)
       
   720 #define ADD__ULINT__ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__ULINT__ULINT,   __VA_ARGS__)
       
   721 
       
   722 #define ADD_REAL(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_REAL,            __VA_ARGS__)
       
   723 #define ADD__REAL__REAL(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__REAL__REAL,     __VA_ARGS__)
       
   724 
       
   725 #define ADD_LREAL(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_LREAL,           __VA_ARGS__)
       
   726 #define ADD__LREAL__LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__LREAL__LREAL,   __VA_ARGS__)
       
   727 
       
   728 
   529 
   729   /**************/
   530   /**************/
   730   /*     MUL    */
   531   /*     MUL    */
   731   /**************/
   532   /**************/
   732 #define __mul(TYPENAME) \
   533 #define __mul(TYPENAME) \
   733 __arith_expand(MUL_##TYPENAME, TYPENAME, *) 			 /* explicitly typed function */\
   534 __arith_expand(MUL_##TYPENAME, TYPENAME, *) 			 /* explicitly typed function */\
   734 __arith_expand(MUL__##TYPENAME##__##TYPENAME, TYPENAME, *)	 /* overloaded function */
   535 __arith_expand(MUL__##TYPENAME##__##TYPENAME, TYPENAME, *)	 /* overloaded function */
   735 __ANY_NUM(__mul)
   536 __ANY_NUM(__mul)
   736 
       
   737 #define MUL_SINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_SINT,            __VA_ARGS__)
       
   738 #define MUL__SINT__SINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__SINT__SINT,     __VA_ARGS__)
       
   739 
       
   740 #define MUL_INT(...)           ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_INT,             __VA_ARGS__)
       
   741 #define MUL__INT__INT(...)     ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__INT__INT,       __VA_ARGS__)
       
   742 
       
   743 #define MUL_DINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_DINT,            __VA_ARGS__)
       
   744 #define MUL__DINT__DINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__DINT__DINT,     __VA_ARGS__)
       
   745 
       
   746 #define MUL_LINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_LINT,            __VA_ARGS__)
       
   747 #define MUL__LINT__LINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__LINT__LINT,     __VA_ARGS__)
       
   748 
       
   749 #define MUL_USINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_USINT,           __VA_ARGS__)
       
   750 #define MUL__USINT__USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__USINT__USINT,   __VA_ARGS__)
       
   751 
       
   752 #define MUL_UINT(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_UINT,            __VA_ARGS__)
       
   753 #define MUL__UINT__UINT(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__UINT__UINT,     __VA_ARGS__)
       
   754 
       
   755 #define MUL_UDINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_UDINT,           __VA_ARGS__)
       
   756 #define MUL__UDINT__UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__UDINT__UDINT,   __VA_ARGS__)
       
   757 
       
   758 #define MUL_ULINT(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_ULINT,           __VA_ARGS__)
       
   759 #define MUL__ULINT__ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__ULINT__ULINT,   __VA_ARGS__)
       
   760 
       
   761 #define MUL_REAL(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_REAL,            __VA_ARGS__)
       
   762 #define MUL__REAL__REAL(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__REAL__REAL,     __VA_ARGS__)
       
   763 
       
   764 #define MUL_LREAL(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_LREAL,           __VA_ARGS__)
       
   765 #define MUL__LREAL__LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__LREAL__LREAL,   __VA_ARGS__)
       
   766 
   537 
   767 
   538 
   768   /**************/
   539   /**************/
   769   /*     SUB    */
   540   /*     SUB    */
   770   /**************/
   541   /**************/
   959   /**************/
   730   /**************/
   960   /*     AND    */
   731   /*     AND    */
   961   /**************/
   732   /**************/
   962 __arith_expand(AND_BOOL, BOOL, && )         /* The explicitly typed standard functions */
   733 __arith_expand(AND_BOOL, BOOL, && )         /* The explicitly typed standard functions */
   963 __arith_expand(AND__BOOL__BOOL, BOOL, && )  /* Overloaded function */
   734 __arith_expand(AND__BOOL__BOOL, BOOL, && )  /* Overloaded function */
   964 #define AND_BOOL(...)        ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_BOOL,        __VA_ARGS__)
       
   965 #define AND__BOOL__BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__BOOL__BOOL, __VA_ARGS__)
       
   966 
   735 
   967 #define __iec_(TYPENAME) \
   736 #define __iec_(TYPENAME) \
   968 __arith_expand(AND_##TYPENAME, TYPENAME, &)  /* The explicitly typed standard functions */\
   737 __arith_expand(AND_##TYPENAME, TYPENAME, &)  /* The explicitly typed standard functions */\
   969 __arith_expand(AND__##TYPENAME##__##TYPENAME, TYPENAME, &)  /* Overloaded function */
   738 __arith_expand(AND__##TYPENAME##__##TYPENAME, TYPENAME, &)  /* Overloaded function */
   970 __ANY_NBIT(__iec_)
   739 __ANY_NBIT(__iec_)
   971 #undef __iec_
   740 #undef __iec_
   972 
       
   973 #define AND_BYTE(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_BYTE,             __VA_ARGS__)
       
   974 #define AND__BYTE__BYTE(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__BYTE__BYTE,      __VA_ARGS__)
       
   975 
       
   976 #define AND_WORD(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_WORD,             __VA_ARGS__)
       
   977 #define AND__WORD__WORD(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__WORD__WORD,      __VA_ARGS__)
       
   978 
       
   979 #define AND_DWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_DWORD,            __VA_ARGS__)
       
   980 #define AND__DWORD__DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__DWORD__DWORD,    __VA_ARGS__)
       
   981 
       
   982 #define AND_LWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_LWORD,            __VA_ARGS__)
       
   983 #define AND__LWORD__LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__LWORD__LWORD,    __VA_ARGS__)
       
   984 
       
   985 
   741 
   986   /*************/
   742   /*************/
   987   /*     OR    */
   743   /*     OR    */
   988   /*************/
   744   /*************/
   989 __arith_expand(OR_BOOL, BOOL, || )         /* The explicitly typed standard functions */
   745 __arith_expand(OR_BOOL, BOOL, || )         /* The explicitly typed standard functions */
   990 __arith_expand(OR__BOOL__BOOL, BOOL, || )  /* Overloaded function */
   746 __arith_expand(OR__BOOL__BOOL, BOOL, || )  /* Overloaded function */
   991 #define OR_BOOL(...)        ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_BOOL,        __VA_ARGS__)
       
   992 #define OR__BOOL__BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__BOOL__BOOL, __VA_ARGS__)
       
   993 
   747 
   994 #define __iec_(TYPENAME) \
   748 #define __iec_(TYPENAME) \
   995 __arith_expand(OR_##TYPENAME, TYPENAME, |)  /* The explicitly typed standard functions */\
   749 __arith_expand(OR_##TYPENAME, TYPENAME, |)  /* The explicitly typed standard functions */\
   996 __arith_expand(OR__##TYPENAME##__##TYPENAME, TYPENAME, |)  /* Overloaded function */
   750 __arith_expand(OR__##TYPENAME##__##TYPENAME, TYPENAME, |)  /* Overloaded function */
   997 __ANY_NBIT(__iec_)
   751 __ANY_NBIT(__iec_)
   998 #undef __iec_
   752 #undef __iec_
   999 
       
  1000 #define OR_BYTE(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_BYTE,             __VA_ARGS__)
       
  1001 #define OR__BYTE__BYTE(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__BYTE__BYTE,      __VA_ARGS__)
       
  1002 
       
  1003 #define OR_WORD(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_WORD,             __VA_ARGS__)
       
  1004 #define OR__WORD__WORD(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__WORD__WORD,      __VA_ARGS__)
       
  1005 
       
  1006 #define OR_DWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_DWORD,            __VA_ARGS__)
       
  1007 #define OR__DWORD__DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__DWORD__DWORD,    __VA_ARGS__)
       
  1008 
       
  1009 #define OR_LWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_LWORD,            __VA_ARGS__)
       
  1010 #define OR__LWORD__LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__LWORD__LWORD,    __VA_ARGS__)
       
  1011 
       
  1012 
   753 
  1013   /**************/
   754   /**************/
  1014   /*     XOR    */
   755   /*     XOR    */
  1015   /**************/
   756   /**************/
  1016 #define __xorbool_expand(fname) \
   757 #define __xorbool_expand(fname) \
  1036 #define __iec_(TYPENAME) \
   777 #define __iec_(TYPENAME) \
  1037 __arith_expand(XOR_##TYPENAME, TYPENAME, ^) /* The explicitly typed standard functions */\
   778 __arith_expand(XOR_##TYPENAME, TYPENAME, ^) /* The explicitly typed standard functions */\
  1038 __arith_expand(XOR__##TYPENAME##__##TYPENAME, TYPENAME, ^) /* Overloaded function */
   779 __arith_expand(XOR__##TYPENAME##__##TYPENAME, TYPENAME, ^) /* Overloaded function */
  1039 __ANY_NBIT(__iec_)
   780 __ANY_NBIT(__iec_)
  1040 #undef __iec_
   781 #undef __iec_
  1041 
       
  1042 #define XOR_BYTE(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR_BYTE,             __VA_ARGS__)
       
  1043 #define XOR__BYTE__BYTE(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR__BYTE__BYTE,      __VA_ARGS__)
       
  1044 
       
  1045 #define XOR_WORD(...)          ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR_WORD,             __VA_ARGS__)
       
  1046 #define XOR__WORD__WORD(...)   ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR__WORD__WORD,      __VA_ARGS__)
       
  1047 
       
  1048 #define XOR_DWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR_DWORD,            __VA_ARGS__)
       
  1049 #define XOR__DWORD__DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR__DWORD__DWORD,    __VA_ARGS__)
       
  1050 
       
  1051 #define XOR_LWORD(...)         ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR_LWORD,            __VA_ARGS__)
       
  1052 #define XOR__LWORD__LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, XOR__LWORD__LWORD,    __VA_ARGS__)
       
  1053 
   782 
  1054 
   783 
  1055   /**************/
   784   /**************/
  1056   /*     NOT    */
   785   /*     NOT    */
  1057   /**************/
   786   /**************/
  1923 /* Do we support this? */
  1652 /* Do we support this? */
  1924 
  1653 
  1925 
  1654 
  1926 
  1655 
  1927 
  1656 
  1928 /*************************************/
  1657 
  1929 /*
  1658 
  1930   These defines are needed to have #if-like
       
  1931   behaviour inside of macro. See macro
       
  1932   ARITH_OPERATION_COND above.
       
  1933 
       
  1934   emacs commands to generate defines below.
       
  1935   Select commands and eval-region
       
  1936 
       
  1937   (next-line)
       
  1938   (next-line)
       
  1939   (dotimes (i 200)
       
  1940     (insert
       
  1941      (format "\n#define ARITH_OPERATION_COND_%d_LE_8 %s" i (if (> i 8) "," "1"))))
       
  1942 */
       
  1943 
       
  1944 #define ARITH_OPERATION_COND_0_LE_8 1
       
  1945 #define ARITH_OPERATION_COND_1_LE_8 1
       
  1946 #define ARITH_OPERATION_COND_2_LE_8 1
       
  1947 #define ARITH_OPERATION_COND_3_LE_8 1
       
  1948 #define ARITH_OPERATION_COND_4_LE_8 1
       
  1949 #define ARITH_OPERATION_COND_5_LE_8 1
       
  1950 #define ARITH_OPERATION_COND_6_LE_8 1
       
  1951 #define ARITH_OPERATION_COND_7_LE_8 1
       
  1952 #define ARITH_OPERATION_COND_8_LE_8 1
       
  1953 #define ARITH_OPERATION_COND_9_LE_8 ,
       
  1954 #define ARITH_OPERATION_COND_10_LE_8 ,
       
  1955 #define ARITH_OPERATION_COND_11_LE_8 ,
       
  1956 #define ARITH_OPERATION_COND_12_LE_8 ,
       
  1957 #define ARITH_OPERATION_COND_13_LE_8 ,
       
  1958 #define ARITH_OPERATION_COND_14_LE_8 ,
       
  1959 #define ARITH_OPERATION_COND_15_LE_8 ,
       
  1960 #define ARITH_OPERATION_COND_16_LE_8 ,
       
  1961 #define ARITH_OPERATION_COND_17_LE_8 ,
       
  1962 #define ARITH_OPERATION_COND_18_LE_8 ,
       
  1963 #define ARITH_OPERATION_COND_19_LE_8 ,
       
  1964 #define ARITH_OPERATION_COND_20_LE_8 ,
       
  1965 #define ARITH_OPERATION_COND_21_LE_8 ,
       
  1966 #define ARITH_OPERATION_COND_22_LE_8 ,
       
  1967 #define ARITH_OPERATION_COND_23_LE_8 ,
       
  1968 #define ARITH_OPERATION_COND_24_LE_8 ,
       
  1969 #define ARITH_OPERATION_COND_25_LE_8 ,
       
  1970 #define ARITH_OPERATION_COND_26_LE_8 ,
       
  1971 #define ARITH_OPERATION_COND_27_LE_8 ,
       
  1972 #define ARITH_OPERATION_COND_28_LE_8 ,
       
  1973 #define ARITH_OPERATION_COND_29_LE_8 ,
       
  1974 #define ARITH_OPERATION_COND_30_LE_8 ,
       
  1975 #define ARITH_OPERATION_COND_31_LE_8 ,
       
  1976 #define ARITH_OPERATION_COND_32_LE_8 ,
       
  1977 #define ARITH_OPERATION_COND_33_LE_8 ,
       
  1978 #define ARITH_OPERATION_COND_34_LE_8 ,
       
  1979 #define ARITH_OPERATION_COND_35_LE_8 ,
       
  1980 #define ARITH_OPERATION_COND_36_LE_8 ,
       
  1981 #define ARITH_OPERATION_COND_37_LE_8 ,
       
  1982 #define ARITH_OPERATION_COND_38_LE_8 ,
       
  1983 #define ARITH_OPERATION_COND_39_LE_8 ,
       
  1984 #define ARITH_OPERATION_COND_40_LE_8 ,
       
  1985 #define ARITH_OPERATION_COND_41_LE_8 ,
       
  1986 #define ARITH_OPERATION_COND_42_LE_8 ,
       
  1987 #define ARITH_OPERATION_COND_43_LE_8 ,
       
  1988 #define ARITH_OPERATION_COND_44_LE_8 ,
       
  1989 #define ARITH_OPERATION_COND_45_LE_8 ,
       
  1990 #define ARITH_OPERATION_COND_46_LE_8 ,
       
  1991 #define ARITH_OPERATION_COND_47_LE_8 ,
       
  1992 #define ARITH_OPERATION_COND_48_LE_8 ,
       
  1993 #define ARITH_OPERATION_COND_49_LE_8 ,
       
  1994 #define ARITH_OPERATION_COND_50_LE_8 ,
       
  1995 #define ARITH_OPERATION_COND_51_LE_8 ,
       
  1996 #define ARITH_OPERATION_COND_52_LE_8 ,
       
  1997 #define ARITH_OPERATION_COND_53_LE_8 ,
       
  1998 #define ARITH_OPERATION_COND_54_LE_8 ,
       
  1999 #define ARITH_OPERATION_COND_55_LE_8 ,
       
  2000 #define ARITH_OPERATION_COND_56_LE_8 ,
       
  2001 #define ARITH_OPERATION_COND_57_LE_8 ,
       
  2002 #define ARITH_OPERATION_COND_58_LE_8 ,
       
  2003 #define ARITH_OPERATION_COND_59_LE_8 ,
       
  2004 #define ARITH_OPERATION_COND_60_LE_8 ,
       
  2005 #define ARITH_OPERATION_COND_61_LE_8 ,
       
  2006 #define ARITH_OPERATION_COND_62_LE_8 ,
       
  2007 #define ARITH_OPERATION_COND_63_LE_8 ,
       
  2008 #define ARITH_OPERATION_COND_64_LE_8 ,
       
  2009 #define ARITH_OPERATION_COND_65_LE_8 ,
       
  2010 #define ARITH_OPERATION_COND_66_LE_8 ,
       
  2011 #define ARITH_OPERATION_COND_67_LE_8 ,
       
  2012 #define ARITH_OPERATION_COND_68_LE_8 ,
       
  2013 #define ARITH_OPERATION_COND_69_LE_8 ,
       
  2014 #define ARITH_OPERATION_COND_70_LE_8 ,
       
  2015 #define ARITH_OPERATION_COND_71_LE_8 ,
       
  2016 #define ARITH_OPERATION_COND_72_LE_8 ,
       
  2017 #define ARITH_OPERATION_COND_73_LE_8 ,
       
  2018 #define ARITH_OPERATION_COND_74_LE_8 ,
       
  2019 #define ARITH_OPERATION_COND_75_LE_8 ,
       
  2020 #define ARITH_OPERATION_COND_76_LE_8 ,
       
  2021 #define ARITH_OPERATION_COND_77_LE_8 ,
       
  2022 #define ARITH_OPERATION_COND_78_LE_8 ,
       
  2023 #define ARITH_OPERATION_COND_79_LE_8 ,
       
  2024 #define ARITH_OPERATION_COND_80_LE_8 ,
       
  2025 #define ARITH_OPERATION_COND_81_LE_8 ,
       
  2026 #define ARITH_OPERATION_COND_82_LE_8 ,
       
  2027 #define ARITH_OPERATION_COND_83_LE_8 ,
       
  2028 #define ARITH_OPERATION_COND_84_LE_8 ,
       
  2029 #define ARITH_OPERATION_COND_85_LE_8 ,
       
  2030 #define ARITH_OPERATION_COND_86_LE_8 ,
       
  2031 #define ARITH_OPERATION_COND_87_LE_8 ,
       
  2032 #define ARITH_OPERATION_COND_88_LE_8 ,
       
  2033 #define ARITH_OPERATION_COND_89_LE_8 ,
       
  2034 #define ARITH_OPERATION_COND_90_LE_8 ,
       
  2035 #define ARITH_OPERATION_COND_91_LE_8 ,
       
  2036 #define ARITH_OPERATION_COND_92_LE_8 ,
       
  2037 #define ARITH_OPERATION_COND_93_LE_8 ,
       
  2038 #define ARITH_OPERATION_COND_94_LE_8 ,
       
  2039 #define ARITH_OPERATION_COND_95_LE_8 ,
       
  2040 #define ARITH_OPERATION_COND_96_LE_8 ,
       
  2041 #define ARITH_OPERATION_COND_97_LE_8 ,
       
  2042 #define ARITH_OPERATION_COND_98_LE_8 ,
       
  2043 #define ARITH_OPERATION_COND_99_LE_8 ,
       
  2044 #define ARITH_OPERATION_COND_100_LE_8 ,
       
  2045 #define ARITH_OPERATION_COND_101_LE_8 ,
       
  2046 #define ARITH_OPERATION_COND_102_LE_8 ,
       
  2047 #define ARITH_OPERATION_COND_103_LE_8 ,
       
  2048 #define ARITH_OPERATION_COND_104_LE_8 ,
       
  2049 #define ARITH_OPERATION_COND_105_LE_8 ,
       
  2050 #define ARITH_OPERATION_COND_106_LE_8 ,
       
  2051 #define ARITH_OPERATION_COND_107_LE_8 ,
       
  2052 #define ARITH_OPERATION_COND_108_LE_8 ,
       
  2053 #define ARITH_OPERATION_COND_109_LE_8 ,
       
  2054 #define ARITH_OPERATION_COND_110_LE_8 ,
       
  2055 #define ARITH_OPERATION_COND_111_LE_8 ,
       
  2056 #define ARITH_OPERATION_COND_112_LE_8 ,
       
  2057 #define ARITH_OPERATION_COND_113_LE_8 ,
       
  2058 #define ARITH_OPERATION_COND_114_LE_8 ,
       
  2059 #define ARITH_OPERATION_COND_115_LE_8 ,
       
  2060 #define ARITH_OPERATION_COND_116_LE_8 ,
       
  2061 #define ARITH_OPERATION_COND_117_LE_8 ,
       
  2062 #define ARITH_OPERATION_COND_118_LE_8 ,
       
  2063 #define ARITH_OPERATION_COND_119_LE_8 ,
       
  2064 #define ARITH_OPERATION_COND_120_LE_8 ,
       
  2065 #define ARITH_OPERATION_COND_121_LE_8 ,
       
  2066 #define ARITH_OPERATION_COND_122_LE_8 ,
       
  2067 #define ARITH_OPERATION_COND_123_LE_8 ,
       
  2068 #define ARITH_OPERATION_COND_124_LE_8 ,
       
  2069 #define ARITH_OPERATION_COND_125_LE_8 ,
       
  2070 #define ARITH_OPERATION_COND_126_LE_8 ,
       
  2071 #define ARITH_OPERATION_COND_127_LE_8 ,
       
  2072 #define ARITH_OPERATION_COND_128_LE_8 ,
       
  2073 #define ARITH_OPERATION_COND_129_LE_8 ,
       
  2074 #define ARITH_OPERATION_COND_130_LE_8 ,
       
  2075 #define ARITH_OPERATION_COND_131_LE_8 ,
       
  2076 #define ARITH_OPERATION_COND_132_LE_8 ,
       
  2077 #define ARITH_OPERATION_COND_133_LE_8 ,
       
  2078 #define ARITH_OPERATION_COND_134_LE_8 ,
       
  2079 #define ARITH_OPERATION_COND_135_LE_8 ,
       
  2080 #define ARITH_OPERATION_COND_136_LE_8 ,
       
  2081 #define ARITH_OPERATION_COND_137_LE_8 ,
       
  2082 #define ARITH_OPERATION_COND_138_LE_8 ,
       
  2083 #define ARITH_OPERATION_COND_139_LE_8 ,
       
  2084 #define ARITH_OPERATION_COND_140_LE_8 ,
       
  2085 #define ARITH_OPERATION_COND_141_LE_8 ,
       
  2086 #define ARITH_OPERATION_COND_142_LE_8 ,
       
  2087 #define ARITH_OPERATION_COND_143_LE_8 ,
       
  2088 #define ARITH_OPERATION_COND_144_LE_8 ,
       
  2089 #define ARITH_OPERATION_COND_145_LE_8 ,
       
  2090 #define ARITH_OPERATION_COND_146_LE_8 ,
       
  2091 #define ARITH_OPERATION_COND_147_LE_8 ,
       
  2092 #define ARITH_OPERATION_COND_148_LE_8 ,
       
  2093 #define ARITH_OPERATION_COND_149_LE_8 ,
       
  2094 #define ARITH_OPERATION_COND_150_LE_8 ,
       
  2095 #define ARITH_OPERATION_COND_151_LE_8 ,
       
  2096 #define ARITH_OPERATION_COND_152_LE_8 ,
       
  2097 #define ARITH_OPERATION_COND_153_LE_8 ,
       
  2098 #define ARITH_OPERATION_COND_154_LE_8 ,
       
  2099 #define ARITH_OPERATION_COND_155_LE_8 ,
       
  2100 #define ARITH_OPERATION_COND_156_LE_8 ,
       
  2101 #define ARITH_OPERATION_COND_157_LE_8 ,
       
  2102 #define ARITH_OPERATION_COND_158_LE_8 ,
       
  2103 #define ARITH_OPERATION_COND_159_LE_8 ,
       
  2104 #define ARITH_OPERATION_COND_160_LE_8 ,
       
  2105 #define ARITH_OPERATION_COND_161_LE_8 ,
       
  2106 #define ARITH_OPERATION_COND_162_LE_8 ,
       
  2107 #define ARITH_OPERATION_COND_163_LE_8 ,
       
  2108 #define ARITH_OPERATION_COND_164_LE_8 ,
       
  2109 #define ARITH_OPERATION_COND_165_LE_8 ,
       
  2110 #define ARITH_OPERATION_COND_166_LE_8 ,
       
  2111 #define ARITH_OPERATION_COND_167_LE_8 ,
       
  2112 #define ARITH_OPERATION_COND_168_LE_8 ,
       
  2113 #define ARITH_OPERATION_COND_169_LE_8 ,
       
  2114 #define ARITH_OPERATION_COND_170_LE_8 ,
       
  2115 #define ARITH_OPERATION_COND_171_LE_8 ,
       
  2116 #define ARITH_OPERATION_COND_172_LE_8 ,
       
  2117 #define ARITH_OPERATION_COND_173_LE_8 ,
       
  2118 #define ARITH_OPERATION_COND_174_LE_8 ,
       
  2119 #define ARITH_OPERATION_COND_175_LE_8 ,
       
  2120 #define ARITH_OPERATION_COND_176_LE_8 ,
       
  2121 #define ARITH_OPERATION_COND_177_LE_8 ,
       
  2122 #define ARITH_OPERATION_COND_178_LE_8 ,
       
  2123 #define ARITH_OPERATION_COND_179_LE_8 ,
       
  2124 #define ARITH_OPERATION_COND_180_LE_8 ,
       
  2125 #define ARITH_OPERATION_COND_181_LE_8 ,
       
  2126 #define ARITH_OPERATION_COND_182_LE_8 ,
       
  2127 #define ARITH_OPERATION_COND_183_LE_8 ,
       
  2128 #define ARITH_OPERATION_COND_184_LE_8 ,
       
  2129 #define ARITH_OPERATION_COND_185_LE_8 ,
       
  2130 #define ARITH_OPERATION_COND_186_LE_8 ,
       
  2131 #define ARITH_OPERATION_COND_187_LE_8 ,
       
  2132 #define ARITH_OPERATION_COND_188_LE_8 ,
       
  2133 #define ARITH_OPERATION_COND_189_LE_8 ,
       
  2134 #define ARITH_OPERATION_COND_190_LE_8 ,
       
  2135 #define ARITH_OPERATION_COND_191_LE_8 ,
       
  2136 #define ARITH_OPERATION_COND_192_LE_8 ,
       
  2137 #define ARITH_OPERATION_COND_193_LE_8 ,
       
  2138 #define ARITH_OPERATION_COND_194_LE_8 ,
       
  2139 #define ARITH_OPERATION_COND_195_LE_8 ,
       
  2140 #define ARITH_OPERATION_COND_196_LE_8 ,
       
  2141 #define ARITH_OPERATION_COND_197_LE_8 ,
       
  2142 #define ARITH_OPERATION_COND_198_LE_8 ,
       
  2143 #define ARITH_OPERATION_COND_199_LE_8 ,
       
  2144 #define ARITH_OPERATION_COND_200_LE_8 ,
       
  2145 #define ARITH_OPERATION_COND_201_LE_8 ,
       
  2146 #define ARITH_OPERATION_COND_202_LE_8 ,
       
  2147 #define ARITH_OPERATION_COND_203_LE_8 ,
       
  2148 #define ARITH_OPERATION_COND_204_LE_8 ,
       
  2149 #define ARITH_OPERATION_COND_205_LE_8 ,
       
  2150 #define ARITH_OPERATION_COND_206_LE_8 ,
       
  2151 #define ARITH_OPERATION_COND_207_LE_8 ,
       
  2152 #define ARITH_OPERATION_COND_208_LE_8 ,
       
  2153 #define ARITH_OPERATION_COND_209_LE_8 ,
       
  2154 #define ARITH_OPERATION_COND_210_LE_8 ,
       
  2155 #define ARITH_OPERATION_COND_211_LE_8 ,
       
  2156 #define ARITH_OPERATION_COND_212_LE_8 ,
       
  2157 #define ARITH_OPERATION_COND_213_LE_8 ,
       
  2158 #define ARITH_OPERATION_COND_214_LE_8 ,
       
  2159 #define ARITH_OPERATION_COND_215_LE_8 ,
       
  2160 #define ARITH_OPERATION_COND_216_LE_8 ,
       
  2161 #define ARITH_OPERATION_COND_217_LE_8 ,
       
  2162 #define ARITH_OPERATION_COND_218_LE_8 ,
       
  2163 #define ARITH_OPERATION_COND_219_LE_8 ,
       
  2164 #define ARITH_OPERATION_COND_220_LE_8 ,
       
  2165 #define ARITH_OPERATION_COND_221_LE_8 ,
       
  2166 #define ARITH_OPERATION_COND_222_LE_8 ,
       
  2167 #define ARITH_OPERATION_COND_223_LE_8 ,
       
  2168 #define ARITH_OPERATION_COND_224_LE_8 ,
       
  2169 #define ARITH_OPERATION_COND_225_LE_8 ,
       
  2170 #define ARITH_OPERATION_COND_226_LE_8 ,
       
  2171 #define ARITH_OPERATION_COND_227_LE_8 ,
       
  2172 #define ARITH_OPERATION_COND_228_LE_8 ,
       
  2173 #define ARITH_OPERATION_COND_229_LE_8 ,
       
  2174 #define ARITH_OPERATION_COND_230_LE_8 ,
       
  2175 #define ARITH_OPERATION_COND_231_LE_8 ,
       
  2176 #define ARITH_OPERATION_COND_232_LE_8 ,
       
  2177 #define ARITH_OPERATION_COND_233_LE_8 ,
       
  2178 #define ARITH_OPERATION_COND_234_LE_8 ,
       
  2179 #define ARITH_OPERATION_COND_235_LE_8 ,
       
  2180 #define ARITH_OPERATION_COND_236_LE_8 ,
       
  2181 #define ARITH_OPERATION_COND_237_LE_8 ,
       
  2182 #define ARITH_OPERATION_COND_238_LE_8 ,
       
  2183 #define ARITH_OPERATION_COND_239_LE_8 ,
       
  2184 #define ARITH_OPERATION_COND_240_LE_8 ,
       
  2185 #define ARITH_OPERATION_COND_241_LE_8 ,
       
  2186 #define ARITH_OPERATION_COND_242_LE_8 ,
       
  2187 #define ARITH_OPERATION_COND_243_LE_8 ,
       
  2188 #define ARITH_OPERATION_COND_244_LE_8 ,
       
  2189 #define ARITH_OPERATION_COND_245_LE_8 ,
       
  2190 #define ARITH_OPERATION_COND_246_LE_8 ,
       
  2191 #define ARITH_OPERATION_COND_247_LE_8 ,
       
  2192 #define ARITH_OPERATION_COND_248_LE_8 ,
       
  2193 #define ARITH_OPERATION_COND_249_LE_8 ,
       
  2194 #define ARITH_OPERATION_COND_250_LE_8 ,
       
  2195 #define ARITH_OPERATION_COND_251_LE_8 ,
       
  2196 #define ARITH_OPERATION_COND_252_LE_8 ,
       
  2197 #define ARITH_OPERATION_COND_253_LE_8 ,
       
  2198 #define ARITH_OPERATION_COND_254_LE_8 ,
       
  2199 #define ARITH_OPERATION_COND_255_LE_8 ,
       
  2200 #define ARITH_OPERATION_COND_256_LE_8 ,
       
  2201 #define ARITH_OPERATION_COND_257_LE_8 ,
       
  2202 #define ARITH_OPERATION_COND_258_LE_8 ,
       
  2203 #define ARITH_OPERATION_COND_259_LE_8 ,
       
  2204 #define ARITH_OPERATION_COND_260_LE_8 ,
       
  2205 #define ARITH_OPERATION_COND_261_LE_8 ,
       
  2206 #define ARITH_OPERATION_COND_262_LE_8 ,
       
  2207 #define ARITH_OPERATION_COND_263_LE_8 ,
       
  2208 #define ARITH_OPERATION_COND_264_LE_8 ,
       
  2209 #define ARITH_OPERATION_COND_265_LE_8 ,
       
  2210 #define ARITH_OPERATION_COND_266_LE_8 ,
       
  2211 #define ARITH_OPERATION_COND_267_LE_8 ,
       
  2212 #define ARITH_OPERATION_COND_268_LE_8 ,
       
  2213 #define ARITH_OPERATION_COND_269_LE_8 ,
       
  2214 #define ARITH_OPERATION_COND_270_LE_8 ,
       
  2215 #define ARITH_OPERATION_COND_271_LE_8 ,
       
  2216 #define ARITH_OPERATION_COND_272_LE_8 ,
       
  2217 #define ARITH_OPERATION_COND_273_LE_8 ,
       
  2218 #define ARITH_OPERATION_COND_274_LE_8 ,
       
  2219 #define ARITH_OPERATION_COND_275_LE_8 ,
       
  2220 #define ARITH_OPERATION_COND_276_LE_8 ,
       
  2221 #define ARITH_OPERATION_COND_277_LE_8 ,
       
  2222 #define ARITH_OPERATION_COND_278_LE_8 ,
       
  2223 #define ARITH_OPERATION_COND_279_LE_8 ,
       
  2224 #define ARITH_OPERATION_COND_280_LE_8 ,
       
  2225 #define ARITH_OPERATION_COND_281_LE_8 ,
       
  2226 #define ARITH_OPERATION_COND_282_LE_8 ,
       
  2227 #define ARITH_OPERATION_COND_283_LE_8 ,
       
  2228 #define ARITH_OPERATION_COND_284_LE_8 ,
       
  2229 #define ARITH_OPERATION_COND_285_LE_8 ,
       
  2230 #define ARITH_OPERATION_COND_286_LE_8 ,
       
  2231 #define ARITH_OPERATION_COND_287_LE_8 ,
       
  2232 #define ARITH_OPERATION_COND_288_LE_8 ,
       
  2233 #define ARITH_OPERATION_COND_289_LE_8 ,
       
  2234 #define ARITH_OPERATION_COND_290_LE_8 ,
       
  2235 #define ARITH_OPERATION_COND_291_LE_8 ,
       
  2236 #define ARITH_OPERATION_COND_292_LE_8 ,
       
  2237 #define ARITH_OPERATION_COND_293_LE_8 ,
       
  2238 #define ARITH_OPERATION_COND_294_LE_8 ,
       
  2239 #define ARITH_OPERATION_COND_295_LE_8 ,
       
  2240 #define ARITH_OPERATION_COND_296_LE_8 ,
       
  2241 #define ARITH_OPERATION_COND_297_LE_8 ,
       
  2242 #define ARITH_OPERATION_COND_298_LE_8 ,
       
  2243 #define ARITH_OPERATION_COND_299_LE_8 ,
       
  2244 #define ARITH_OPERATION_COND_300_LE_8 ,
       
  2245 #define ARITH_OPERATION_COND_301_LE_8 ,
       
  2246 #define ARITH_OPERATION_COND_302_LE_8 ,
       
  2247 #define ARITH_OPERATION_COND_303_LE_8 ,
       
  2248 #define ARITH_OPERATION_COND_304_LE_8 ,
       
  2249 #define ARITH_OPERATION_COND_305_LE_8 ,
       
  2250 #define ARITH_OPERATION_COND_306_LE_8 ,
       
  2251 #define ARITH_OPERATION_COND_307_LE_8 ,
       
  2252 #define ARITH_OPERATION_COND_308_LE_8 ,
       
  2253 #define ARITH_OPERATION_COND_309_LE_8 ,
       
  2254 #define ARITH_OPERATION_COND_310_LE_8 ,
       
  2255 #define ARITH_OPERATION_COND_311_LE_8 ,
       
  2256 #define ARITH_OPERATION_COND_312_LE_8 ,
       
  2257 #define ARITH_OPERATION_COND_313_LE_8 ,
       
  2258 #define ARITH_OPERATION_COND_314_LE_8 ,
       
  2259 #define ARITH_OPERATION_COND_315_LE_8 ,
       
  2260 #define ARITH_OPERATION_COND_316_LE_8 ,
       
  2261 #define ARITH_OPERATION_COND_317_LE_8 ,
       
  2262 #define ARITH_OPERATION_COND_318_LE_8 ,
       
  2263 #define ARITH_OPERATION_COND_319_LE_8 ,
       
  2264 #define ARITH_OPERATION_COND_320_LE_8 ,
       
  2265 #define ARITH_OPERATION_COND_321_LE_8 ,
       
  2266 #define ARITH_OPERATION_COND_322_LE_8 ,
       
  2267 #define ARITH_OPERATION_COND_323_LE_8 ,
       
  2268 #define ARITH_OPERATION_COND_324_LE_8 ,
       
  2269 #define ARITH_OPERATION_COND_325_LE_8 ,
       
  2270 #define ARITH_OPERATION_COND_326_LE_8 ,
       
  2271 #define ARITH_OPERATION_COND_327_LE_8 ,
       
  2272 #define ARITH_OPERATION_COND_328_LE_8 ,
       
  2273 #define ARITH_OPERATION_COND_329_LE_8 ,
       
  2274 #define ARITH_OPERATION_COND_330_LE_8 ,
       
  2275 #define ARITH_OPERATION_COND_331_LE_8 ,
       
  2276 #define ARITH_OPERATION_COND_332_LE_8 ,
       
  2277 #define ARITH_OPERATION_COND_333_LE_8 ,
       
  2278 #define ARITH_OPERATION_COND_334_LE_8 ,
       
  2279 #define ARITH_OPERATION_COND_335_LE_8 ,
       
  2280 #define ARITH_OPERATION_COND_336_LE_8 ,
       
  2281 #define ARITH_OPERATION_COND_337_LE_8 ,
       
  2282 #define ARITH_OPERATION_COND_338_LE_8 ,
       
  2283 #define ARITH_OPERATION_COND_339_LE_8 ,
       
  2284 #define ARITH_OPERATION_COND_340_LE_8 ,
       
  2285 #define ARITH_OPERATION_COND_341_LE_8 ,
       
  2286 #define ARITH_OPERATION_COND_342_LE_8 ,
       
  2287 #define ARITH_OPERATION_COND_343_LE_8 ,
       
  2288 #define ARITH_OPERATION_COND_344_LE_8 ,
       
  2289 #define ARITH_OPERATION_COND_345_LE_8 ,
       
  2290 #define ARITH_OPERATION_COND_346_LE_8 ,
       
  2291 #define ARITH_OPERATION_COND_347_LE_8 ,
       
  2292 #define ARITH_OPERATION_COND_348_LE_8 ,
       
  2293 #define ARITH_OPERATION_COND_349_LE_8 ,
       
  2294 #define ARITH_OPERATION_COND_350_LE_8 ,
       
  2295 #define ARITH_OPERATION_COND_351_LE_8 ,
       
  2296 #define ARITH_OPERATION_COND_352_LE_8 ,
       
  2297 #define ARITH_OPERATION_COND_353_LE_8 ,
       
  2298 #define ARITH_OPERATION_COND_354_LE_8 ,
       
  2299 #define ARITH_OPERATION_COND_355_LE_8 ,
       
  2300 #define ARITH_OPERATION_COND_356_LE_8 ,
       
  2301 #define ARITH_OPERATION_COND_357_LE_8 ,
       
  2302 #define ARITH_OPERATION_COND_358_LE_8 ,
       
  2303 #define ARITH_OPERATION_COND_359_LE_8 ,
       
  2304 #define ARITH_OPERATION_COND_360_LE_8 ,
       
  2305 #define ARITH_OPERATION_COND_361_LE_8 ,
       
  2306 #define ARITH_OPERATION_COND_362_LE_8 ,
       
  2307 #define ARITH_OPERATION_COND_363_LE_8 ,
       
  2308 #define ARITH_OPERATION_COND_364_LE_8 ,
       
  2309 #define ARITH_OPERATION_COND_365_LE_8 ,
       
  2310 #define ARITH_OPERATION_COND_366_LE_8 ,
       
  2311 #define ARITH_OPERATION_COND_367_LE_8 ,
       
  2312 #define ARITH_OPERATION_COND_368_LE_8 ,
       
  2313 #define ARITH_OPERATION_COND_369_LE_8 ,
       
  2314 #define ARITH_OPERATION_COND_370_LE_8 ,
       
  2315 #define ARITH_OPERATION_COND_371_LE_8 ,
       
  2316 #define ARITH_OPERATION_COND_372_LE_8 ,
       
  2317 #define ARITH_OPERATION_COND_373_LE_8 ,
       
  2318 #define ARITH_OPERATION_COND_374_LE_8 ,
       
  2319 #define ARITH_OPERATION_COND_375_LE_8 ,
       
  2320 #define ARITH_OPERATION_COND_376_LE_8 ,
       
  2321 #define ARITH_OPERATION_COND_377_LE_8 ,
       
  2322 #define ARITH_OPERATION_COND_378_LE_8 ,
       
  2323 #define ARITH_OPERATION_COND_379_LE_8 ,
       
  2324 #define ARITH_OPERATION_COND_380_LE_8 ,
       
  2325 #define ARITH_OPERATION_COND_381_LE_8 ,
       
  2326 #define ARITH_OPERATION_COND_382_LE_8 ,
       
  2327 #define ARITH_OPERATION_COND_383_LE_8 ,
       
  2328 #define ARITH_OPERATION_COND_384_LE_8 ,
       
  2329 #define ARITH_OPERATION_COND_385_LE_8 ,
       
  2330 #define ARITH_OPERATION_COND_386_LE_8 ,
       
  2331 #define ARITH_OPERATION_COND_387_LE_8 ,
       
  2332 #define ARITH_OPERATION_COND_388_LE_8 ,
       
  2333 #define ARITH_OPERATION_COND_389_LE_8 ,
       
  2334 #define ARITH_OPERATION_COND_390_LE_8 ,
       
  2335 #define ARITH_OPERATION_COND_391_LE_8 ,
       
  2336 #define ARITH_OPERATION_COND_392_LE_8 ,
       
  2337 #define ARITH_OPERATION_COND_393_LE_8 ,
       
  2338 #define ARITH_OPERATION_COND_394_LE_8 ,
       
  2339 #define ARITH_OPERATION_COND_395_LE_8 ,
       
  2340 #define ARITH_OPERATION_COND_396_LE_8 ,
       
  2341 #define ARITH_OPERATION_COND_397_LE_8 ,
       
  2342 #define ARITH_OPERATION_COND_398_LE_8 ,
       
  2343 #define ARITH_OPERATION_COND_399_LE_8 ,
       
  2344 #define ARITH_OPERATION_COND_400_LE_8 ,
       
  2345 #define ARITH_OPERATION_COND_401_LE_8 ,
       
  2346 #define ARITH_OPERATION_COND_402_LE_8 ,
       
  2347 #define ARITH_OPERATION_COND_403_LE_8 ,
       
  2348 #define ARITH_OPERATION_COND_404_LE_8 ,
       
  2349 #define ARITH_OPERATION_COND_405_LE_8 ,
       
  2350 #define ARITH_OPERATION_COND_406_LE_8 ,
       
  2351 #define ARITH_OPERATION_COND_407_LE_8 ,
       
  2352 #define ARITH_OPERATION_COND_408_LE_8 ,
       
  2353 #define ARITH_OPERATION_COND_409_LE_8 ,
       
  2354 #define ARITH_OPERATION_COND_410_LE_8 ,
       
  2355 #define ARITH_OPERATION_COND_411_LE_8 ,
       
  2356 #define ARITH_OPERATION_COND_412_LE_8 ,
       
  2357 #define ARITH_OPERATION_COND_413_LE_8 ,
       
  2358 #define ARITH_OPERATION_COND_414_LE_8 ,
       
  2359 #define ARITH_OPERATION_COND_415_LE_8 ,
       
  2360 #define ARITH_OPERATION_COND_416_LE_8 ,
       
  2361 #define ARITH_OPERATION_COND_417_LE_8 ,
       
  2362 #define ARITH_OPERATION_COND_418_LE_8 ,
       
  2363 #define ARITH_OPERATION_COND_419_LE_8 ,
       
  2364 #define ARITH_OPERATION_COND_420_LE_8 ,
       
  2365 #define ARITH_OPERATION_COND_421_LE_8 ,
       
  2366 #define ARITH_OPERATION_COND_422_LE_8 ,
       
  2367 #define ARITH_OPERATION_COND_423_LE_8 ,
       
  2368 #define ARITH_OPERATION_COND_424_LE_8 ,
       
  2369 #define ARITH_OPERATION_COND_425_LE_8 ,
       
  2370 #define ARITH_OPERATION_COND_426_LE_8 ,
       
  2371 #define ARITH_OPERATION_COND_427_LE_8 ,
       
  2372 #define ARITH_OPERATION_COND_428_LE_8 ,
       
  2373 #define ARITH_OPERATION_COND_429_LE_8 ,
       
  2374 #define ARITH_OPERATION_COND_430_LE_8 ,
       
  2375 #define ARITH_OPERATION_COND_431_LE_8 ,
       
  2376 #define ARITH_OPERATION_COND_432_LE_8 ,
       
  2377 #define ARITH_OPERATION_COND_433_LE_8 ,
       
  2378 #define ARITH_OPERATION_COND_434_LE_8 ,
       
  2379 #define ARITH_OPERATION_COND_435_LE_8 ,
       
  2380 #define ARITH_OPERATION_COND_436_LE_8 ,
       
  2381 #define ARITH_OPERATION_COND_437_LE_8 ,
       
  2382 #define ARITH_OPERATION_COND_438_LE_8 ,
       
  2383 #define ARITH_OPERATION_COND_439_LE_8 ,
       
  2384 #define ARITH_OPERATION_COND_440_LE_8 ,
       
  2385 #define ARITH_OPERATION_COND_441_LE_8 ,
       
  2386 #define ARITH_OPERATION_COND_442_LE_8 ,
       
  2387 #define ARITH_OPERATION_COND_443_LE_8 ,
       
  2388 #define ARITH_OPERATION_COND_444_LE_8 ,
       
  2389 #define ARITH_OPERATION_COND_445_LE_8 ,
       
  2390 #define ARITH_OPERATION_COND_446_LE_8 ,
       
  2391 #define ARITH_OPERATION_COND_447_LE_8 ,
       
  2392 #define ARITH_OPERATION_COND_448_LE_8 ,
       
  2393 #define ARITH_OPERATION_COND_449_LE_8 ,
       
  2394 #define ARITH_OPERATION_COND_450_LE_8 ,
       
  2395 #define ARITH_OPERATION_COND_451_LE_8 ,
       
  2396 #define ARITH_OPERATION_COND_452_LE_8 ,
       
  2397 #define ARITH_OPERATION_COND_453_LE_8 ,
       
  2398 #define ARITH_OPERATION_COND_454_LE_8 ,
       
  2399 #define ARITH_OPERATION_COND_455_LE_8 ,
       
  2400 #define ARITH_OPERATION_COND_456_LE_8 ,
       
  2401 #define ARITH_OPERATION_COND_457_LE_8 ,
       
  2402 #define ARITH_OPERATION_COND_458_LE_8 ,
       
  2403 #define ARITH_OPERATION_COND_459_LE_8 ,
       
  2404 #define ARITH_OPERATION_COND_460_LE_8 ,
       
  2405 #define ARITH_OPERATION_COND_461_LE_8 ,
       
  2406 #define ARITH_OPERATION_COND_462_LE_8 ,
       
  2407 #define ARITH_OPERATION_COND_463_LE_8 ,
       
  2408 #define ARITH_OPERATION_COND_464_LE_8 ,
       
  2409 #define ARITH_OPERATION_COND_465_LE_8 ,
       
  2410 #define ARITH_OPERATION_COND_466_LE_8 ,
       
  2411 #define ARITH_OPERATION_COND_467_LE_8 ,
       
  2412 #define ARITH_OPERATION_COND_468_LE_8 ,
       
  2413 #define ARITH_OPERATION_COND_469_LE_8 ,
       
  2414 #define ARITH_OPERATION_COND_470_LE_8 ,
       
  2415 #define ARITH_OPERATION_COND_471_LE_8 ,
       
  2416 #define ARITH_OPERATION_COND_472_LE_8 ,
       
  2417 #define ARITH_OPERATION_COND_473_LE_8 ,
       
  2418 #define ARITH_OPERATION_COND_474_LE_8 ,
       
  2419 #define ARITH_OPERATION_COND_475_LE_8 ,
       
  2420 #define ARITH_OPERATION_COND_476_LE_8 ,
       
  2421 #define ARITH_OPERATION_COND_477_LE_8 ,
       
  2422 #define ARITH_OPERATION_COND_478_LE_8 ,
       
  2423 #define ARITH_OPERATION_COND_479_LE_8 ,
       
  2424 #define ARITH_OPERATION_COND_480_LE_8 ,
       
  2425 #define ARITH_OPERATION_COND_481_LE_8 ,
       
  2426 #define ARITH_OPERATION_COND_482_LE_8 ,
       
  2427 #define ARITH_OPERATION_COND_483_LE_8 ,
       
  2428 #define ARITH_OPERATION_COND_484_LE_8 ,
       
  2429 #define ARITH_OPERATION_COND_485_LE_8 ,
       
  2430 #define ARITH_OPERATION_COND_486_LE_8 ,
       
  2431 #define ARITH_OPERATION_COND_487_LE_8 ,
       
  2432 #define ARITH_OPERATION_COND_488_LE_8 ,
       
  2433 #define ARITH_OPERATION_COND_489_LE_8 ,
       
  2434 #define ARITH_OPERATION_COND_490_LE_8 ,
       
  2435 #define ARITH_OPERATION_COND_491_LE_8 ,
       
  2436 #define ARITH_OPERATION_COND_492_LE_8 ,
       
  2437 #define ARITH_OPERATION_COND_493_LE_8 ,
       
  2438 #define ARITH_OPERATION_COND_494_LE_8 ,
       
  2439 #define ARITH_OPERATION_COND_495_LE_8 ,
       
  2440 #define ARITH_OPERATION_COND_496_LE_8 ,
       
  2441 #define ARITH_OPERATION_COND_497_LE_8 ,
       
  2442 #define ARITH_OPERATION_COND_498_LE_8 ,
       
  2443 #define ARITH_OPERATION_COND_499_LE_8 ,
       
  2444 
  1659 
  2445 
  1660 
  2446 #endif /* _IEC_STD_FUNCTIONS_H */
  1661 #endif /* _IEC_STD_FUNCTIONS_H */