Bitwise boolean instructions
Opcode |
P/U |
Category |
Description |
AND |
user |
ALU: boolean |
AND |
IGF |
user |
ALU: boolean |
ignorant false |
IGT |
user |
ALU: boolean |
ignorant true |
LANR |
user |
ALU: boolean |
left AND NOT right |
LONR |
user |
ALU: boolean |
left OR NOT right |
NAND |
user |
ALU: boolean |
NAND |
NL |
user |
ALU: boolean |
NOT left |
NOR |
user |
ALU: boolean |
NOR |
NR |
user |
ALU: boolean |
NOT right |
OR |
user |
ALU: boolean |
OR |
RANL |
user |
ALU: boolean |
right AND NOT left |
RONL |
user |
ALU: boolean |
right OR NOT left |
XL |
user |
ALU: boolean |
exactly left |
XNOR |
user |
ALU: boolean |
exclusive NOR |
XOR |
user |
ALU: boolean |
exclusive OR |
XR |
user |
ALU: boolean |
exactly right |
All 16 bitwise boolean operations use exactly the same flag semantics, namely, N
and Z
are set as if the destination is a signed register. T
and R
do not change.
AND
AND
Syntax options |
c = a and b |
c = a & b |
c = !a !| !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
AND
sets the destination to the bitwise AND of its operands. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
IGF
Ignorant false
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
always cleared |
Z |
always set |
T |
flag does not change |
R |
flag does not change |
IGF
sets the destination to all zeros, clears N
, and sets Z
. T
and R
do not change.
IGT
Ignorant true
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
always set |
Z |
always cleared |
T |
flag does not change |
R |
flag does not change |
IGT
sets the destination to all ones, sets N
, and clears Z
. T
and R
do not change.
LANR
Left and not right
Syntax options |
c = a lanr b |
c = a & !b |
c = !a !| b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
LANR
sets the destination to the bitwise AND of the left operand with the bitwise complement of the right operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
LONR
Left or not right
Syntax options |
c = a lonr b |
c = a | !b |
c = !a !& b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
LONR
sets the destination to the bitwise OR of the left operand with the bitwise complement of the right operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
NAND
NAND
Syntax options |
c = a nand b |
c = a !& b |
c = !a | !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
NAND
sets the destination to the bitwise NAND of its operands. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
NL
Not left
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
NL
sets the destination to the bitwise NOT of the left operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
NOR
NOR
Syntax options |
c = a nor b |
c = a !| b |
c = !a & !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
NOR
sets the destination to the bitwise NOR of its operands. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
NR
Not right
Syntax options |
c = a nr b |
c = not b |
c = !b |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
NR
sets the destination to the bitwise NOT of the right operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
OR
OR
Syntax options |
c = a or b |
c = a | b |
c = !a !& !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
OR
sets the destination to the bitwise OR of its operands. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
RANL
Right and not left
Syntax options |
c = a ranl b |
c = !a & b |
c = a !| !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
RANL
sets the destination to the bitwise AND of the right operand with the bitwise complement of the left operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
RONL
Right or not left
Syntax options |
c = a ronl b |
c = !a | b |
c = a !& !b (De Morgan’s theorem) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
RONL
sets the destination to the bitwise OR of the right operand with the bitwise complement of the left operand. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
XL
Exactly left
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
XL
copies the left operand to the destination. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
XNOR
Exclusive NOR
Syntax options |
c = a xnor b |
c = a !^ b |
c = a ^ !b (by negation) |
c = !a ^ b (by negation) |
c = !a !^ !b (by negation) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
XNOR
sets the destination to the bitwise XNOR of its operands (the opposite of XOR
). N
and Z
are set as if the destination is a signed register. T
and R
do not change.
XOR
Exclusive OR
Syntax options |
c = a xor b |
c = a ^ b |
c = a !^ !b (by negation) |
c = !a !^ b (by negation) |
c = !a ^ !b (by negation) |
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
XOR
sets the destination to the bitwise XOR of its operands. N
and Z
are set as if the destination is a signed register. T
and R
do not change.
XR
Exactly right
Register |
Signedness |
All |
ignored |
|
1 opcode only |
Flag |
Set if and only if |
N |
bit 35 of the result is set |
Z |
all result bits are zero |
T |
flag does not change |
R |
flag does not change |
XR
copies the right operand to the destination. N
and Z
are set as if the destination is a signed register. T
and R
do not change.