Commit | Line | Data |
---|---|---|
4d6ac854 AV |
1 | .syntax unified |
2 | .thumb | |
3 | ||
4 | .macro ins_2 cond2 | |
5 | vaddt.i32 q0, q1, q2 | |
6 | vadd\cond2\().i32 q0, q1, q2 | |
7 | .endm | |
8 | .macro ins_3 cond2, cond3 | |
9 | ins_2 \cond2 | |
10 | vadd\cond3\().i32 q0, q1, q2 | |
11 | .endm | |
12 | .macro ins_4 cond2, cond3, cond4 | |
13 | ins_3 \cond2, \cond3 | |
14 | vadd\cond4\().i32 q0, q1, q2 | |
15 | .endm | |
16 | ||
17 | .macro vpt_1 data, cond, op1, op2 | |
18 | vpt\data \cond, \op1, \op2 | |
19 | vaddt.i32 q0, q1, q2 | |
20 | .endm | |
21 | ||
22 | .macro help mask, data, cond, op1, op2 | |
23 | vpt\mask\data \cond, \op1, \op2 | |
24 | .endm | |
25 | ||
26 | .macro vpt_2 data, cond, op1, op2 | |
27 | .irp cond2, t, e | |
28 | help \cond2, \data, \cond, \op1, \op2 | |
29 | ins_2 \cond2 | |
30 | .endr | |
31 | .endm | |
32 | ||
33 | .macro vpt_3 data, cond, op1, op2 | |
34 | .irp cond2, t, e | |
35 | .irp cond3, t, e | |
36 | help \cond2\cond3, \data, \cond, \op1, \op2 | |
37 | ins_3 \cond2, \cond3 | |
38 | .endr | |
39 | .endr | |
40 | .endm | |
41 | ||
42 | .macro vpt_4 data, cond, op1, op2 | |
43 | .irp cond2, t, e | |
44 | .irp cond3, t, e | |
45 | .irp cond4, t, e | |
46 | help \cond2\cond3\cond4, \data, \cond, \op1, \op2 | |
47 | ins_4 \cond2, \cond3, \cond4 | |
48 | .endr | |
49 | .endr | |
50 | .endr | |
51 | .endm | |
52 | ||
53 | .macro vpt_qq data, cond | |
54 | .irp op1, q0, q1, q4, q7 | |
55 | .irp op2, q0, q2, q5, q7 | |
56 | vpt_1 \data, \cond, \op1, \op2 | |
57 | vpt_2 \data, \cond, \op1, \op2 | |
58 | vpt_3 \data, \cond, \op1, \op2 | |
59 | vpt_4 \data, \cond, \op1, \op2 | |
60 | .endr | |
61 | .endr | |
62 | .endm | |
63 | ||
64 | .macro vpt_qr data, cond | |
65 | .irp op1, q0, q1, q4, q7 | |
66 | .irp op2, r0, r1, r2, r4, r7, r8, r9, r10, r12, r14, zr | |
67 | vpt_1 \data, \cond, \op1, \op2 | |
68 | vpt_2 \data, \cond, \op1, \op2 | |
69 | vpt_3 \data, \cond, \op1, \op2 | |
70 | vpt_4 \data, \cond, \op1, \op2 | |
71 | .endr | |
72 | .endr | |
73 | .endm | |
74 | ||
75 | .irp data, .f16, .f32 | |
76 | .irp cond, eq, ne, gt, le, ge, lt | |
77 | vpt_qq \data, \cond | |
78 | vpt_qr \data, \cond | |
79 | .endr | |
80 | .endr | |
81 | ||
82 | .irp data, .i8, .i16, .i32 | |
83 | .irp cond, eq, ne | |
84 | vpt_qq \data, \cond | |
85 | vpt_qr \data, \cond | |
86 | .endr | |
87 | .endr | |
88 | ||
89 | .irp data, .u8, .u16, .u32 | |
90 | .irp cond, cs, hi | |
91 | vpt_qq \data, \cond | |
92 | vpt_qr \data, \cond | |
93 | .endr | |
94 | .endr | |
95 | ||
96 | .irp data, .s8, .s16, .s32 | |
97 | .irp cond, ge, lt, gt, le | |
98 | vpt_qq \data, \cond | |
99 | vpt_qr \data, \cond | |
100 | .endr | |
101 | .endr | |
102 | ||
103 | vpst | |
104 | vaddt.i32 q0, q1, q2 | |
105 | ||
106 | .irp cond2, t, e | |
107 | vpst\cond2 | |
108 | ins_2 \cond2 | |
109 | .irp cond3, t, e | |
110 | vpst\cond2\cond3 | |
111 | ins_3 \cond2, \cond3 | |
112 | .irp cond4, t, e | |
113 | vpst\cond2\cond3\cond4 | |
114 | ins_4 \cond2, \cond3, \cond4 | |
115 | .endr | |
116 | .endr | |
117 | .endr |