Author: kib
Date: Wed Jun  7 11:42:43 2017
New Revision: 319652
URL: https://svnweb.freebsd.org/changeset/base/319652

Log:
  MFC r318781:
  Add BIT_OR2(), BIT_AND2(), BIT_NAND2(), BIT_XOR() and BIT_XOR2().

Modified:
  stable/10/sys/sys/bitset.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/sys/bitset.h
==============================================================================
--- stable/10/sys/sys/bitset.h  Wed Jun  7 11:39:52 2017        (r319651)
+++ stable/10/sys/sys/bitset.h  Wed Jun  7 11:42:43 2017        (r319652)
@@ -115,16 +115,46 @@
                (d)->__bits[__i] |= (s)->__bits[__i];                   \
 } while (0)
 
+#define        BIT_OR2(_s, d, s1, s2) do {                                     
\
+       __size_t __i;                                                   \
+       for (__i = 0; __i < __bitset_words((_s)); __i++)                \
+               (d)->__bits[__i] = (s1)->__bits[__i] | (s2)->__bits[__i];\
+} while (0)
+
 #define        BIT_AND(_s, d, s) do {                                          
\
        __size_t __i;                                                   \
        for (__i = 0; __i < __bitset_words((_s)); __i++)                \
                (d)->__bits[__i] &= (s)->__bits[__i];                   \
 } while (0)
 
+#define        BIT_AND2(_s, d, s1, s2) do {                                    
\
+       __size_t __i;                                                   \
+       for (__i = 0; __i < __bitset_words((_s)); __i++)                \
+               (d)->__bits[__i] = (s1)->__bits[__i] & (s2)->__bits[__i];\
+} while (0)
+
 #define        BIT_NAND(_s, d, s) do {                                         
\
        __size_t __i;                                                   \
        for (__i = 0; __i < __bitset_words((_s)); __i++)                \
                (d)->__bits[__i] &= ~(s)->__bits[__i];                  \
+} while (0)
+
+#define        BIT_NAND2(_s, d, s1, s2) do {                                   
\
+       __size_t __i;                                                   \
+       for (__i = 0; __i < __bitset_words((_s)); __i++)                \
+               (d)->__bits[__i] = (s1)->__bits[__i] & ~(s2)->__bits[__i];\
+} while (0)
+
+#define        BIT_XOR(_s, d, s) do {                                          
\
+       __size_t __i;                                                   \
+       for (__i = 0; __i < __bitset_words((_s)); __i++)                \
+               (d)->__bits[__i] ^= (s)->__bits[__i];                   \
+} while (0)
+
+#define        BIT_XOR2(_s, d, s1, s2) do {                                    
\
+       __size_t __i;                                                   \
+       for (__i = 0; __i < __bitset_words((_s)); __i++)                \
+               (d)->__bits[__i] = (s1)->__bits[__i] ^ (s2)->__bits[__i];\
 } while (0)
 
 #define        BIT_CLR_ATOMIC(_s, n, p)                                        
\
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to