jielie

pi32v2

Enhanced (or more complete Blackfin feature inheritage) version of the pi32 architecture.

Details

Differences with pi32

General purpose registers (GPRs)

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)

Special function registers (SFRs)

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

Opcodes

16-bit

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>


32-bit

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`

48-bit

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`

Definitions

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`

Memory-mapped SFR block

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.