Datasheet

Table Of Contents
The Delay/side-set field is present in all instructions. Its exact use is configured for each state machine by
PINCTRL_SIDESET_COUNT:
Up to 5 MSBs encode a side-set operation (section Section 3.5.1), which optionally asserts a constant value onto
some GPIOs, concurrently with main instruction execution logic
Remaining LSBs (up to 5) encode the number of idle cycles inserted between this instruction and the next
3.4.2. JMP
3.4.2.1. Encoding
Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
JMP
0 0 0 Delay/side-set Condition Address
3.4.2.2. Operation
Set program counter to Address if Condition is true, otherwise no operation.
Delay cycles on a JMP always take effect, whether Condition is true or false, and they take place after Condition is evaluated
and the program counter is updated.
Condition:
000: (no condition): Always
001: !X: scratch X zero
010: X--: scratch X non-zero, post-decrement
011: !Y: scratch Y zero
100: Y--: scratch Y non-zero, post-decrement
101: X!=Y: scratch X not equal scratch Y
110: PIN: branch on input pin
111: !OSRE: output shift register not empty
Address: Instruction address to jump to. In the instruction encoding this is an absolute address within the PIO
instruction memory.
JMP PIN branches on the GPIO selected by EXECCTRL_JMP_PIN. The branch is taken if the GPIO is high.
!OSRE compares the bits shifted out since the last PULL with the shift count threshold configured by SHIFTCTRL_PULL_THRESH.
This is the same threshold used by autopull (section Section 3.5.4).
3.4.2.3. Assembler Syntax
jmp ( <cond> ) <target>
where:
<cond>
Is an optional condition listed above (e.g. !x for scratch X zero). If a condition code is not specified, the
branch is always taken
RP2040 Datasheet
3.4. Instruction Set 323