The pseudo code for single operand (e.g. sinpuf32) is
- Mov r0,#oprand1_data // moving the operand1 to r0
- Mov r1, #oprand1_address // moving the operand1 address to
r1
- Mov r2, #resultR0_address // moving the result R0 address to
r2
- STR r0, [r1] // write to do a single operand TMU
operation
- DMB // to ensure strongly ordered read write
- LDR r3, [r2] // moving the TMU result R0 data into r3
The pseudo code for two operands with two result (e.g. QUADF32) is
- Mov r0,#oprand1_data // moving the operand1 to r0
- Mov r1,#oprand2_data // moving the operand2 to r1
- Mov r2,#oprand1_address // moving the operand1 address to
r2
- Mov r3,#oprand2_address // moving the operand2 address to
r3
- Mov r4, #resultR0_address // moving the result R0 address to
r4
- Mov r5, #resultR1_address // moving the result R1 address to
r5
- STR r1, [r3] // writing TMU operand2
- STR r0, [r2] // writing TMU operand1
- DMB // to ensure strongly ordered read write
- LDR r6, [r4] // moving the TMU result R0 data into r6
- LDR r7, [r5] // moving the TMU result R1 data into r7