(no commit message)
[libreriscv.git] / openpower / sv / bmask.py
index f64708bce54c8baffd11b631f38af31403b58237..391b279ce7cf9511d0d3618e41193f0128e52b73 100644 (file)
@@ -11,14 +11,15 @@ def bmask(bm, RA, RB=None, zero=False, XLEN=64):
     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