| .syntax unified |
| .thumb |
| .irp data, s8, s16 |
| .irp op1, q0, q1, q2, q4, q7 |
| .irp op2, q0, q1, q2, q4, q7 |
| .irp op3, q0, q1, q2, q4, q7 |
| .irp rot, #90, #270 |
| vhcadd.\data \op1, \op2, \op3, \rot |
| .endr |
| .endr |
| .endr |
| .endr |
| .endr |
| |
| .macro vhcadd_q0 op2, rot |
| .irp op3, q1, q2, q4, q7 |
| vhcadd.s32 q0, \op2, \op3, \rot |
| .endr |
| .endm |
| |
| .macro vhcadd_q1 op2, rot |
| .irp op3, q0, q2, q4, q7 |
| vhcadd.s32 q1, \op2, \op3, \rot |
| .endr |
| .endm |
| |
| .macro vhcadd_q2 op2, rot |
| .irp op3, q0, q1, q4, q7 |
| vhcadd.s32 q2, \op2, \op3, \rot |
| .endr |
| .endm |
| |
| .macro vhcadd_q4 op2, rot |
| .irp op3, q0, q1, q2, q7 |
| vhcadd.s32 q4, \op2, \op3, \rot |
| .endr |
| .endm |
| |
| .macro vhcadd_q7 op2, rot |
| .irp op3, q0, q1, q2, q4 |
| vhcadd.s32 q7, \op2, \op3, \rot |
| .endr |
| .endm |
| |
| .irp op2, q0, q1, q2, q4, q7 |
| .irp rot, #90, #270 |
| vhcadd_q0 \op2, \rot |
| vhcadd_q1 \op2, \rot |
| vhcadd_q2 \op2, \rot |
| vhcadd_q4 \op2, \rot |
| vhcadd_q7 \op2, \rot |
| .endr |
| .endr |
| |
| vpste |
| vhcaddt.s8 q0, q1, q2, #90 |
| vhcadde.s16 q0, q1, q2, #270 |