Enhanced (or more complete Blackfin feature inheritage) version of the pi32 architecture.
macc
register, as now any pair of two consecutive registers (e.g. r0_r1
, r2_r3
, etc.) can be used as a 64-bit register instead.ins1 || ins2
but there it’s ins1 # ins2
insteadcmp
instruction is now gone.tst
instruction is also gone.ie0
and ie1
SFRs were removed, as this was moved into the memory-mapped SFR section instead.sp
register that was previously mapped on r15
was moved into its own SFR, thus freeing the r15
register for general purpose.16 general purpose registers, r0
through r15
.
Any pair of two consecutive registers can be used to form a single 64-bit register (e.g. r0_r1
or r2_r3
),
which eliminated need for a dedicated macc
register to store 64-bit operations (as the name implies, primarily the multiply-accumulate ones)
Number | Name | Description |
---|---|---|
sr0 | reti | Interrupt return address |
sr1 | rete | Emulation return address |
sr2 | retx | eXception return address |
sr3 | rets | Subroutine return address |
sr4 | ||
sr5 | psr | Processor status register |
sr6 | cnum | |
sr7 | ||
sr8 | ||
sr9 | ||
sr10 | ||
sr11 | icfg | Interrupt config |
sr12 | usp | User mode stack pointer |
sr13 | ssp | Supervisor mode stack pointer |
sr14 | sp | Stack pointer |
sr15 | pc | Program counter |
0000000000000000 nop
0000000000000001 idle
0000000000000010 bkpt
0000000000000011 hbkpt
0000000000100000 csync
0000000000100001 syscall
00000000001---10 ssync
00000000001---11 btbclr
0000000001000000 lockclr
0000000001000001 lockset
0000000001100000 cli
0000000001100001 sti
0000000010000000 rts
0000000010000001 rti
0000000010000010 rtx
0000000010000011 rte
000000001010-Xxx swi `Xxx`
000000001011Xxxx testset b[r`Xxxx`]
000000001100Xxxx call r`Xxxx`
000000001101Xxxx goto r`Xxxx`
000000001110Xxxx cli r`Xxxx`
000000001111Xxxx sti r`Xxxx`
000000010000Xxxx tbb r`Xxxx`
000000010001Xxxx tbh r`Xxxx`
000000100000Xxxx pfetch [r`Xxxx`]
000000100001Xxxx iflush [r`Xxxx`]
000000100010Xxxx flush [r`Xxxx`]
000000100011Xxxx flushinv [r`Xxxx`]
00000011YyyyXxxx rep `Yyyy0`<+2>, r`Xxxx` { <`Yyyy`+1 instruction words > }
0000010000000000 pc = [sp++]
0000010000010000 [--sp] = rets
0000010000110000 {rets, r3-r0} = [sp++]
0000010000110001 {rets, r3-r1} = [sp++]
0000010000110010 {rets, r3, r2} = [sp++]
0000010000110011 {rets, r3} = [sp++]
0000010000110100 {rets, r4} = [sp++]
0000010000110101 {rets, r5, r4} = [sp++]
0000010000110110 {rets, r6-r4} = [sp++]
0000010000110111 {rets, r7-r4} = [sp++]
0000010000111000 {rets, r8-r4} = [sp++]
0000010000111001 {rets, r9-r4} = [sp++]
0000010000111010 {rets, r10-r4} = [sp++]
0000010000111011 {rets, r11-r4} = [sp++]
0000010000111100 {rets, r12-r4} = [sp++]
0000010000111101 {rets, r13-r4} = [sp++]
0000010000111110 {rets, r14-r4} = [sp++]
0000010000111111 {rets, r15-r4} = [sp++]
0000010001000000 {r3-r0} = [sp++]
0000010001000001 {r3-r1} = [sp++]
0000010001000010 {r3, r2} = [sp++]
0000010001000011 {r3} = [sp++]
0000010001000100 {r4} = [sp++]
0000010001000101 {r5, r4} = [sp++]
0000010001000110 {r6-r4} = [sp++]
0000010001000111 {r7-r4} = [sp++]
0000010001001000 {r8-r4} = [sp++]
0000010001001001 {r9-r4} = [sp++]
0000010001001010 {r10-r4} = [sp++]
0000010001001011 {r11-r4} = [sp++]
0000010001001100 {r12-r4} = [sp++]
0000010001001101 {r13-r4} = [sp++]
0000010001001110 {r14-r4} = [sp++]
0000010001001111 {r15-r4} = [sp++]
0000010001010000 {pc, r3-r0} = [sp++]
0000010001010001 {pc, r3-r1} = [sp++]
0000010001010010 {pc, r3, r2} = [sp++]
0000010001010011 {pc, r3} = [sp++]
0000010001010100 {pc, r4} = [sp++]
0000010001010101 {pc, r5, r4} = [sp++]
0000010001010110 {pc, r6-r4} = [sp++]
0000010001010111 {pc, r7-r4} = [sp++]
0000010001011000 {pc, r8-r4} = [sp++]
0000010001011001 {pc, r9-r4} = [sp++]
0000010001011010 {pc, r10-r4} = [sp++]
0000010001011011 {pc, r11-r4} = [sp++]
0000010001011100 {pc, r12-r4} = [sp++]
0000010001011101 {pc, r13-r4} = [sp++]
0000010001011110 {pc, r14-r4} = [sp++]
0000010001011111 {pc, r15-r4} = [sp++]
0000010001100000 [--sp] = {rets, r3-r0}
0000010001100001 [--sp] = {rets, r3-r1}
0000010001100010 [--sp] = {rets, r3, r2}
0000010001100011 [--sp] = {rets, r3}
0000010001100100 [--sp] = {rets, r4}
0000010001100101 [--sp] = {rets, r5, r4}
0000010001100110 [--sp] = {rets, r6-r4}
0000010001100111 [--sp] = {rets, r7-r4}
0000010001101000 [--sp] = {rets, r8-r4}
0000010001101001 [--sp] = {rets, r9-r4}
0000010001101010 [--sp] = {rets, r10-r4}
0000010001101011 [--sp] = {rets, r11-r4}
0000010001101100 [--sp] = {rets, r12-r4}
0000010001101101 [--sp] = {rets, r13-r4}
0000010001101110 [--sp] = {rets, r14-r4}
0000010001101111 [--sp] = {rets, r15-r4}
0000010001110000 [--sp] = {r3-r0}
0000010001110001 [--sp] = {r3-r1}
0000010001110010 [--sp] = {r3, r2}
0000010001110011 [--sp] = {r3}
0000010001110100 [--sp] = {r4}
0000010001110101 [--sp] = {r5, r4}
0000010001110110 [--sp] = {r6-r4}
0000010001110111 [--sp] = {r7-r4}
0000010001111000 [--sp] = {r8-r4}
0000010001111001 [--sp] = {r9-r4}
0000010001111010 [--sp] = {r10-r4}
0000010001111011 [--sp] = {r11-r4}
0000010001111100 [--sp] = {r12-r4}
0000010001111101 [--sp] = {r13-r4}
0000010001111110 [--sp] = {r14-r4}
0000010001111111 [--sp] = {r15-r4}
0000010010FEDCBA {sr`ABCDEF` <sr0-sr5>} = [sp++]
0000010011FEDCBA [--sp] = {sr`ABCDEF` <sr0-sr5>}
000001010Yyy0Xxx r`Xxx` = [r`Yyy`++=4]
000001010Yyy1Xxx r`Xxx` = [r`Yyy`++=-4]
000001011Yyy0Xxx [r`Yyy`++=4] = r`Xxx`
000001011Yyy1Xxx [r`Yyy`++=-4] = r`Xxx`
000001100YyySXxx r`Xxx` = h[r`Yyy`++=s`S10`] (u)
000001101YyySXxx h[r`Yyy`++=s`S10`] = r`Xxx`
000001110YyySXxx r`Xxx` = b[r`Yyy`++=s`S1`] (u)
000001111YyySXxx b[r`Yyy`++=s`S1`] = r`Xxx`
000010ZzzYyy0Xxx r`Xxx` = [r`Yyy`++=r`1Zzz`]
000010ZzzYyy1Xxx [r`Yyy`++=r`1Zzz`] = r`Xxx`
000011ZzzYyy0Xxx r`Xxx` = h[r`Yyy`++=r`1Zzz`] (u)
000011ZzzYyy1Xxx h[r`Yyy`++=r`1Zzz`] = r`Xxx`
000100ZzzYyy0Xxx r`Xxx` = b[r`Yyy`++=r`1Zzz`] (u)
000100ZzzYyy1Xxx b[r`Yyy`++=r`1Zzz`] = r`Xxx`
0001010000000000 cc = 0
0001010000000001 cc = 1
0001010001000000 sp = usp
0001010001000001 sp = ssp
0001010001000010 usp = sp
0001010001000011 ssp = sp
000101001000Xxx0 r`Xxx1`_r`Xxx0` = 0
0001010011000Xxx r`1Xxx` = 0
00010101Yyy0Xxx0 r`Xxx1`_r`Xxx0` = r`Yyy1`_r`Yyy0`
00010110YyyyXxxx r`Xxxx` = r`Yyyy`
000101110Yyy0Xxx r`Xxx` = r`Yyy`.b0 (u)
000101110Yyy1Xxx r`Xxx` = r`Yyy`.b0 (s)
000101111Yyy0Xxx r`Xxx` = r`Yyy`.l (u)
000101111Yyy1Xxx r`Xxx` = r`Yyy`.l (s)
00011000YyyyXxxx r`Xxxx` += r`Yyyy`
000110010Yyy0Xxx r`Xxx` |= r`Yyy`
000110010Yyy1Xxx r`Xxx` ^= r`Yyy`
000110011Yyy0Xxx r`Xxx` = ~r`Yyy`
000110011Yyy1Xxx r`Xxx` &= r`Yyy`
000110100Yyy0Xxx r`Xxx` <<= r`Yyy`
000110100Yyy1Xxx r`Xxx` <<<= r`Yyy`
000110101Yyy0Xxx r`Xxx` >>= r`Yyy`
000110101Yyy1Xxx r`Xxx` >>>= r`Yyy`
00011011YyyyXxxx r`Xxxx` *= r`Yyyy`
0001110ZzYyyAXxx r`Xxx` = r`Yyy` + r`ZzA`
0001111ZzYyyAXxx r`Xxx` = r`Yyy` - r`ZzA`
========-------========--------========--------========
001Aaaaa0000Xxxx r`Xxxx` = [sp+`Aaaaa00`]
001Aaaaa00010Xxx r`Xxx` = s`1Aaaaa`
001Aaaaa0010Xxxx r`Xxxx` = [sp+`1Aaaaa00`]
001Aaaaa00110Xxx r`Xxx` |= `(1<<'Aaaaa')`
001Aaaaa00111Xxx r`Xxx` ^= `(1<<'Aaaaa')`
001Aaaaa01BbbXxx r`Xxx` = `BbbAaaaa`
001Aaaaa1000Xxxx [sp+`Aaaaa00`] = r`Xxxx`
001Aaaaa1010Xxxx [sp+`1Aaaaa00`] = r`Xxxx`
001Aaaaa10111Xxx r`Xxx` &= `~(1<<'Aaaaa')`
001Aaaaa11BbbXxx r`Xxx` += s`BbbAaaaa`
========-------========--------========--------========
010Aaaaa0Bbb0Xxx if (r`Xxx` == 0) goto s`BbbAaaaa0`
010Aaaaa0Yyy1Xxx r`Xxx` = b[r`Yyy`+s`Aaaaa`] (u)
010Aaaaa1Bbb0Xxx if (r`Xxx` != 0) goto s`BbbAaaaa0`
010Aaaaa1Yyy1Xxx b[r`Yyy`+s`Aaaaa`] = r`Xxx`
========-------========--------========--------========
011Aaaaa0Yyy0Xxx r`Xxx` = [r`Yyy`+s`Aaaaa00`]
011Aaaaa0Yyy1Xxx r`Xxx` = h[r`Yyy`+s`Aaaaa0`] (u)
011Aaaaa1Yyy0Xxx [r`Yyy`+s`Aaaaa00`] = r`Xxx`
011Aaaaa1Yyy1Xxx h[r`Yyy`+s`Aaaaa0`] = r`Xxx`
========-------========--------========--------========
100AaaaaBbbb0000 rep `Bbbb0`<+2> `Aaaaa`<+1> { < `Bbbb`+1 instruction words > }
100Aaaaa0Bbb0001 call s`BbbAaaaa0`
100AaaaaBbb00010 sp += s`BbbAaaaa00`
100AaaaaBbbb01Cc goto s`CcBbbbAaaaa0`
100Aaaaa0Yyy1Xxx r`Xxx` = r`Yyy` + `Aaaaa`
100Aaaaa1Bb01Xxx r`Xxx` = sp + `BbAaaaa`
========-------========--------========--------========
101Aaaaa0Yyy0Xxx r`Xxx` = r`Yyy` << `Aaaaa`<0==32>
101Aaaaa0Yyy1Xxx r`Xxx` = r`Yyy` <<< `Aaaaa`<0==32>
101Aaaaa1Yyy0Xxx r`Xxx` = r`Yyy` >> `Aaaaa`<0==32>
101Aaaaa1Yyy1Xxx r`Xxx` = r`Yyy` >>> `Aaaaa`<0==32>
========-------========--------========--------========
1101010000000000 cc = 0 #
1101010000000001 cc = 1 #
1101010001000000 sp = usp #
1101010001000001 sp = ssp #
1101010001000010 usp = sp #
1101010001000011 ssp = sp #
110101001000Xxx0 r`Xxx1`_r`Xxx0` = 0 #
1101010011000Xxx r`1Xxx` = 0 #
11010101Yyy0Xxx0 r`Xxx1`_r`Xxx0` = r`Yyy1`_r`Yyy0` #
11010110YyyyXxxx r`Xxxx` = r`Yyyy` #
110101110Yyy0Xxx r`Xxx` = r`Yyy`.b0 (u) #
110101110Yyy1Xxx r`Xxx` = r`Yyy`.b0 (s) #
110101111Yyy0Xxx r`Xxx` = r`Yyy`.l (u) #
110101111Yyy1Xxx r`Xxx` = r`Yyy`.l (s) #
11011000YyyyXxxx r`Xxxx` += r`Yyyy` #
110110010Yyy0Xxx r`Xxx` |= r`Yyy` #
110110010Yyy1Xxx r`Xxx` ^= r`Yyy` #
110110011Yyy0Xxx r`Xxx` = ~r`Yyy` #
110110011Yyy1Xxx r`Xxx` &= r`Yyy` #
110110100Yyy0Xxx r`Xxx` <<= r`Yyy` #
110110100Yyy1Xxx r`Xxx` <<<= r`Yyy` #
110110101Yyy0Xxx r`Xxx` >>= r`Yyy` #
110110101Yyy1Xxx r`Xxx` >>>= r`Yyy` #
11011011YyyyXxxx r`Xxxx` *= r`Yyyy` #
1101110ZzYyyAXxx r`Xxx` = r`Yyy` + r`ZzA` #
1101111ZzYyyAXxx r`Xxx` = r`Yyy` - r`ZzA` #
<basically the same stuff in opcodes 0x1400-0x1fff but with '#' at the end>
111000000000Xxxx|Aaaaaaaaaaaaaaaa r`Xxxx`.l = `Aaaaaaaaaaaaaaaa`
111000000001Xxxx|Aaaaaaaaaaaaaaaa r`Xxxx`.h = `Aaaaaaaaaaaaaaaa`
1110000000100000|XxxxAa00Bbbbbbbb r`Xxxx`.b`Aa` = `Bbbbbbbb`
111000000100Xxxx|Aaaaaaaaaaaaaaaa r`Xxxx` = `Aaaaaaaaaaaaaaaa`
1110000001100000|Xxxx%%%%%%%%%%%% r`Xxxx` = `%%WeirdIMM%%`
1110000001100100|XxxxYyyy00000000 r`Xxxx` = sr`Yyyy`
1110000001101000|XxxxYyyy00000000 r`Xxxx`.l = r`Yyyy`.l
1110000001110000|XxxxYyyy00000000 r`Xxxx` = rev8(r`Yyyy`)
1110000001110100|XxxxYyyy00000000 r`Xxxx`.l = sat8(r`Yyyy `.l) (u)
1110000001111000|XxxxYyyy00000000 r`Xxxx` = sat16(r`Yyyy`) (u)
111000001010Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = `%%WeirdIMM%%` - r`Yyyy`
1110000010110000|XxxxYyyy00000000 r`Xxxx` += r`Yyyy` (brev)
1110000010110100|XxxxYyyyZzzz0000 r`Xxxx` = r`Yyyy` + r`Zzzz`
1110000010111000|XxxxYyyyZzzz0000 r`Xxxx` = r`Yyyy` + r`Zzzz` + c
111000001110Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` + `%%WeirdIMM%%`
111000001111Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` - `%%WeirdIMM%%`
1110000100AaXxxx|YyyyBbbbbbbbbbbb r`Xxxx` = r`Yyyy` + s`AaBbbbbbbbbbbb`
111000010100Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` | `%%WeirdIMM%%`
111000010101Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` ^ `%%WeirdIMM%%`
111000010110Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` & `%%WeirdIMM%%`
111000010111Xxxx|Yyyy%%%%%%%%%%%% r`Xxxx` = r`Yyyy` & ~`%%WeirdIMM%%`
11100001100000000000000000000000 ??? r0 = clz(r0)
11100001100100000000000000000000 ??? r0 = r0 | r0
11100001100101000000000000000000 ??? r0 = r0 | (1 << r0)
11100001100110000000000000000000 ??? r0 <= insert(r0, p:r0[12:8], l:r0[4:0])
11100001100111000000000000000000 ??? r0 = uextra(r0, p:r0[12:8], l:r0[4:0])
111000011010Xxxx0000000000000000 ??? r`Xxxx` <= insert(r0, p:0, l:0)
111000011011Xxxx0000000000000000 ??? r`Xxxx` = uextra(r0, p:0, l:0)
11100001110000000000000000000000 ??? r0 = r0 << 32
11100001110001000000000000000000 ??? r0 = r0 <> 32
11100001110010000000000000000000 ??? r0 = r0 << r0
11100001110100000000000000000000 ??? r1_r0 <<= 64
11100001110101000000000000000000 ??? r1_r0 <>= 64
11100001110110000000000000000000 ??? r1_r0 <<= r0
11100001110111000000000000000000 ??? r1_r0 <>= r0
11100001110111100000000000000000 ??? r0 = r1_r0 >> 0 (u)
11100001110111110000000000000000 ??? r0 = r1_r0 >> r0 (u)
111000011110Xxxx0000000000000000 ??? r`Xxxx` = r0 * 0x0
11100001111100000000000000000000 ??? r0 = r0 * r0
11100001111101000000000000000000 ??? r0 = r0 / r0 (u)
11100001111101100000000000000000 ??? r1_r0 = r1_r0 / r0 (u)
11100001111110000000000000000000 ??? r1_r0 = r0 * r0 (u)
11100001111111000000000000000000 ??? r1_r0 += r0 * r0 (u)
11100001111111100000000000000000 ??? r1_r0 -= r0 * r0 (u)
11100100000000--0000000000000000 ??? r0 = align8(r0, r0)
111001000000010-0000000000000000 ??? r0 = pack(r0.l, r0.l)
111001000000011-0000000000000000 ??? r0 = packb(r1_r0) (usat)
11100100000010--0000000000000000 ??? r1_r0 = unpackb(r0) (u)
11100100000011--0000000000000000 ??? r1_r0 mts0(r0, r0)
11100100000100000000000000000000 ??? r0.l = r0.l << 16
11100100000100010000000000000000 ??? r0 = r0 >> 0 (vb)
111001000001001-0000000000000000 ??? r0.l = r0.l << r0
11100100000101--0000000000000000 ??? r0.l = r0.l >< r0
111001000001100-0000000000000000 ??? r0 = r0 << 16 (v)
111001000001101-0000000000000000 ??? r0 = r0 << r0 (v)
11100100000111--0000000000000000 ??? r0 = r0 >< r0 (v)
11100100001000000000000000000000 ??? r1_r0 += abs(r0 -|-|-|- r0) (usat)
11100100001000010000000000000000 ??? r0.l = abs(r0.l)
111001000010001-0000000000000000 ??? r0.l = negs(r0.l)
11100100001001-00000000000000000 ??? r0.l = umax(r0.l, r0.l)
11100100001001-10000000000000000 ??? r0.l = umin(r0.l, r0.l)
111001000010100-0000000000000000 ??? r0 = abs(r0) (v)
111001000010101-0000000000000000 ??? r0 = negs(r0) (v)
11100100001011-00000000000000000 ??? r0 = umax(r0, r0) (v)
11100100001011-10000000000000000 ??? r0 = umin(r0, r0) (v)
111001000011000-0000000000000000 ??? r0 = abs(r0)
111001000011001-0000000000000000 ??? r0 = negs(r0)
11100100001101-00000000000000000 ??? r0 = umax(r0, r0)
11100100001101-10000000000000000 ??? r0 = umin(r0, r0)
1110010000111--00000000000000000 ??? r0 = r0 + r0 (usat)
1110010000111--10000000000000000 ??? r0 = r0 + r0 (ssat)
1110010001--00-00000000000000000 ??? r1_r0 = r0,r0 +|+ r0,r0 (usat)
1110010001--00-10000000000000000 ??? r1_r0 = r0,r0 +|+ r0,r0 (ssat)
1110010001--01-00000000000000000 ??? r1_r0 = r0,r0 +|+ r0,r1 (usat)
1110010001--01-10000000000000000 ??? r1_r0 = r0,r0 +|+ r0,r1 (ssat)
1110010001--10-00000000000000000 ??? r1_r0 = r0,r0 +|+ r1,r0 (usat)
1110010001--10-10000000000000000 ??? r1_r0 = r0,r0 +|+ r1,r0 (ssat)
1110010001--11-00000000000000000 ??? r1_r0 = r0,r0 +|+ r1,r1 (usat)
1110010001--11-10000000000000000 ??? r1_r0 = r0,r0 +|+ r1,r1 (ssat)
11100100100Aaaa-0000000000000000 ??? r0.l = r0.l + `Aaaaa....`
1110010011-Aaaa00000000000000000 ??? r0 = r0.l,r0.l +|+ `Aaaa....` (usat)
1110010011-Aaaa10000000000000000 ??? r0 = r0.l,r0.l +|+ `Aaaa....` (ssat)
1110010100000---0000000000000000 ??? r0.l = r0.l + r0.l
11100101000010000000000000000000 ??? r0.l = r0.l + r0.l (usat)
11100101000010010000000000000000 ??? r0.l = r0.l + r0.l (ssat)
11100101000010100000000000000000 ??? r0.l = r0.l + r0.l (usat,x2)
11100101000010110000000000000000 ??? r0.l = r0.l + r0.l (ssat,x2)
11100101000011000000000000000000 ??? r0.l = r0.l + r0.l (uavg)
11100101000011010000000000000000 ??? r0.l = r0.l + r0.l (savg)
11100101000011100000000000000000 ??? r0.l = r0.l + r0.l (rnd,uavg)
11100101000011110000000000000000 ??? r0.l = r0.l + r0.l (rnd,savg)
11100101000100000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (usat)
11100101000100010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (ssat)
11100101000100100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (usat,x2)
11100101000100110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (ssat,x2)
11100101000101000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (usat)
11100101000101010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (ssat)
11100101000101100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (usat,x2)
11100101000101110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (ssat,x2)
11100101000110000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (usat)
11100101000110010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (ssat)
11100101000110100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (usat,x2)
11100101000110110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (ssat,x2)
11100101000111000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (usat)
11100101000111010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (ssat)
11100101000111100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (usat,x2)
11100101000111110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (ssat,x2)
11100101001000000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (uavg)
11100101001000010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (savg)
11100101001000100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (rnd,uavg)
11100101001000110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.l (rnd,savg)
11100101001001000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (uavg)
11100101001001010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (savg)
11100101001001100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (rnd,uavg)
11100101001001110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.l,r0.h (rnd,savg)
11100101001010000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (uavg)
11100101001010010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (savg)
11100101001010100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (rnd,uavg)
11100101001010110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.l (rnd,savg)
11100101001011000000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (uavg)
11100101001011010000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (savg)
11100101001011100000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (rnd,uavg)
11100101001011110000000000000000 ??? r0 = r0.l,r0.l +|+ r0.h,r0.h (rnd,savg)
11100101001100000000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (usat)
11100101001100010000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (ssat)
11100101001100100000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (usat,x2)
11100101001100110000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (ssat,x2)
11100101001101000000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (uavg)
11100101001101010000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (savg)
11100101001101100000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (rnd,uavg)
11100101001101110000000000000000 ??? r1_r0 = r1_r0 +|+|+|+ r1_r0 (rnd,savg)
11100101001110000000000000000000 ??? r1_r0 = all(r1_r0 == r1_r0) (v)
11100101001110010000000000000000 ??? r1_r0 = any(r1_r0 == r1_r0) (v)
11100101001110100000000000000000 ??? r0 = any(r0 == r0) (v)
11100101001111000000000000000000 ??? r1_r0 = cmp(r1_r0 == r1_r0) (v)
11100101001111010000000000000000 ??? r0 = cmp(r0 == r0) (v)
11100101010000000000000000000000 ??? r0.l = r0.l * r0.l (usat)
11100101010000010000000000000000 ??? r0.l = r0.l * r0.l (ssat)
11100101010000100000000000000000 ??? r0.l = r0.l * r0.l (usat,x2)
11100101010000110000000000000000 ??? r0.l = r0.l * r0.l (ssat,x2)
11100101010010000000000000000000 ??? r0.l += r0.l * r0.l (usat)
11100101010010010000000000000000 ??? r0.l += r0.l * r0.l (ssat)
11100101010010100000000000000000 ??? r0.l += r0.l * r0.l (usat,x2)
11100101010010110000000000000000 ??? r0.l += r0.l * r0.l (ssat,x2)
11100101010011000000000000000000 ??? r0.l -= r0.l * r0.l (usat)
11100101010011010000000000000000 ??? r0.l -= r0.l * r0.l (ssat)
11100101010011100000000000000000 ??? r0.l -= r0.l * r0.l (usat,x2)
11100101010011110000000000000000 ??? r0.l -= r0.l * r0.l (ssat,x2)
11100101010100000000000000000000 ??? r0 = r0.l * r0.l (usat)
11100101010100010000000000000000 ??? r0 = r0.l * r0.l (ssat)
11100101010100100000000000000000 ??? r0 = r0.l * r0.l (usat,x2)
11100101010100110000000000000000 ??? r0 = r0.l * r0.l (ssat,x2)
11100101010110000000000000000000 ??? r0 += r0.l * r0.l (usat)
11100101010110010000000000000000 ??? r0 += r0.l * r0.l (ssat)
11100101010110100000000000000000 ??? r0 += r0.l * r0.l (usat,x2)
11100101010110110000000000000000 ??? r0 += r0.l * r0.l (ssat,x2)
11100101010111000000000000000000 ??? r0 -= r0.l * r0.l (usat)
11100101010111010000000000000000 ??? r0 -= r0.l * r0.l (ssat)
11100101010111100000000000000000 ??? r0 -= r0.l * r0.l (usat,x2)
11100101010111110000000000000000 ??? r0 -= r0.l * r0.l (ssat,x2)
11100101011000000000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.l (usat)
11100101011000010000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.l (ssat)
11100101011000100000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.l (usat,x2)
11100101011000110000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.l (ssat,x2)
11100101011001000000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.h (usat)
11100101011001010000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.h (ssat)
11100101011001100000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.h (usat,x2)
11100101011001110000000000000000 ??? r0 = r0.l,r0.l *|* r0.l,r0.h (ssat,x2)
11100101011010000000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.l (usat)
11100101011010010000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.l (ssat)
11100101011010100000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.l (usat,x2)
11100101011010110000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.l (ssat,x2)
11100101011011000000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.h (usat)
11100101011011010000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.h (ssat)
11100101011011100000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.h (usat,x2)
11100101011011110000000000000000 ??? r0 = r0.l,r0.l *|* r0.h,r0.h (ssat,x2)
11100101011100000000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.l (usat)
11100101011100010000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.l (ssat)
11100101011100100000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.l (usat,x2)
11100101011100110000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.l (ssat,x2)
11100101011101000000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.h (usat)
11100101011101010000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.h (ssat)
11100101011101100000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.h (usat,x2)
11100101011101110000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.l,r0.h (ssat,x2)
11100101011110000000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.l (usat)
11100101011110010000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.l (ssat)
11100101011110100000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.l (usat,x2)
11100101011110110000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.l (ssat,x2)
11100101011111000000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.h (usat)
11100101011111010000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.h (ssat)
11100101011111100000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.h (usat,x2)
11100101011111110000000000000000 ??? r1_r0 = r0.l,r0.l *|* r0.h,r0.h (ssat,x2)
1110010110Aaaaa00000000000000000 ??? r0 = r0.l * `Aaaaa0000` (usat)
1110010110Aaaaa10000000000000000 ??? r0 = r0.l * s`Aaaaa0000` (ssat)
1110010111Aaaaa00000000000000000 ??? r1_r0 = r0.l,r0.l *|* `Aaaaa0000` (usat)
1110010111Aaaaa10000000000000000 ??? r1_r0 = r0.l,r0.l *|* s`Aaaaa0000` (ssat)
111010000000Xxxx0000000000000000 ??? if (r0 == r`Xxxx`) goto 0
111010000001Xxxx0000000000000000 ??? if (r`Xxxx` == r0) { ... }
11101000001-Xxxx0000000000000000 ??? if (r`Xxxx` == 0) { ... }
11101000010000000000000000000000 ??? ifeq goto 0
111010000101Xxxx0000000000000000 ??? if ((r`Xxxx` & 1) == 0) goto 0
11101000011000000000000000000000 ??? r0 = [npc + r0]
11101000011001000000000000000000 ??? [r0+0] |= r0
11101000011001100000000000000000 ??? [r0+0] |= 1 << r0
11101000011010000000000000000000 ??? [r0+0] += r0
11101000011011000000000000000000 ??? [r0+0] <<= 32
11101000011011010000000000000000 ??? [r0+0] <<= 16
11101000011011100000000000000000 ??? [r0+0] <<= r0
11101000011100000000000000000000 ??? trigger
111010001000Xxxx0000000000000000 ??? if (r0 != r`Xxxx`) goto 0
111010001001Xxxx0000000000000000 ??? if (r`Xxxx` != r0) { ... }
11101000101-Xxxx0000000000000000 ??? if (r`Xxxx` != 0) { ... }
11101000110000000000000000000000 ??? ifne goto 0
11101000110100010000000000000000 ??? {rets} = [sp++]
11101000110101000000000000000000 ??? {} = [sp++]
11101000110101010000000000000000 ??? {pc} = [sp++]
11101000110110000000000000000000 ??? [--sp] = {}
11101000110110010000000000000000 ??? [--sp] = {rets}
11101000111000000000000000000000 ??? r1_r0 = [r0 ++= r0.h]*[r0 ++= r0.l] (u)
11101000111001000000000000000000 ??? r1_r0 += [r0 ++= r0.h]*[r0 ++= r0.l] (u)
11101000111001100000000000000000 ??? r1_r0 -= [r0 ++= r0.h]*[r0 += r0.l] (u)
11101000111010000000000000000000 ??? r1_r0 = h[r0 ++= r0.h]*[r0 ++= r0.l] (u)
11101000111011000000000000000000 ??? r1_r0 += h[r0 ++= r0.h]*[r0 ++= r0.l] (u)
11101000111011100000000000000000 ??? r1_r0 -= h[r0 ++= r0.h]*[r0 ++= r0.l] (u)
1110100011110---0000000000000000 ??? sp += 0
1110100011111---0000000000000000 ??? r0 = sp + 0
111010010000Xxxx0000000000000000 ??? if (r0 >= r`Xxxx`) goto 0
111010010001Xxxx0000000000000000 ??? if (r`Xxxx` >= r0) { ... }
11101001001-Xxxx0000000000000000 ??? if (r`Xxxx` >= 0) { ... }
11101001010000000000000000000000 ??? ifcs goto 0
11101001010100000000000000000000 ??? {} = [sp++]
11101001010110000000000000000000 ??? [--sp] = {}
111010010110Aaaa0000000000000000 ??? r1_r0 = [r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111010011000Xxxx0000000000000000 ??? if (r0 < r`Xxxx`) goto 0
111010011001Xxxx0000000000000000 ??? if (r`Xxxx` < r0) { ... }
11101001101-Xxxx0000000000000000 ??? if (r`Xxxx` < 0) { ... }
11101001110000000000000000000000 ??? ifcc goto 0
11101001110100000000000000000000 ??? r1_r0 = d[sp]
11101001110101000000000000000000 ??? r0 = [sp]
11101001110110000000000000000000 ??? r0 = h[sp] (u)
11101001110110010000000000000000 ??? r0 = h[sp] (s)
11101001110111000000000000000000 ??? r0 = b[sp] (u)
11101001110111010000000000000000 ??? r0 = b[sp] (s)
11101001110111100000000000000000 ??? b[sp] = r0
111010011110Aaaa0000000000000000 ??? r1_r0 += [r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111010100000Xxxx0000000000000000 ??? if (--r`Xxxx` != 0) goto 0
111010100001Xxxx0000000000000000 ??? if ((r`Xxxx` & r0) == 0) { ... }
111010100010Xxxx0000000000000000 ??? if ((r`Xxxx` & 0x0) == 0) { ... }
111010100011Xxxx0000000000000000 ??? if ((r`Xxxx` & 0x0) != 0) { ... }
1110101001Aaaaaa0000000000000000 ??? [r0+s`Aaaaaa00`] = 0x0
1110101010AaaaaaBbbbbbbbbbbbbbbb call `AaaaaaBbbbbbbbbbbbbbbb0`
1110101011AaaaaaBbbbbbbbbbbbbbbb goto `AaaaaaBbbbbbbbbbbbbbbb0`
111010110000Xxxx0000000000000000 ??? {} = [r`Xxxx`+]
111010110001Xxxx0000000000000000 ??? {} = [r`Xxxx`++]
111010110010Xxxx0000000000000000 ??? [r`Xxxx`+] = {}
111010110011Xxxx0000000000000000 ??? [r`Xxxx`++] = {}
111010110100Xxxx0000000000000000 ??? {} = [-r`Xxxx`]
111010110101Xxxx0000000000000000 ??? {} = [--r`Xxxx`]
111010110110Xxxx0000000000000000 ??? [-r`Xxxx`] = {}
111010110111Xxxx0000000000000000 ??? [--r`Xxxx`] = {}
1110101110Aaaaaa0000000000000000 ??? [r0+s`Aaaaaa00`] += 0x0
1110101111Aaaaaa0000000000000000 ??? [r0+s`Aaaaaa00`] += 0
111011000000Xxxx0000000000000000 ??? if (r0 > r`Xxxx`) goto 0
111011000001Xxxx0000000000000000 ??? if (r`Xxxx` > r0) { ... }
11101100001-Xxxx0000000000000000 ??? if (r`Xxxx` > 0) { ... }
11101100010000000000000000000000 ??? ifhi goto 0
1110110001010Aaa0000000000000000 ??? r1_r0 = d[r0+s`Aaa00000000`]
1110110001011Aaa0000000000000000 ??? r1_r0 = d[r0++=s`Aaa00000000`]
111011000110Aaaa0000000000000000 ??? r1_r0 -= [r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111011001000Xxxx0000000000000000 ??? if (r0 <= r`Xxxx`) goto 0
111011001001Xxxx0000000000000000 ??? if (r`Xxxx` <= r0) { ... }
11101100101-Xxxx0000000000000000 ??? if (r`Xxxx` <= 0) { ... }
11101100110000000000000000000000 ??? ifls goto 0
1110110011010Aaa0000000000000000 ??? r0 = [r0+s`Aaa00000000`]
1110110011011Aaa0000000000000000 ??? r0 = [r0++=s`Aaa00000000`]
111011001110Aaaa0000000000000000 ??? r1_r0 = h[r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111011010000Xxxx0000000000000000 ??? ifs (r0 >= r`Xxxx`) goto 0
111011010001Xxxx0000000000000000 ??? ifs (r`Xxxx` > r0) { ... }
11101101001-Xxxx0000000000000000 ??? ifs (r`Xxxx` > 0) { ... }
11101101010000000000000000000000 ??? ifge goto 0
11101101010100Aa0000000000000000 ??? r0 = h[r0+s`Aa00000000`] (u)
11101101010101Aa0000000000000000 ??? r0 = h[r0+s`Aa00000000`] (s)
11101101010110Aa0000000000000000 ??? r0 = h[++r0=s`Aa00000000`] (u)
11101101010111Aa0000000000000000 ??? r0 = h[++r0=s`Aa00000000`] (s)
111011010110Aaaa0000000000000000 ??? r1_r0 += h[r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111011011000Xxxx0000000000000000 ??? ifs (r0 < r`Xxxx`) goto 0
111011011001Xxxx0000000000000000 ??? ifs (r`Xxxx` < r0) { ... }
11101101101-Xxxx0000000000000000 ??? ifs (r`Xxxx` < 0) { ... }
11101101110000000000000000000000 ??? iflt goto 0
11101101110100Aa0000000000000000 ??? r0 = h[r0++=s`Aa00000000`] (u)
11101101110101Aa0000000000000000 ??? r0 = h[r0++=s`Aa00000000`] (s)
11101101110110000000000000000000 ??? r0 = h[r0+r0] (u)
11101101110111000000000000000000 ??? r0 = h[++r0=r0] (u)
11101101110111100000000000000000 ??? r0 = h[r0++=r0] (u)
111011011110Aaaa0000000000000000 ??? r1_r0 -= h[r0 ++= 0]*[r0 ++= s`Aaaa00`] (u)
111011100000Xxxx0000000000000000 ??? ifs (r0 > r`Xxxx`) goto 0
111011100001Xxxx0000000000000000 ??? ifs (r`Xxxx` > r0) { ... }
11101110001-Xxxx0000000000000000 ??? ifs (r`Xxxx` > 0) { ... }
11101110010000000000000000000000 ??? ifgt goto 0
111011100101000A0000000000000000 ??? r0 = b[r0+s`A00000000`] (u)
111011100101001A0000000000000000 ??? b[r0+s`A00000000`] = r0
111011100101010A0000000000000000 ??? r0 = b[r0+s`A00000000`] (s)
111011100101100A0000000000000000 ??? r0 = b[++r0=s`A00000000`] (u)
111011100101101A0000000000000000 ??? b[++r0=s`A00000000`] = r0
111011100101110A0000000000000000 ??? r0 = b[++r0=`A00000000`] (s)
11101110011000000000000000000000 ??? r1_r0 = [r0 ++= r0]*r0 (u)
11101110011001000000000000000000 ??? r1_r0 += [r0 ++= r0]*r0 (u)
11101110011001100000000000000000 ??? r1_r0 -= [r0 ++= r0]*r0 (u)
11101110011010000000000000000000 ??? r1_r0 = h[r0 ++= r0]*r0 (u)
11101110011011000000000000000000 ??? r1_r0 += h[r0 ++= r0]*r0 (u)
11101110011011100000000000000000 ??? r1_r0 -= h[r0 ++= r0]*r0 (u)
111011101000Xxxx0000000000000000 ??? ifs (r0 <= r`Xxxx`) goto 0
111011101001Xxxx0000000000000000 ??? ifs (r`Xxxx` <= r0) { ... }
11101110101-Xxxx0000000000000000 ??? ifs (r`Xxxx` <= 0) { ... }
11101110110000000000000000000000 ??? ifle goto 0
111011101101000A0000000000000000 ??? r0 = b[r0++=s`A00000000`] (u)
111011101101001A0000000000000000 ??? b[r0++=s`A00000000`] = r0
111011101101010A0000000000000000 ??? r0 = b[r0++=s`A00000000`] (s)
11101110110110000000000000000000 ??? r0 = b[r0+r0] (u)
11101110110111000000000000000000 ??? r0 = b[++r0=r0] (u)
11101110110111100000000000000000 ??? r0 = b[r0++=r0] (u)
11101110111000000000000000000000 ??? r1_r0 = [r0 ++= 0]*r0 (u)
11101110111001000000000000000000 ??? r1_r0 += [r0 ++= 0]*r0 (u)
11101110111001100000000000000000 ??? r1_r0 -= [r0 ++= 0]*r0 (u)
11101110111010000000000000000000 ??? r1_r0 = h[r0 ++= 0]*r0 (u)
11101110111011000000000000000000 ??? r1_r0 += h[r0 ++= 0]*r0 (u)
11101110111011100000000000000000 ??? r1_r0 -= h[r0 ++= 0]*r0 (u)
1110111100Aaaaaa|0000000000000000 ??? [r0+s`Aaaaaa00`] |= 0x0
1110111101Aaaaaa|0000000000000000 ??? [r0+s`Aaaaaa00`] ^= 0x0
1110111111Aaaaaa|0000000000000000 ??? [r0+s`Aaaaaa00`] &= 0x0
1110111111Aaaaaa|0000000000000000 ??? [r0+s`Aaaaaa00`] &= 0xffffffff
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
111100000000XxxxAaaaaaaaaaaaaaaa r`Xxxx`.l = `Aaaaaaaaaaaaaaaa` #
111100000001XxxxAaaaaaaaaaaaaaaa r`Xxxx`.h = `Aaaaaaaaaaaaaaaa` #
11110000001000000000000000000000 ??? r0.b0 = 0 #
111100000100XxxxAaaaaaaaaaaaaaaa r`Xxxx` = `Aaaaaaaaaaaaaaaa` #
11110000011000000000000000000000 ??? r0 = 0x0 #
11110000011001000000000000000000 ??? r0 = reti #
11110000011010000000000000000000 ??? r0.l = r0.l #
11110000011100000000000000000000 ??? r0 = rev8(r0) #
11110000011101000000000000000000 ??? r0.l = sat8(r0.l) (u) #
<the same stuff but with '#' at the end>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
111110000AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` == s`AaaBbbbbbb`) goto s`Ccccccccc0`
111110001AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` != s`AaaBbbbbbb`) goto s`Ccccccccc0`
111110010AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` >= `AaaBbbbbbb`) goto s`Ccccccccc0`
111110011AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` < `AaaBbbbbbb`) goto s`Ccccccccc0`
11111010YyyyXxxx|Cccccccccccccccc if ((r`Xxxx` & r`Yyyy`) == 0) goto s`Cccccccccccccccc0`
11111011YyyyXxxx|Cccccccccccccccc if ((r`Xxxx` & r`Yyyy`) != 0) goto s`Cccccccccccccccc0`
111111000AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` > `AaaBbbbbbb`) goto s`Ccccccccc0`
111111001AaaXxxx|BbbbbbbCcccccccc if (r`Xxxx` <= `AaaBbbbbbb`) goto s`Ccccccccc0`
111111010AaaXxxx|BbbbbbbCcccccccc ifs (r`Xxxx` >= s`AaaBbbbbbb`) goto s`Ccccccccc0`
111111011AaaXxxx|BbbbbbbCcccccccc ifs (r`Xxxx` < s`AaaBbbbbbb`) goto s`Ccccccccc0`
111111100AaaXxxx|BbbbbbbCcccccccc ifs (r`Xxxx` > s`AaaBbbbbbb`) goto s`Ccccccccc0`
111111101AaaXxxx|BbbbbbbCcccccccc ifs (r`Xxxx` <= s`AaaBbbbbbb`) goto s`Ccccccccc0`
1111111100000000|00000000000000000000000000000000 ?? if (r0 == 0) goto 0
1111111100000001|00000000000000000000000000000000 ?? if (r0 != 0) goto 0
1111111100000010|00000000000000000000000000000000 ?? if (r0 >= 0) goto 0
1111111100000011|00000000000000000000000000000000 ?? if (r0 < 0) goto 0
11111111000001--|00000000000000000000000000000000 ?? if (r0 ?? 0) goto 0
1111111100001000|00000000000000000000000000000000 ?? if (r0 > 0) goto 0
1111111100001001|00000000000000000000000000000000 ?? if (r0 <= 0) goto 0
1111111100001010|00000000000000000000000000000000 ?? ifs (r0 >= 0) goto 0
1111111100001011|00000000000000000000000000000000 ?? ifs (r0 < 0) goto 0
1111111100001100|00000000000000000000000000000000 ?? ifs (r0 > 0) goto 0
1111111100001101|00000000000000000000000000000000 ?? if (r0 <= 0) goto 0
111111110000111-|00000000000000000000000000000000 ?? if (r0 ?? 0) goto 0
/\
00
01
10
1111111101100000|00000000000000000000000000000000 ?? if ((r0 & 0x0) == 0) goto 0
1111111101100001|00000000000000000000000000000000 ?? if ((r0 & 0x0) != 0) goto 0
1111111110000000|Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa call `Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
111111111010Xxxx|00000000000000000000000000000000 ?? r`Xxxx` = [npc + 0]
111111111100Xxxx|Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa r`Xxxx` = `Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
111111111110Xxxx|Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa sr`Xxxx` = `Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
Inherited from pi32, although it’s not scattered across two iwords anymore.
................|....0000Xxxxxxxx `Xxxxxxxx`
................|....0001Xxxxxxxx `Xxxxxxxx00000000Xxxxxxxx`
................|....0010Xxxxxxxx `Xxxxxxxx00000000Xxxxxxxx00000000`
................|....0011Xxxxxxxx `XxxxxxxxXxxxxxxxXxxxxxxxXxxxxxxx`
................|....01000Xxxxxxx `1Xxxxxxx000000000000000000000000`
................|....01001Xxxxxxx `1Xxxxxxx00000000000000000000000`
................|....01010Xxxxxxx `1Xxxxxxx0000000000000000000000`
................|....01011Xxxxxxx `1Xxxxxxx000000000000000000000`
................|....01100Xxxxxxx `1Xxxxxxx00000000000000000000`
................|....01101Xxxxxxx `1Xxxxxxx0000000000000000000`
................|....01110Xxxxxxx `1Xxxxxxx000000000000000000`
................|....01111Xxxxxxx `1Xxxxxxx00000000000000000`
................|....10000Xxxxxxx `1Xxxxxxx0000000000000000`
................|....10001Xxxxxxx `1Xxxxxxx000000000000000`
................|....10010Xxxxxxx `1Xxxxxxx00000000000000`
................|....10011Xxxxxxx `1Xxxxxxx0000000000000`
................|....10100Xxxxxxx `1Xxxxxxx000000000000`
................|....10101Xxxxxxx `1Xxxxxxx00000000000`
................|....10110Xxxxxxx `1Xxxxxxx0000000000`
................|....10111Xxxxxxx `1Xxxxxxx000000000`
................|....11000Xxxxxxx `1Xxxxxxx00000000`
................|....11001Xxxxxxx `1Xxxxxxx0000000`
................|....11010Xxxxxxx `1Xxxxxxx000000`
................|....11011Xxxxxxx `1Xxxxxxx00000`
................|....11100Xxxxxxx `1Xxxxxxx0000`
................|....11101Xxxxxxx `1Xxxxxxx000`
................|....11110Xxxxxxx `1Xxxxxxx00`
................|....11111Xxxxxxx `1Xxxxxxx0`
pi32v2 implementations usually have a designated block mapped to the memory, where you can access CPU’s registers, some registers for the tick timer, interrupt controller, MPU and so on.