+;;;; cross-compile-time-only replacements for BOOLE machinery.
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; This software is derived from the CMU CL system, which was
+;;;; written at Carnegie Mellon University and released into the
+;;;; public domain. The software is in the public domain and is
+;;;; provided with absolutely no warranty. See the COPYING and CREDITS
+;;;; files for more information.
+
+(in-package "SB!INT")
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+ (defconstant sb!xc:boole-clr 0)
+ (defconstant sb!xc:boole-set 1)
+ (defconstant sb!xc:boole-1 2)
+ (defconstant sb!xc:boole-2 3)
+ (defconstant sb!xc:boole-c1 4)
+ (defconstant sb!xc:boole-c2 5)
+ (defconstant sb!xc:boole-and 6)
+ (defconstant sb!xc:boole-ior 7)
+ (defconstant sb!xc:boole-xor 8)
+ (defconstant sb!xc:boole-eqv 9)
+ (defconstant sb!xc:boole-nand 10)
+ (defconstant sb!xc:boole-nor 11)
+ (defconstant sb!xc:boole-andc1 12)
+ (defconstant sb!xc:boole-andc2 13)
+ (defconstant sb!xc:boole-orc1 14)
+ (defconstant sb!xc:boole-orc2 15))
+
+(defun sb!xc:boole (boole num1 num2)
+ (cl:boole (uncross-boole boole) num1 num2))
+
+(defun uncross-boole (boole)
+ (case boole
+ (#.sb!xc:boole-clr cl:boole-clr)
+ (#.sb!xc:boole-set cl:boole-set)
+ (#.sb!xc:boole-1 cl:boole-1)
+ (#.sb!xc:boole-2 cl:boole-2)
+ (#.sb!xc:boole-c1 cl:boole-c1)
+ (#.sb!xc:boole-c2 cl:boole-c2)
+ (#.sb!xc:boole-and cl:boole-and)
+ (#.sb!xc:boole-ior cl:boole-ior)
+ (#.sb!xc:boole-xor cl:boole-xor)
+ (#.sb!xc:boole-eqv cl:boole-eqv)
+ (#.sb!xc:boole-nand cl:boole-nand)
+ (#.sb!xc:boole-nor cl:boole-nor)
+ (#.sb!xc:boole-andc1 cl:boole-andc1)
+ (#.sb!xc:boole-andc2 cl:boole-andc2)
+ (#.sb!xc:boole-orc1 cl:boole-orc1)
+ (#.sb!xc:boole-orc2 cl:boole-orc2)))