| @@ -21,7 +21,7 @@ · 20 unmodified lines |
| 21 | #include "asm.S" | 21 | #include "asm.S" |
| 22 | | 22 | |
| 23 | // (a0) = (a1) * (a2) [0..a3-1] | 23 | // (a0) = (a1) * (a2) [0..a3-1] |
| 24 | func ff_vector_fmul_rvv, zve32f | 24 | func ff_vector_fmul_rvv, zve32f, zba |
| 25 | 1: | 25 | 1: |
| 26 | vsetvli t0, a3, e32, m8, ta, ma | 26 | vsetvli t0, a3, e32, m8, ta, ma |
| 27 | vle32.v v16, (a1) | 27 | vle32.v v16, (a1) |
| @@ -38,7 +38,7 @@ func ff_vector_fmul_rvv, zve32f · 10 unmodified lines |
| 38 | endfunc | 38 | endfunc |
| 39 | | 39 | |
| 40 | // (a0) += (a1) * fa0 [0..a2-1] | 40 | // (a0) += (a1) * fa0 [0..a2-1] |
| 41 | func ff_vector_fmac_scalar_rvv, zve32f | 41 | func ff_vector_fmac_scalar_rvv, zve32f, zba |
| 42 | NOHWF fmv.w.x fa0, a2 | 42 | NOHWF fmv.w.x fa0, a2 |
| 43 | NOHWF mv a2, a3 | 43 | NOHWF mv a2, a3 |
| 44 | 1: | 44 | 1: |
| @@ -57,7 +57,7 @@ NOHWF mv a2, a3 · 12 unmodified lines |
| 57 | endfunc | 57 | endfunc |
| 58 | | 58 | |
| 59 | // (a0) = (a1) * fa0 [0..a2-1] | 59 | // (a0) = (a1) * fa0 [0..a2-1] |
| 60 | func ff_vector_fmul_scalar_rvv, zve32f | 60 | func ff_vector_fmul_scalar_rvv, zve32f, zba |
| 61 | NOHWF fmv.w.x fa0, a2 | 61 | NOHWF fmv.w.x fa0, a2 |
| 62 | NOHWF mv a2, a3 | 62 | NOHWF mv a2, a3 |
| 63 | 1: | 63 | 1: |
| @@ -73,7 +73,7 @@ NOHWF mv a2, a3 · 9 unmodified lines |
| 73 | ret | 73 | ret |
| 74 | endfunc | 74 | endfunc |
| 75 | | 75 | |
| 76 | func ff_vector_fmul_window_rvv, zve32f | 76 | func ff_vector_fmul_window_rvv, zve32f, zba |
| 77 | // a0: dst, a1: src0, a2: src1, a3: window, a4: length | 77 | // a0: dst, a1: src0, a2: src1, a3: window, a4: length |
| 78 | // e16/m2 and e32/m4 are possible but slower due to gather. | 78 | // e16/m2 and e32/m4 are possible but slower due to gather. |
| 79 | vsetvli t0, zero, e16, m1, ta, ma | 79 | vsetvli t0, zero, e16, m1, ta, ma |
| @@ -113,7 +113,7 @@ func ff_vector_fmul_window_rvv, zve32f · 33 unmodified lines |
| 113 | endfunc | 113 | endfunc |
| 114 | | 114 | |
| 115 | // (a0) = (a1) * (a2) + (a3) [0..a4-1] | 115 | // (a0) = (a1) * (a2) + (a3) [0..a4-1] |
| 116 | func ff_vector_fmul_add_rvv, zve32f | 116 | func ff_vector_fmul_add_rvv, zve32f, zba |
| 117 | 1: | 117 | 1: |
| 118 | vsetvli t0, a4, e32, m8, ta, ma | 118 | vsetvli t0, a4, e32, m8, ta, ma |
| 119 | vle32.v v8, (a1) | 119 | vle32.v v8, (a1) |
| @@ -133,7 +133,7 @@ endfunc · 13 unmodified lines |
| 133 | | 133 | |
| 134 | // TODO factor vrsub, separate last iteration? | 134 | // TODO factor vrsub, separate last iteration? |
| 135 | // (a0) = (a1) * reverse(a2) [0..a3-1] | 135 | // (a0) = (a1) * reverse(a2) [0..a3-1] |
| 136 | func ff_vector_fmul_reverse_rvv, zve32f | 136 | func ff_vector_fmul_reverse_rvv, zve32f, zba |
| 137 | // e16/m4 and e32/m8 are possible but slower due to gather. | 137 | // e16/m4 and e32/m8 are possible but slower due to gather. |
| 138 | vsetvli t0, zero, e16, m1, ta, ma | 138 | vsetvli t0, zero, e16, m1, ta, ma |
| 139 | sh2add a2, a3, a2 | 139 | sh2add a2, a3, a2 |
| @@ -159,7 +159,7 @@ func ff_vector_fmul_reverse_rvv, zve32f · 19 unmodified lines |
| 159 | endfunc | 159 | endfunc |
| 160 | | 160 | |
| 161 | // (a0) = (a0) + (a1), (a1) = (a0) - (a1) [0..a2-1] | 161 | // (a0) = (a0) + (a1), (a1) = (a0) - (a1) [0..a2-1] |
| 162 | func ff_butterflies_float_rvv, zve32f | 162 | func ff_butterflies_float_rvv, zve32f, zba |
| 163 | 1: | 163 | 1: |
| 164 | vsetvli t0, a2, e32, m8, ta, ma | 164 | vsetvli t0, a2, e32, m8, ta, ma |
| 165 | vle32.v v16, (a0) | 165 | vle32.v v16, (a0) |
| @@ -177,7 +177,7 @@ func ff_butterflies_float_rvv, zve32f · 11 unmodified lines |
| 177 | endfunc | 177 | endfunc |
| 178 | | 178 | |
| 179 | // a0 = (a0).(a1) [0..a2-1] | 179 | // a0 = (a0).(a1) [0..a2-1] |
| 180 | func ff_scalarproduct_float_rvv, zve32f | 180 | func ff_scalarproduct_float_rvv, zve32f, zba |
| 181 | vsetvli t0, zero, e32, m8, ta, ma | 181 | vsetvli t0, zero, e32, m8, ta, ma |
| 182 | vmv.v.x v8, zero | 182 | vmv.v.x v8, zero |
| 183 | vmv.s.x v0, zero | 183 | vmv.s.x v0, zero |
| @@ -199,7 +199,7 @@ NOHWF fmv.x.w a0, fa0 · 15 unmodified lines |
| 199 | endfunc | 199 | endfunc |
| 200 | | 200 | |
| 201 | // (a0) = (a1) * (a2) [0..a3-1] | 201 | // (a0) = (a1) * (a2) [0..a3-1] |
| 202 | func ff_vector_dmul_rvv, zve64d | 202 | func ff_vector_dmul_rvv, zve64d, zba |
| 203 | 1: | 203 | 1: |
| 204 | vsetvli t0, a3, e64, m8, ta, ma | 204 | vsetvli t0, a3, e64, m8, ta, ma |
| 205 | vle64.v v16, (a1) | 205 | vle64.v v16, (a1) |
| @@ -216,7 +216,7 @@ func ff_vector_dmul_rvv, zve64d · 10 unmodified lines |
| 216 | endfunc | 216 | endfunc |
| 217 | | 217 | |
| 218 | // (a0) += (a1) * fa0 [0..a2-1] | 218 | // (a0) += (a1) * fa0 [0..a2-1] |
| 219 | func ff_vector_dmac_scalar_rvv, zve64d | 219 | func ff_vector_dmac_scalar_rvv, zve64d, zba |
| 220 | NOHWD fmv.d.x fa0, a2 | 220 | NOHWD fmv.d.x fa0, a2 |
| 221 | NOHWD mv a2, a3 | 221 | NOHWD mv a2, a3 |
| 222 | 1: | 222 | 1: |
| @@ -234,7 +234,7 @@ NOHWD mv a2, a3 · 11 unmodified lines |
| 234 | endfunc | 234 | endfunc |
| 235 | | 235 | |
| 236 | // (a0) = (a1) * fa0 [0..a2-1] | 236 | // (a0) = (a1) * fa0 [0..a2-1] |
| 237 | func ff_vector_dmul_scalar_rvv, zve64d | 237 | func ff_vector_dmul_scalar_rvv, zve64d, zba |
| 238 | NOHWD fmv.d.x fa0, a2 | 238 | NOHWD fmv.d.x fa0, a2 |
| 239 | NOHWD mv a2, a3 | 239 | NOHWD mv a2, a3 |
| 240 | 1: | 240 | 1: |
| @@ -250,7 +250,7 @@ NOHWD mv a2, a3 · 9 unmodified lines |
| 250 | ret | 250 | ret |
| 251 | endfunc | 251 | endfunc |
| 252 | | 252 | |
| 253 | func ff_scalarproduct_double_rvv, zve64f | 253 | func ff_scalarproduct_double_rvv, zve64f, zba |
| 254 | vsetvli t0, zero, e64, m8, ta, ma | 254 | vsetvli t0, zero, e64, m8, ta, ma |
| 255 | vmv.v.x v8, zero | 255 | vmv.v.x v8, zero |
| 256 | vmv.s.x v0, zero | 256 | vmv.s.x v0, zero |