a1 = a1 & mask
a2 = a2 & mask
mode3 = (bm >> 3) & 0b11
- if mode3 == 0: RT = a1 | a2
- if mode3 == 1: RT = a1 & a2
- if mode3 == 2: RT = a1 ^ a2
- if mode3 == 3: RT = 0 # UNDEFINED
- RT &= mask
+ if mode3 == 0: RS = a1 | a2
+ if mode3 == 1: RS = a1 & a2
+ if mode3 == 2: RS = a1 ^ a2
+ if mode3 == 3: RS = 0 # RESERVED
+ RS &= mask
if not zero:
- RT |= RA & ~mask
- return RT
+ # put back masked-out bits of RA
+ RS |= RA & ~mask
+ return RS
SBF = 0b01010 # set before first
SOF = 0b01001 # set only first