Chapter 4. API Guides
I_BXFI(imm_pc)
Branch to absolute PC if ALU overflow, immediate address
Address imm_pc is expressed in 32-bit words.
I_ADDR(reg_dest, reg_src1, reg_src2)
Addition: dest = src1 + src2
I_SUBR(reg_dest, reg_src1, reg_src2)
Subtraction: dest = src1 - src2
I_ANDR(reg_dest, reg_src1, reg_src2)
Logical AND: dest = src1 & src2
I_ORR(reg_dest, reg_src1, reg_src2)
Logical OR: dest = src1 | src2
I_MOVR(reg_dest, reg_src)
Copy: dest = src
I_LSHR(reg_dest, reg_src, reg_shift)
Logical shift left: dest = src << shift
I_RSHR(reg_dest, reg_src, reg_shift)
Logical shift right: dest = src >> shift
I_ADDI(reg_dest, reg_src, imm_)
Add register and an immediate value: dest = src1 + imm
I_SUBI(reg_dest, reg_src, imm_)
Subtract register and an immediate value: dest = src - imm
I_ANDI(reg_dest, reg_src, imm_)
Logical AND register and an immediate value: dest = src & imm
I_ORI(reg_dest, reg_src, imm_)
Logical OR register and an immediate value: dest = src | imm
I_MOVI(reg_dest, imm_)
Copy an immediate value into register: dest = imm
I_LSHI(reg_dest, reg_src, imm_)
Logical shift left register value by an immediate: dest = src << imm
I_RSHI(reg_dest, reg_src, imm_)
Logical shift right register value by an immediate: dest = val >> imm
M_LABEL(label_num)
Define a label with number label_num.
This is a macro which doesn't generate a real instruction. The token generated by this macro is removed by
ulp_process_macros_and_load function. Label defined using this macro can be used in branch macros defined
below.
M_BL(label_num, imm_value)
Macro: branch to label label_num if R0 is less than immediate value.
This macro generates two ulp_insn_t values separated by a comma, and should be used when defining
contents of ulp_insn_t arrays. First value is not a real instruction; it is a token which is removed by
ulp_process_macros_and_load function.
M_BGE(label_num, imm_value)
Macro: branch to label label_num if R0 is greater or equal than immediate value
This macro generates two ulp_insn_t values separated by a comma, and should be used when defining
contents of ulp_insn_t arrays. First value is not a real instruction; it is a token which is removed by
ulp_process_macros_and_load function.
Espressif Systems
1495
Submit Document Feedback
Release v4.4
Need help?
Do you have a question about the ESP32-S2 and is the answer not in the manual?
Questions and answers