| .syntax unified |
| .thumb |
| |
| .macro helper_q0 op |
| .irp op2, q1, q2, q4, q7 |
| .irp op3, q1, q2, q4, q7 |
| \op q0, \op2, \op3 |
| .endr |
| .endr |
| .endm |
| |
| .macro helper_q1 op |
| .irp op2, q0, q2, q4, q7 |
| .irp op3, q0, q2, q4, q7 |
| \op q1, \op2, \op3 |
| .endr |
| .endr |
| .endm |
| |
| .macro helper_q2 op |
| .irp op2, q0, q1, q4, q7 |
| .irp op3, q0, q1, q4, q7 |
| \op q2, \op2, \op3 |
| .endr |
| .endr |
| .endm |
| |
| .macro helper_q4 op |
| .irp op2, q0, q1, q2, q7 |
| .irp op3, q0, q1, q2, q7 |
| \op q4, \op2, \op3 |
| .endr |
| .endr |
| .endm |
| |
| |
| .macro helper_q7 op |
| .irp op2, q0, q1, q2, q4 |
| .irp op3, q0, q1, q2, q4 |
| \op q7, \op2, \op3 |
| .endr |
| .endr |
| .endm |
| |
| .macro all_qqq op |
| helper_q0 \op |
| helper_q1 \op |
| helper_q2 \op |
| helper_q4 \op |
| helper_q7 \op |
| .endm |
| |
| .irp data, s8, u8, s16, u16, p8, p16 |
| .irp op1, q0, q1, q2, q4, q7 |
| .irp op2, q0, q1, q2, q4, q7 |
| .irp op3, q0, q1, q2, q4, q7 |
| vmullb.\data \op1, \op2, \op3 |
| vmullt.\data \op1, \op2, \op3 |
| .endr |
| .endr |
| .endr |
| .endr |
| |
| all_qqq vmullb.s32 |
| all_qqq vmullb.u32 |
| all_qqq vmullt.s32 |
| all_qqq vmullt.u32 |
| |
| vpstete |
| vmullbt.s8 q0, q1, q2 |
| vmullbe.s16 q1, q0, q3 |
| vmullbt.s32 q2, q3, q4 |
| vmullbe.u8 q3, q2, q1 |
| vpstete |
| vmullbt.u16 q4, q5, q7 |
| vmullbe.u32 q5, q4, q6 |
| vmullbt.p8 q6, q7, q5 |
| vmullbe.p16 q7, q6, q0 |
| |
| vpstete |
| vmulltt.s8 q0, q1, q2 |
| vmullte.s16 q1, q0, q3 |
| vmulltt.s32 q2, q3, q4 |
| vmullte.u8 q3, q2, q1 |
| vpstete |
| vmulltt.u16 q4, q5, q7 |
| vmullte.u32 q5, q4, q6 |
| vmulltt.p8 q6, q7, q5 |
| vmullte.p16 q7, q6, q0 |