------------------- vsm --------------------
imm i"3" $s1 # $s1: 3
ilsl $peid $aluf $nowrite # $peid << 3
ior $peid $aluf $t # $t = $peid << 3 | $peid
imm i"0b111000111" $nowrite
iand $t $aluf $t # $t = ($peid << 3)[8:6] | $peid[2:0]
ilsl $l1bid $s1 $nowrite # $l1bid << 3
ior $t $aluf $nowrite # index = ($peid << 3)[9:6] | $l1bid << 3 | $peid[2:0]
iadd $aluf $aluf $nowrite
iinc $aluf $r0v # index = index * 2 + 1
#
ilnot $l2bid $omr1 # $omr1: true if l2b1
iinc $r1 $r1 # $r1++
imm i"512" $lr0v/$imr1 # l2b1:: $lr0v = 512
#
nop
l1bmd $lr0v $lb0
nop/2
l2bmd $lb0 $lc0
#
# l2bm layout before mvr2iiadd
# l2bm0 [0..N-1] solution, [N..2N-1] [2N..3N-1] additional value
# l2bm1 [0..N-1] [N..2N-1] [2N..3N-1] additional value
# dram layout after mvr2iiadd
# dram [0..N-1] previous solution, [N..2N-1] updated solution [2N..3N-1] [3N..4N-1] updated additional value