Special Registers Altered:
 
     CR0                    (if Rc=1)
+
+# DRAFT bmask (don't know full name)
+ 
+BM2-Form
+ 
+* bmask  RT,RA,RB,mode
+
+Pseudo-code:
+
+    if _RB = 0 then mask <- [1] * XLEN else mask = (RB)
+    a1 <- (RA) & mask
+    if mode[1] then a1 <- ¬ra
+    mode2 <- mode[2:3]
+    if mode2 = 0 then a2 <- (¬ra)+1
+    if mode2 = 1 then a2 <- ra-1
+    if mode2 = 2 then a2 <- ra+1
+    if mode2 = 3 then a2 <- ¬(ra+1)
+    a1 <- a1 & mask
+    a2 <- a2 & mask
+    # select operator
+    mode3 <- mode[3:4]
+    if mode3 = 0 then result <- a1 | a2
+    if mode3 = 1 then result <- a1 & a2
+    if mode3 = 2 then result <- a1 ^ a2
+    if mode3 = 3 then result <- UNDEFINED
+    result <- result & mask
+    # optionally restore masked-out bits
+    if L = 1 then
+        result <- result | (RA & ¬mask)
+    RT <- result
 
 0111110110-,ALU,OP_ABSADD,RA,RB,RT,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,absdacs,X,,1,unofficial until submitted and approved/renumbered by the opf isa wg
 # Vector bitmanip
 0110001110-,ALU,OP_CPROP,RA,RB,NONE,RT,NONE,CR0,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,cprop,X,,1,unofficial until submitted and approved/renumbered by the opf isa wg
+------10001,ALU,OP_BMASK,RA,RB,NONE,RT,NONE,NONE,0,0,ZERO,0,NONE,0,0,0,0,0,0,RC,0,0,cprop,BM2,,1,unofficial until submitted and approved/renumbered by the opf isa wg
 
         # they can - if implementations then choose - be Vectorised
         # (sv.fsins) because they are general-purpose scalar instructions
 
+        # 1.6.2.1 BM-FORM
+        #   |0     |6    |10  |15  |22  |23    |31|
+        #   | PO   |  RS | me | sh | me |   XO |Rc|
+        if opcode == ('bmask'):
+            fields = list(map(int, fields))
+            insn = 59 << (31-5)  # opcode 59, bits 0-5
+            insn |= fields[0] << (31-10)  # RT       , bits 6-10
+            insn |= fields[1] << (31-20)  # RB       , bits 16-20
+            insn |= 0b1000001110 << (31-30)  # XO       , bits 21..30
+            log("fsins", bin(insn))
+            yield ".long 0x%x" % insn
+            return
+
+
         # and fsins
         # XXX WARNING THESE ARE NOT APPROVED BY OPF ISA WG
         # however we are out of space with opcode 22