chiark / gitweb /
rand/rand-x86ish.S: Hoist argument register allocation outside.
[catacomb] / math / bitops.h
1 /* -*-c-*-
2  *
3  * Bit operations by truth table
4  *
5  * (c) 2002 Straylight/Edgeware
6  */
7
8 /*----- Licensing notice --------------------------------------------------*
9  *
10  * This file is part of Catacomb.
11  *
12  * Catacomb is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU Library General Public License as
14  * published by the Free Software Foundation; either version 2 of the
15  * License, or (at your option) any later version.
16  *
17  * Catacomb is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU Library General Public License for more details.
21  *
22  * You should have received a copy of the GNU Library General Public
23  * License along with Catacomb; if not, write to the Free
24  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
25  * MA 02111-1307, USA.
26  */
27
28 #ifndef CATACOMB_BITOPS_H
29 #define CATACOMB_BITOPS_H
30
31 #ifdef __cplusplus
32   extern "C" {
33 #endif
34
35 /*----- Macros ------------------------------------------------------------*/
36
37 #define B0000(x, y) (0u)
38 #define B0001(x, y) ((x) & (y))
39 #define B0010(x, y) ((x) & ~(y))
40 #define B0011(x, y) (x)
41 #define B0100(x, y) (~(x) & (y))
42 #define B0101(x, y) (y)
43 #define B0110(x, y) ((x) ^ (y))
44 #define B0111(x, y) ((x) | (y))
45 #define B1000(x, y) (~((x) | (y)))
46 #define B1001(x, y) (~((x) ^ (y)))
47 #define B1010(x, y) (~(y))
48 #define B1011(x, y) ((x) | ~(y))
49 #define B1100(x, y) (~(x))
50 #define B1101(x, y) (~(x) | (y))
51 #define B1110(x, y) (~((x) & (y)))
52 #define B1111(x, y) (~0u)
53
54 /*----- That's all, folks -------------------------------------------------*/
55
56 #ifdef __cplusplus
57   }
58 #endif
59
60 #endif