Pseudoinstructions: logical
Instruction Real instructions Semantics
not $rd, $rs addi    $at, $0, -1 # R[1] = -1
xor     $rd, $rs, $at # R[d] = R[s] ^ R[1]
Better way:
not $rd, $rs nor $rd, $rs, $0 # R[d] = ~R[s]
Why does this work?
a b a | b ~(a|b) ~(0|b) ~b
0 0 0 1 1 1
0 1 1 0 0 0
1 0 1 0
1 1 1 0