1 def sof(RA
, mask
=None, zero
=False):
2 RT
= RA
if mask
is not None and not zero
else 0
4 # start setting if no predicate or if 1st predicate bit set
5 setting_mode
= mask
is None
9 if not setting_mode
and mask
is not None and (mask
& bit
):
10 setting_mode
= True # back into "setting" mode
11 found
= False # start finding first
13 if mask
is not None and not (mask
& bit
):
15 elif RA
& bit
and not found
: # found a bit: set if not found
17 found
= True # don't set another bit
21 if __name__
== '__main__':
23 v3
= 0b11010100 # vmsof.m v2, v3
26 print(bin(v3
), bin(v2
), bin(RT
))
27 v3
= 0b10010100 # vmsof.m v2, v3
28 v2
= 0b00000100 # v2 contents
30 print(bin(v3
), bin(v2
), bin(RT
))
31 v3
= 0b10010101 # vmsof.m v2, v3
34 print(bin(v3
), bin(v2
), bin(RT
))
35 v3
= 0b00000000 # vmsof.m v2, v3
38 print(bin(v3
), bin(v2
), bin(RT
))