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
| Syntax |
c = a igf b |
| 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
| Syntax |
c = a igt b |
| 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
| Syntax |
c = a nl 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 |
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
| Syntax |
c = a xl 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 |
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
| Syntax |
c = a xr 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 |
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.