; bitwise logical equivalence
[cxorand16]
-((.1 ^ _2) & _2)->((~16 .1) & _2)
-((_2 ^ .1) & _2)->((~16 .1) & _2)
-((.1 & _2) ^ _2)->((~16 .1) & _2)
-((_2 & .1) ^ _2)->((~16 .1) & _2)
-(_2 ^ (.1 & _2))->((~16 .1) & _2)
-(_2 ^ (_2 & .1))->((~16 .1) & _2)
-(_2 & (.1 ^ _2))->((~16 .1) & _2)
-(_2 & (_2 ^ .1))->((~16 .1) & _2)
+((.1 ^ .2) & .2)->((~16 .1) & .2)
+((.2 ^ .1) & .2)->((~16 .1) & .2)
+((.1 & .2) ^ .2)->((~16 .1) & .2)
+((.2 & .1) ^ .2)->((~16 .1) & .2)
+(.2 ^ (.1 & .2))->((~16 .1) & .2)
+(.2 ^ (.2 & .1))->((~16 .1) & .2)
+(.2 & (.1 ^ .2))->((~16 .1) & .2)
+(.2 & (.2 ^ .1))->((~16 .1) & .2)
+[cxorandmixed]
+; This requires typecasting .1 to 32 bits.
+((.1 ^ :2) & :2)->((~32 .1) & :2)
+((:2 ^ .1) & :2)->((~32 .1) & :2)
+((.1 & :2) ^ :2)->((~32 .1) & :2)
+((:2 & .1) ^ :2)->((~32 .1) & :2)
+(:2 ^ (.1 & :2))->((~32 .1) & :2)
+(:2 ^ (:2 & .1))->((~32 .1) & :2)
+(:2 & (.1 ^ :2))->((~32 .1) & :2)
+(:2 & (:2 ^ .1))->((~32 .1) & :2)
[cxorand32]
((:1 ^ _2) & _2)->((~32 _1) & _2)
((_2 ^ :1) & _2)->((~32 _1) & _2)
; Move rshift, AND out of neg
[rshiftoutofneg]
-(~16 (.1 >> #{1}2))->(((~16 .1) >> _2) | #32768)
-(~32 (:1 >> #{1}2))->(((~32 :1) >> _2) | #2147483648)
+(~16 (.1 >> #1))->(((~16 .1) >> #1) | #32768)
+(~32 (:1 >> #1))->(((~32 :1) >> #1) | #2147483648)
[andoutofneg]
(~16 (.1 & #{1}2))->(((~16 .1) & _2) | #{(~x2)&65535}0)
(~32 (:1 & #{1}2))->(((~32 :1) & _2) | #{~x2}0)