489 |
491 |
490 /*****************************************************/ |
492 /*****************************************************/ |
491 /*** Table 24 - Standard arithmetic functions ***/ |
493 /*** Table 24 - Standard arithmetic functions ***/ |
492 /*****************************************************/ |
494 /*****************************************************/ |
493 |
495 |
494 #define __arith_expand(fname,TYPENAME, OP)\ |
496 #define __arith_expand(fname, TYPENAME, OP) \ |
495 static inline TYPENAME fname(EN_ENO_PARAMS UINT param_count, TYPENAME op1, ...){\ |
497 \ |
496 va_list ap;\ |
498 static inline TYPENAME fname##1(EN_ENO_PARAMS \ |
497 UINT i;\ |
499 TYPENAME op1) { \ |
498 TEST_EN(TYPENAME)\ |
500 TEST_EN(TYPENAME); \ |
499 \ |
501 return op1; \ |
500 va_start (ap, op1); /* Initialize the argument list. */\ |
502 } \ |
501 \ |
503 \ |
502 for (i = 0; i < param_count - 1; i++){\ |
504 static inline TYPENAME fname##2(EN_ENO_PARAMS \ |
503 op1 = op1 OP va_arg (ap, VA_ARGS_##TYPENAME);\ |
505 TYPENAME op1, \ |
504 }\ |
506 TYPENAME op2) { \ |
505 \ |
507 TEST_EN(TYPENAME); \ |
506 va_end (ap); /* Clean up. */\ |
508 op1 = op1 OP op2; \ |
507 return op1;\ |
509 return op1; \ |
508 } |
510 } \ |
|
511 \ |
|
512 static inline TYPENAME fname##3(EN_ENO_PARAMS \ |
|
513 TYPENAME op1, \ |
|
514 TYPENAME op2, \ |
|
515 TYPENAME op3){ \ |
|
516 TEST_EN(TYPENAME); \ |
|
517 op1 = op1 OP op2 OP op3; \ |
|
518 return op1; \ |
|
519 } \ |
|
520 \ |
|
521 static inline TYPENAME fname##4(EN_ENO_PARAMS \ |
|
522 TYPENAME op1, \ |
|
523 TYPENAME op2, \ |
|
524 TYPENAME op3, \ |
|
525 TYPENAME op4){ \ |
|
526 TEST_EN(TYPENAME); \ |
|
527 op1 = op1 OP op2 OP op3 OP op4; \ |
|
528 return op1; \ |
|
529 } \ |
|
530 \ |
|
531 static inline TYPENAME fname##5(EN_ENO_PARAMS \ |
|
532 TYPENAME op1, \ |
|
533 TYPENAME op2, \ |
|
534 TYPENAME op3, \ |
|
535 TYPENAME op4, \ |
|
536 TYPENAME op5){ \ |
|
537 TEST_EN(TYPENAME); \ |
|
538 op1 = op1 OP op2 OP op3 OP op4 OP op5; \ |
|
539 return op1; \ |
|
540 } \ |
|
541 \ |
|
542 static inline TYPENAME fname##6(EN_ENO_PARAMS \ |
|
543 TYPENAME op1, \ |
|
544 TYPENAME op2, \ |
|
545 TYPENAME op3, \ |
|
546 TYPENAME op4, \ |
|
547 TYPENAME op5, \ |
|
548 TYPENAME op6){ \ |
|
549 TEST_EN(TYPENAME); \ |
|
550 op1 = op1 OP op2 OP op3 OP op4 OP op5 OP op6; \ |
|
551 return op1; \ |
|
552 } \ |
|
553 \ |
|
554 static inline TYPENAME fname##7(EN_ENO_PARAMS \ |
|
555 TYPENAME op1, \ |
|
556 TYPENAME op2, \ |
|
557 TYPENAME op3, \ |
|
558 TYPENAME op4, \ |
|
559 TYPENAME op5, \ |
|
560 TYPENAME op6, \ |
|
561 TYPENAME op7){ \ |
|
562 TEST_EN(TYPENAME); \ |
|
563 op1 = op1 OP op2 OP op3 OP op4 OP op5 OP op6 OP op7; \ |
|
564 return op1; \ |
|
565 } \ |
|
566 \ |
|
567 static inline TYPENAME fname##8(EN_ENO_PARAMS \ |
|
568 TYPENAME op1, \ |
|
569 TYPENAME op2, \ |
|
570 TYPENAME op3, \ |
|
571 TYPENAME op4, \ |
|
572 TYPENAME op5, \ |
|
573 TYPENAME op6, \ |
|
574 TYPENAME op7, \ |
|
575 TYPENAME op8){ \ |
|
576 TEST_EN(TYPENAME); \ |
|
577 op1 = op1 OP op2 OP op3 OP op4 OP \ |
|
578 op5 OP op6 OP op7 OP op8; \ |
|
579 return op1; \ |
|
580 } \ |
|
581 \ |
|
582 static inline TYPENAME fname##_VAR(EN_ENO_PARAMS \ |
|
583 UINT param_count, \ |
|
584 TYPENAME op1, ...){ \ |
|
585 va_list ap; \ |
|
586 UINT i; \ |
|
587 TEST_EN(TYPENAME) \ |
|
588 \ |
|
589 va_start (ap, op1); /* Initialize the argument list. */ \ |
|
590 \ |
|
591 for (i = 0; i < param_count - 1; i++){ \ |
|
592 op1 = op1 OP va_arg (ap, VA_ARGS_##TYPENAME); \ |
|
593 } \ |
|
594 \ |
|
595 va_end (ap); /* Clean up. */ \ |
|
596 return op1; \ |
|
597 } \ |
|
598 \ |
|
599 |
|
600 /* macros needed for #if-like behaviour inside of macro */ |
|
601 #define ARITH_OPERATION_COND_IGNORE(...) |
|
602 #define ARITH_OPERATION_COND_IDENT(...) __VA_ARGS__ |
|
603 #define ARITH_OPERATION_COND_SKIP_ |
|
604 #define ARITH_OPERATION_COND_CLAUSE1(...) __VA_ARGS__ ARITH_OPERATION_COND_IGNORE |
|
605 #define ARITH_OPERATION_COND_CLAUSE2(...) ARITH_OPERATION_COND_IDENT |
|
606 |
|
607 #define ARITH_OPERATION_COND_(A,B,C,...) C |
|
608 #define ARITH_OPERATION_COND(EXP) \ |
|
609 ARITH_OPERATION_COND_( \ |
|
610 EXP, \ |
|
611 ARITH_OPERATION_COND_CLAUSE1, \ |
|
612 ARITH_OPERATION_COND_CLAUSE2, ~) |
|
613 |
|
614 #define ARITH_OPERATION_LE_(X, Y) ARITH_OPERATION_COND_ ## X ## _LE_ ## Y |
|
615 #define ARITH_OPERATION_LE( X, Y) ARITH_OPERATION_LE_(X, Y) |
|
616 |
|
617 /* |
|
618 * Macro to remove typecast in argument number placed by code generator: |
|
619 * (UINT)3 -> 3 |
|
620 */ |
|
621 #define CLEAR_TYPECAST(X) |
|
622 #define MAX_INLINE_PARAM_COUNT 8 |
|
623 #ifdef DISABLE_EN_ENO_PARAMETERS |
|
624 |
|
625 #define ARITH_OPERATION_CALL__(FNAME, PARAM_COUNT, ...) \ |
|
626 ARITH_OPERATION_COND(ARITH_OPERATION_LE(PARAM_COUNT, MAX_INLINE_PARAM_COUNT)) \ |
|
627 (FNAME##_VAR(PARAM_COUNT, __VA_ARGS__)) \ |
|
628 (FNAME##PARAM_COUNT( __VA_ARGS__)) |
|
629 |
|
630 #define ARITH_OPERATION_CALL_( FNAME, PARAM_COUNT, ...) ARITH_OPERATION_CALL__(FNAME, PARAM_COUNT, __VA_ARGS__) |
|
631 #define ARITH_OPERATION_CALL( FNAME, PARAM_COUNT, ...) ARITH_OPERATION_CALL_( FNAME, CLEAR_TYPECAST PARAM_COUNT, __VA_ARGS__) |
|
632 |
|
633 #else |
|
634 |
|
635 #define ARITH_OPERATION_CALL__(EN, ENO, FNAME, PARAM_COUNT, ...) \ |
|
636 ARITH_OPERATION_COND(ARITH_OPERATION_LE(PARAM_COUNT, MAX_INLINE_PARAM_COUNT)) \ |
|
637 (FNAME##_VAR( (EN), (ENO), PARAM_COUNT, __VA_ARGS__)) \ |
|
638 (FNAME##PARAM_COUNT((EN), (ENO), __VA_ARGS__)) |
|
639 |
|
640 |
|
641 #define ARITH_OPERATION_CALL_( EN, ENO, FNAME, PARAM_COUNT, ...) ARITH_OPERATION_CALL__(EN, ENO, FNAME, PARAM_COUNT, __VA_ARGS__) |
|
642 #define ARITH_OPERATION_CALL( EN, ENO, FNAME, PARAM_COUNT, ...) ARITH_OPERATION_CALL_(EN, ENO, FNAME, CLEAR_TYPECAST PARAM_COUNT, __VA_ARGS__) |
|
643 |
|
644 #endif |
|
645 |
|
646 #ifdef DISABLE_EN_ENO_PARAMETERS |
|
647 #define ARITH_OPERATION__TYPE__TYPE_NO_EN(FNAME, PARAM_COUNT, ...) ARITH_OPERATION_CALL(FNAME, PARAM_COUNT, __VA_ARGS__) |
|
648 #else |
|
649 #define ARITH_OPERATION__TYPE__TYPE_EN(FNAME, EN, ENO, PARAM_COUNT, ...) ARITH_OPERATION_CALL(EN, ENO, FNAME, PARAM_COUNT, __VA_ARGS__) |
|
650 #endif |
|
651 |
|
652 #define ARITH_OPERATION__TYPE__TYPE_(PFX, ...) ARITH_OPERATION__TYPE__TYPE##PFX(__VA_ARGS__) |
|
653 #define ARITH_OPERATION__TYPE__TYPE( PFX, ...) ARITH_OPERATION__TYPE__TYPE_(PFX, __VA_ARGS__) |
|
654 |
|
655 |
509 |
656 |
510 #define __arith_static(fname,TYPENAME, OP)\ |
657 #define __arith_static(fname,TYPENAME, OP)\ |
511 /* explicitly typed function */\ |
658 /* explicitly typed function */\ |
512 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS TYPENAME op1, TYPENAME op2){\ |
659 static inline TYPENAME fname##TYPENAME(EN_ENO_PARAMS TYPENAME op1, TYPENAME op2){\ |
513 TEST_EN(TYPENAME)\ |
660 TEST_EN(TYPENAME)\ |
524 #define __add(TYPENAME) \ |
671 #define __add(TYPENAME) \ |
525 __arith_expand(ADD_##TYPENAME, TYPENAME, +) /* explicitly typed function */\ |
672 __arith_expand(ADD_##TYPENAME, TYPENAME, +) /* explicitly typed function */\ |
526 __arith_expand(ADD__##TYPENAME##__##TYPENAME, TYPENAME, +) /* overloaded function */ |
673 __arith_expand(ADD__##TYPENAME##__##TYPENAME, TYPENAME, +) /* overloaded function */ |
527 __ANY_NUM(__add) |
674 __ANY_NUM(__add) |
528 |
675 |
|
676 #define ADD_SINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_SINT, __VA_ARGS__) |
|
677 #define ADD__SINT__SINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__SINT__SINT, __VA_ARGS__) |
|
678 |
|
679 #define ADD_INT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_INT, __VA_ARGS__) |
|
680 #define ADD__INT__INT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__INT__INT, __VA_ARGS__) |
|
681 |
|
682 #define ADD_DINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_DINT, __VA_ARGS__) |
|
683 #define ADD__DINT__DINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__DINT__DINT, __VA_ARGS__) |
|
684 |
|
685 #define ADD_LINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_LINT, __VA_ARGS__) |
|
686 #define ADD__LINT__LINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__LINT__LINT, __VA_ARGS__) |
|
687 |
|
688 #define ADD_USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_USINT, __VA_ARGS__) |
|
689 #define ADD__USINT__USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__USINT__USINT, __VA_ARGS__) |
|
690 |
|
691 #define ADD_UINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_UINT, __VA_ARGS__) |
|
692 #define ADD__UINT__UINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__UINT__UINT, __VA_ARGS__) |
|
693 |
|
694 #define ADD_UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_UDINT, __VA_ARGS__) |
|
695 #define ADD__UDINT__UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__UDINT__UDINT, __VA_ARGS__) |
|
696 |
|
697 #define ADD_ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_ULINT, __VA_ARGS__) |
|
698 #define ADD__ULINT__ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__ULINT__ULINT, __VA_ARGS__) |
|
699 |
|
700 #define ADD_REAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_REAL, __VA_ARGS__) |
|
701 #define ADD__REAL__REAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__REAL__REAL, __VA_ARGS__) |
|
702 |
|
703 #define ADD_LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD_LREAL, __VA_ARGS__) |
|
704 #define ADD__LREAL__LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, ADD__LREAL__LREAL, __VA_ARGS__) |
|
705 |
529 |
706 |
530 /**************/ |
707 /**************/ |
531 /* MUL */ |
708 /* MUL */ |
532 /**************/ |
709 /**************/ |
533 #define __mul(TYPENAME) \ |
710 #define __mul(TYPENAME) \ |
534 __arith_expand(MUL_##TYPENAME, TYPENAME, *) /* explicitly typed function */\ |
711 __arith_expand(MUL_##TYPENAME, TYPENAME, *) /* explicitly typed function */\ |
535 __arith_expand(MUL__##TYPENAME##__##TYPENAME, TYPENAME, *) /* overloaded function */ |
712 __arith_expand(MUL__##TYPENAME##__##TYPENAME, TYPENAME, *) /* overloaded function */ |
536 __ANY_NUM(__mul) |
713 __ANY_NUM(__mul) |
|
714 |
|
715 #define MUL_SINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_SINT, __VA_ARGS__) |
|
716 #define MUL__SINT__SINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__SINT__SINT, __VA_ARGS__) |
|
717 |
|
718 #define MUL_INT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_INT, __VA_ARGS__) |
|
719 #define MUL__INT__INT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__INT__INT, __VA_ARGS__) |
|
720 |
|
721 #define MUL_DINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_DINT, __VA_ARGS__) |
|
722 #define MUL__DINT__DINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__DINT__DINT, __VA_ARGS__) |
|
723 |
|
724 #define MUL_LINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_LINT, __VA_ARGS__) |
|
725 #define MUL__LINT__LINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__LINT__LINT, __VA_ARGS__) |
|
726 |
|
727 #define MUL_USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_USINT, __VA_ARGS__) |
|
728 #define MUL__USINT__USINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__USINT__USINT, __VA_ARGS__) |
|
729 |
|
730 #define MUL_UINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_UINT, __VA_ARGS__) |
|
731 #define MUL__UINT__UINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__UINT__UINT, __VA_ARGS__) |
|
732 |
|
733 #define MUL_UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_UDINT, __VA_ARGS__) |
|
734 #define MUL__UDINT__UDINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__UDINT__UDINT, __VA_ARGS__) |
|
735 |
|
736 #define MUL_ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_ULINT, __VA_ARGS__) |
|
737 #define MUL__ULINT__ULINT(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__ULINT__ULINT, __VA_ARGS__) |
|
738 |
|
739 #define MUL_REAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_REAL, __VA_ARGS__) |
|
740 #define MUL__REAL__REAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__REAL__REAL, __VA_ARGS__) |
|
741 |
|
742 #define MUL_LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL_LREAL, __VA_ARGS__) |
|
743 #define MUL__LREAL__LREAL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, MUL__LREAL__LREAL, __VA_ARGS__) |
537 |
744 |
538 |
745 |
539 /**************/ |
746 /**************/ |
540 /* SUB */ |
747 /* SUB */ |
541 /**************/ |
748 /**************/ |
730 /**************/ |
937 /**************/ |
731 /* AND */ |
938 /* AND */ |
732 /**************/ |
939 /**************/ |
733 __arith_expand(AND_BOOL, BOOL, && ) /* The explicitly typed standard functions */ |
940 __arith_expand(AND_BOOL, BOOL, && ) /* The explicitly typed standard functions */ |
734 __arith_expand(AND__BOOL__BOOL, BOOL, && ) /* Overloaded function */ |
941 __arith_expand(AND__BOOL__BOOL, BOOL, && ) /* Overloaded function */ |
|
942 #define AND_BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_BOOL, __VA_ARGS__) |
|
943 #define AND__BOOL__BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__BOOL__BOOL, __VA_ARGS__) |
735 |
944 |
736 #define __iec_(TYPENAME) \ |
945 #define __iec_(TYPENAME) \ |
737 __arith_expand(AND_##TYPENAME, TYPENAME, &) /* The explicitly typed standard functions */\ |
946 __arith_expand(AND_##TYPENAME, TYPENAME, &) /* The explicitly typed standard functions */\ |
738 __arith_expand(AND__##TYPENAME##__##TYPENAME, TYPENAME, &) /* Overloaded function */ |
947 __arith_expand(AND__##TYPENAME##__##TYPENAME, TYPENAME, &) /* Overloaded function */ |
739 __ANY_NBIT(__iec_) |
948 __ANY_NBIT(__iec_) |
740 #undef __iec_ |
949 #undef __iec_ |
|
950 |
|
951 #define AND_BYTE(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_BYTE, __VA_ARGS__) |
|
952 #define AND__BYTE__BYTE(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__BYTE__BYTE, __VA_ARGS__) |
|
953 |
|
954 #define AND_WORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_WORD, __VA_ARGS__) |
|
955 #define AND__WORD__WORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__WORD__WORD, __VA_ARGS__) |
|
956 |
|
957 #define AND_DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_DWORD, __VA_ARGS__) |
|
958 #define AND__DWORD__DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__DWORD__DWORD, __VA_ARGS__) |
|
959 |
|
960 #define AND_LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND_LWORD, __VA_ARGS__) |
|
961 #define AND__LWORD__LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, AND__LWORD__LWORD, __VA_ARGS__) |
|
962 |
741 |
963 |
742 /*************/ |
964 /*************/ |
743 /* OR */ |
965 /* OR */ |
744 /*************/ |
966 /*************/ |
745 __arith_expand(OR_BOOL, BOOL, || ) /* The explicitly typed standard functions */ |
967 __arith_expand(OR_BOOL, BOOL, || ) /* The explicitly typed standard functions */ |
746 __arith_expand(OR__BOOL__BOOL, BOOL, || ) /* Overloaded function */ |
968 __arith_expand(OR__BOOL__BOOL, BOOL, || ) /* Overloaded function */ |
|
969 #define OR_BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_BOOL, __VA_ARGS__) |
|
970 #define OR__BOOL__BOOL(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__BOOL__BOOL, __VA_ARGS__) |
747 |
971 |
748 #define __iec_(TYPENAME) \ |
972 #define __iec_(TYPENAME) \ |
749 __arith_expand(OR_##TYPENAME, TYPENAME, |) /* The explicitly typed standard functions */\ |
973 __arith_expand(OR_##TYPENAME, TYPENAME, |) /* The explicitly typed standard functions */\ |
750 __arith_expand(OR__##TYPENAME##__##TYPENAME, TYPENAME, |) /* Overloaded function */ |
974 __arith_expand(OR__##TYPENAME##__##TYPENAME, TYPENAME, |) /* Overloaded function */ |
751 __ANY_NBIT(__iec_) |
975 __ANY_NBIT(__iec_) |
752 #undef __iec_ |
976 #undef __iec_ |
|
977 |
|
978 #define OR_BYTE(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_BYTE, __VA_ARGS__) |
|
979 #define OR__BYTE__BYTE(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__BYTE__BYTE, __VA_ARGS__) |
|
980 |
|
981 #define OR_WORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_WORD, __VA_ARGS__) |
|
982 #define OR__WORD__WORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__WORD__WORD, __VA_ARGS__) |
|
983 |
|
984 #define OR_DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_DWORD, __VA_ARGS__) |
|
985 #define OR__DWORD__DWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__DWORD__DWORD, __VA_ARGS__) |
|
986 |
|
987 #define OR_LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR_LWORD, __VA_ARGS__) |
|
988 #define OR__LWORD__LWORD(...) ARITH_OPERATION__TYPE__TYPE(EN_PFX, OR__LWORD__LWORD, __VA_ARGS__) |
|
989 |
753 |
990 |
754 /**************/ |
991 /**************/ |
755 /* XOR */ |
992 /* XOR */ |
756 /**************/ |
993 /**************/ |
757 #define __xorbool_expand(fname) \ |
994 #define __xorbool_expand(fname) \ |
1580 /* Do we support this? */ |
1829 /* Do we support this? */ |
1581 |
1830 |
1582 |
1831 |
1583 |
1832 |
1584 |
1833 |
1585 |
1834 /*************************************/ |
1586 |
1835 /* |
|
1836 These defines are needed to have #if-like |
|
1837 behaviour inside of macro. See macro |
|
1838 ARITH_OPERATION_COND above. |
|
1839 |
|
1840 emacs commands to generate defines below. |
|
1841 Select commands and eval-region |
|
1842 |
|
1843 (next-line) |
|
1844 (next-line) |
|
1845 (dotimes (i 200) |
|
1846 (insert |
|
1847 (format "\n#define ARITH_OPERATION_COND_%d_LE_8 %s" i (if (> i 8) "," "1")))) |
|
1848 */ |
|
1849 |
|
1850 #define ARITH_OPERATION_COND_0_LE_8 1 |
|
1851 #define ARITH_OPERATION_COND_1_LE_8 1 |
|
1852 #define ARITH_OPERATION_COND_2_LE_8 1 |
|
1853 #define ARITH_OPERATION_COND_3_LE_8 1 |
|
1854 #define ARITH_OPERATION_COND_4_LE_8 1 |
|
1855 #define ARITH_OPERATION_COND_5_LE_8 1 |
|
1856 #define ARITH_OPERATION_COND_6_LE_8 1 |
|
1857 #define ARITH_OPERATION_COND_7_LE_8 1 |
|
1858 #define ARITH_OPERATION_COND_8_LE_8 1 |
|
1859 #define ARITH_OPERATION_COND_9_LE_8 , |
|
1860 #define ARITH_OPERATION_COND_10_LE_8 , |
|
1861 #define ARITH_OPERATION_COND_11_LE_8 , |
|
1862 #define ARITH_OPERATION_COND_12_LE_8 , |
|
1863 #define ARITH_OPERATION_COND_13_LE_8 , |
|
1864 #define ARITH_OPERATION_COND_14_LE_8 , |
|
1865 #define ARITH_OPERATION_COND_15_LE_8 , |
|
1866 #define ARITH_OPERATION_COND_16_LE_8 , |
|
1867 #define ARITH_OPERATION_COND_17_LE_8 , |
|
1868 #define ARITH_OPERATION_COND_18_LE_8 , |
|
1869 #define ARITH_OPERATION_COND_19_LE_8 , |
|
1870 #define ARITH_OPERATION_COND_20_LE_8 , |
|
1871 #define ARITH_OPERATION_COND_21_LE_8 , |
|
1872 #define ARITH_OPERATION_COND_22_LE_8 , |
|
1873 #define ARITH_OPERATION_COND_23_LE_8 , |
|
1874 #define ARITH_OPERATION_COND_24_LE_8 , |
|
1875 #define ARITH_OPERATION_COND_25_LE_8 , |
|
1876 #define ARITH_OPERATION_COND_26_LE_8 , |
|
1877 #define ARITH_OPERATION_COND_27_LE_8 , |
|
1878 #define ARITH_OPERATION_COND_28_LE_8 , |
|
1879 #define ARITH_OPERATION_COND_29_LE_8 , |
|
1880 #define ARITH_OPERATION_COND_30_LE_8 , |
|
1881 #define ARITH_OPERATION_COND_31_LE_8 , |
|
1882 #define ARITH_OPERATION_COND_32_LE_8 , |
|
1883 #define ARITH_OPERATION_COND_33_LE_8 , |
|
1884 #define ARITH_OPERATION_COND_34_LE_8 , |
|
1885 #define ARITH_OPERATION_COND_35_LE_8 , |
|
1886 #define ARITH_OPERATION_COND_36_LE_8 , |
|
1887 #define ARITH_OPERATION_COND_37_LE_8 , |
|
1888 #define ARITH_OPERATION_COND_38_LE_8 , |
|
1889 #define ARITH_OPERATION_COND_39_LE_8 , |
|
1890 #define ARITH_OPERATION_COND_40_LE_8 , |
|
1891 #define ARITH_OPERATION_COND_41_LE_8 , |
|
1892 #define ARITH_OPERATION_COND_42_LE_8 , |
|
1893 #define ARITH_OPERATION_COND_43_LE_8 , |
|
1894 #define ARITH_OPERATION_COND_44_LE_8 , |
|
1895 #define ARITH_OPERATION_COND_45_LE_8 , |
|
1896 #define ARITH_OPERATION_COND_46_LE_8 , |
|
1897 #define ARITH_OPERATION_COND_47_LE_8 , |
|
1898 #define ARITH_OPERATION_COND_48_LE_8 , |
|
1899 #define ARITH_OPERATION_COND_49_LE_8 , |
|
1900 #define ARITH_OPERATION_COND_50_LE_8 , |
|
1901 #define ARITH_OPERATION_COND_51_LE_8 , |
|
1902 #define ARITH_OPERATION_COND_52_LE_8 , |
|
1903 #define ARITH_OPERATION_COND_53_LE_8 , |
|
1904 #define ARITH_OPERATION_COND_54_LE_8 , |
|
1905 #define ARITH_OPERATION_COND_55_LE_8 , |
|
1906 #define ARITH_OPERATION_COND_56_LE_8 , |
|
1907 #define ARITH_OPERATION_COND_57_LE_8 , |
|
1908 #define ARITH_OPERATION_COND_58_LE_8 , |
|
1909 #define ARITH_OPERATION_COND_59_LE_8 , |
|
1910 #define ARITH_OPERATION_COND_60_LE_8 , |
|
1911 #define ARITH_OPERATION_COND_61_LE_8 , |
|
1912 #define ARITH_OPERATION_COND_62_LE_8 , |
|
1913 #define ARITH_OPERATION_COND_63_LE_8 , |
|
1914 #define ARITH_OPERATION_COND_64_LE_8 , |
|
1915 #define ARITH_OPERATION_COND_65_LE_8 , |
|
1916 #define ARITH_OPERATION_COND_66_LE_8 , |
|
1917 #define ARITH_OPERATION_COND_67_LE_8 , |
|
1918 #define ARITH_OPERATION_COND_68_LE_8 , |
|
1919 #define ARITH_OPERATION_COND_69_LE_8 , |
|
1920 #define ARITH_OPERATION_COND_70_LE_8 , |
|
1921 #define ARITH_OPERATION_COND_71_LE_8 , |
|
1922 #define ARITH_OPERATION_COND_72_LE_8 , |
|
1923 #define ARITH_OPERATION_COND_73_LE_8 , |
|
1924 #define ARITH_OPERATION_COND_74_LE_8 , |
|
1925 #define ARITH_OPERATION_COND_75_LE_8 , |
|
1926 #define ARITH_OPERATION_COND_76_LE_8 , |
|
1927 #define ARITH_OPERATION_COND_77_LE_8 , |
|
1928 #define ARITH_OPERATION_COND_78_LE_8 , |
|
1929 #define ARITH_OPERATION_COND_79_LE_8 , |
|
1930 #define ARITH_OPERATION_COND_80_LE_8 , |
|
1931 #define ARITH_OPERATION_COND_81_LE_8 , |
|
1932 #define ARITH_OPERATION_COND_82_LE_8 , |
|
1933 #define ARITH_OPERATION_COND_83_LE_8 , |
|
1934 #define ARITH_OPERATION_COND_84_LE_8 , |
|
1935 #define ARITH_OPERATION_COND_85_LE_8 , |
|
1936 #define ARITH_OPERATION_COND_86_LE_8 , |
|
1937 #define ARITH_OPERATION_COND_87_LE_8 , |
|
1938 #define ARITH_OPERATION_COND_88_LE_8 , |
|
1939 #define ARITH_OPERATION_COND_89_LE_8 , |
|
1940 #define ARITH_OPERATION_COND_90_LE_8 , |
|
1941 #define ARITH_OPERATION_COND_91_LE_8 , |
|
1942 #define ARITH_OPERATION_COND_92_LE_8 , |
|
1943 #define ARITH_OPERATION_COND_93_LE_8 , |
|
1944 #define ARITH_OPERATION_COND_94_LE_8 , |
|
1945 #define ARITH_OPERATION_COND_95_LE_8 , |
|
1946 #define ARITH_OPERATION_COND_96_LE_8 , |
|
1947 #define ARITH_OPERATION_COND_97_LE_8 , |
|
1948 #define ARITH_OPERATION_COND_98_LE_8 , |
|
1949 #define ARITH_OPERATION_COND_99_LE_8 , |
|
1950 #define ARITH_OPERATION_COND_100_LE_8 , |
|
1951 #define ARITH_OPERATION_COND_101_LE_8 , |
|
1952 #define ARITH_OPERATION_COND_102_LE_8 , |
|
1953 #define ARITH_OPERATION_COND_103_LE_8 , |
|
1954 #define ARITH_OPERATION_COND_104_LE_8 , |
|
1955 #define ARITH_OPERATION_COND_105_LE_8 , |
|
1956 #define ARITH_OPERATION_COND_106_LE_8 , |
|
1957 #define ARITH_OPERATION_COND_107_LE_8 , |
|
1958 #define ARITH_OPERATION_COND_108_LE_8 , |
|
1959 #define ARITH_OPERATION_COND_109_LE_8 , |
|
1960 #define ARITH_OPERATION_COND_110_LE_8 , |
|
1961 #define ARITH_OPERATION_COND_111_LE_8 , |
|
1962 #define ARITH_OPERATION_COND_112_LE_8 , |
|
1963 #define ARITH_OPERATION_COND_113_LE_8 , |
|
1964 #define ARITH_OPERATION_COND_114_LE_8 , |
|
1965 #define ARITH_OPERATION_COND_115_LE_8 , |
|
1966 #define ARITH_OPERATION_COND_116_LE_8 , |
|
1967 #define ARITH_OPERATION_COND_117_LE_8 , |
|
1968 #define ARITH_OPERATION_COND_118_LE_8 , |
|
1969 #define ARITH_OPERATION_COND_119_LE_8 , |
|
1970 #define ARITH_OPERATION_COND_120_LE_8 , |
|
1971 #define ARITH_OPERATION_COND_121_LE_8 , |
|
1972 #define ARITH_OPERATION_COND_122_LE_8 , |
|
1973 #define ARITH_OPERATION_COND_123_LE_8 , |
|
1974 #define ARITH_OPERATION_COND_124_LE_8 , |
|
1975 #define ARITH_OPERATION_COND_125_LE_8 , |
|
1976 #define ARITH_OPERATION_COND_126_LE_8 , |
|
1977 #define ARITH_OPERATION_COND_127_LE_8 , |
|
1978 #define ARITH_OPERATION_COND_128_LE_8 , |
|
1979 #define ARITH_OPERATION_COND_129_LE_8 , |
|
1980 #define ARITH_OPERATION_COND_130_LE_8 , |
|
1981 #define ARITH_OPERATION_COND_131_LE_8 , |
|
1982 #define ARITH_OPERATION_COND_132_LE_8 , |
|
1983 #define ARITH_OPERATION_COND_133_LE_8 , |
|
1984 #define ARITH_OPERATION_COND_134_LE_8 , |
|
1985 #define ARITH_OPERATION_COND_135_LE_8 , |
|
1986 #define ARITH_OPERATION_COND_136_LE_8 , |
|
1987 #define ARITH_OPERATION_COND_137_LE_8 , |
|
1988 #define ARITH_OPERATION_COND_138_LE_8 , |
|
1989 #define ARITH_OPERATION_COND_139_LE_8 , |
|
1990 #define ARITH_OPERATION_COND_140_LE_8 , |
|
1991 #define ARITH_OPERATION_COND_141_LE_8 , |
|
1992 #define ARITH_OPERATION_COND_142_LE_8 , |
|
1993 #define ARITH_OPERATION_COND_143_LE_8 , |
|
1994 #define ARITH_OPERATION_COND_144_LE_8 , |
|
1995 #define ARITH_OPERATION_COND_145_LE_8 , |
|
1996 #define ARITH_OPERATION_COND_146_LE_8 , |
|
1997 #define ARITH_OPERATION_COND_147_LE_8 , |
|
1998 #define ARITH_OPERATION_COND_148_LE_8 , |
|
1999 #define ARITH_OPERATION_COND_149_LE_8 , |
|
2000 #define ARITH_OPERATION_COND_150_LE_8 , |
|
2001 #define ARITH_OPERATION_COND_151_LE_8 , |
|
2002 #define ARITH_OPERATION_COND_152_LE_8 , |
|
2003 #define ARITH_OPERATION_COND_153_LE_8 , |
|
2004 #define ARITH_OPERATION_COND_154_LE_8 , |
|
2005 #define ARITH_OPERATION_COND_155_LE_8 , |
|
2006 #define ARITH_OPERATION_COND_156_LE_8 , |
|
2007 #define ARITH_OPERATION_COND_157_LE_8 , |
|
2008 #define ARITH_OPERATION_COND_158_LE_8 , |
|
2009 #define ARITH_OPERATION_COND_159_LE_8 , |
|
2010 #define ARITH_OPERATION_COND_160_LE_8 , |
|
2011 #define ARITH_OPERATION_COND_161_LE_8 , |
|
2012 #define ARITH_OPERATION_COND_162_LE_8 , |
|
2013 #define ARITH_OPERATION_COND_163_LE_8 , |
|
2014 #define ARITH_OPERATION_COND_164_LE_8 , |
|
2015 #define ARITH_OPERATION_COND_165_LE_8 , |
|
2016 #define ARITH_OPERATION_COND_166_LE_8 , |
|
2017 #define ARITH_OPERATION_COND_167_LE_8 , |
|
2018 #define ARITH_OPERATION_COND_168_LE_8 , |
|
2019 #define ARITH_OPERATION_COND_169_LE_8 , |
|
2020 #define ARITH_OPERATION_COND_170_LE_8 , |
|
2021 #define ARITH_OPERATION_COND_171_LE_8 , |
|
2022 #define ARITH_OPERATION_COND_172_LE_8 , |
|
2023 #define ARITH_OPERATION_COND_173_LE_8 , |
|
2024 #define ARITH_OPERATION_COND_174_LE_8 , |
|
2025 #define ARITH_OPERATION_COND_175_LE_8 , |
|
2026 #define ARITH_OPERATION_COND_176_LE_8 , |
|
2027 #define ARITH_OPERATION_COND_177_LE_8 , |
|
2028 #define ARITH_OPERATION_COND_178_LE_8 , |
|
2029 #define ARITH_OPERATION_COND_179_LE_8 , |
|
2030 #define ARITH_OPERATION_COND_180_LE_8 , |
|
2031 #define ARITH_OPERATION_COND_181_LE_8 , |
|
2032 #define ARITH_OPERATION_COND_182_LE_8 , |
|
2033 #define ARITH_OPERATION_COND_183_LE_8 , |
|
2034 #define ARITH_OPERATION_COND_184_LE_8 , |
|
2035 #define ARITH_OPERATION_COND_185_LE_8 , |
|
2036 #define ARITH_OPERATION_COND_186_LE_8 , |
|
2037 #define ARITH_OPERATION_COND_187_LE_8 , |
|
2038 #define ARITH_OPERATION_COND_188_LE_8 , |
|
2039 #define ARITH_OPERATION_COND_189_LE_8 , |
|
2040 #define ARITH_OPERATION_COND_190_LE_8 , |
|
2041 #define ARITH_OPERATION_COND_191_LE_8 , |
|
2042 #define ARITH_OPERATION_COND_192_LE_8 , |
|
2043 #define ARITH_OPERATION_COND_193_LE_8 , |
|
2044 #define ARITH_OPERATION_COND_194_LE_8 , |
|
2045 #define ARITH_OPERATION_COND_195_LE_8 , |
|
2046 #define ARITH_OPERATION_COND_196_LE_8 , |
|
2047 #define ARITH_OPERATION_COND_197_LE_8 , |
|
2048 #define ARITH_OPERATION_COND_198_LE_8 , |
|
2049 #define ARITH_OPERATION_COND_199_LE_8 , |
1587 |
2050 |
1588 |
2051 |
1589 #endif /* _IEC_STD_FUNCTIONS_H */ |
2052 #endif /* _IEC_STD_FUNCTIONS_H */ |