FFmpeg
ops_asmgen.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2026 Ramiro Polla
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef SWSCALE_AARCH64_OPS_ASMGEN_H
22 #define SWSCALE_AARCH64_OPS_ASMGEN_H
23 
24 #include "rasm.h"
25 
26 /*********************************************************************/
27 typedef struct SwsAArch64OpRegs {
28  RasmOp sl[ 4]; /* input vector registers (low bank) */
29  RasmOp sh[ 4]; /* input vector registers (high bank) */
30  RasmOp dl[ 4]; /* output vector registers (low bank) */
31  RasmOp dh[ 4]; /* output vector registers (high bank) */
32  RasmOp vt[12]; /* temp vector registers */
33  RasmOp vk[ 4]; /* constant data (may be gprs) */
34 
35  /* Op-specific registers. */
36  union {
39  };
41 
42 /*********************************************************************/
43 typedef struct SwsAArch64Context {
45 
46  /* SwsOpFunc arguments. */
53 
54  /* Loop iterator variables. */
57 
58  /* Scratch registers. */
61 
62  /* CPS-related variables. */
68 
69  /* Read/Write data pointers and padding. */
70  RasmOp in[4];
71  RasmOp out[4];
74 
75  /* Process function. */
78 
79  /* Vector register dimensions. */
80  size_t el_size;
81  size_t el_count;
82  size_t vec_size;
83  bool use_vh;
85 
86 #endif /* SWSCALE_AARCH64_OPS_ASMGEN_H */
SwsAArch64Context::regs
SwsAArch64OpRegs regs
Definition: ops_asmgen.h:67
SwsAArch64Context::out_bump
RasmOp out_bump[4]
Definition: ops_asmgen.h:73
SwsAArch64Context::rctx
RasmContext * rctx
Definition: ops_asmgen.h:44
SwsAArch64OpRegs::vk
RasmOp vk[4]
Definition: ops_asmgen.h:33
SwsAArch64Context::y
RasmOp y
Definition: ops_asmgen.h:56
SwsAArch64Context::out
RasmOp out[4]
Definition: ops_asmgen.h:71
SwsAArch64Context::setup
RasmNode * setup
Definition: ops_asmgen.h:76
RasmNode
Definition: rasm.h:145
SwsAArch64Context::el_size
size_t el_size
Definition: ops_asmgen.h:80
SwsAArch64Context::bx_start
RasmOp bx_start
Definition: ops_asmgen.h:49
SwsAArch64Context::bx_end
RasmOp bx_end
Definition: ops_asmgen.h:51
SwsAArch64Context
Definition: ops_asmgen.h:43
SwsAArch64Context::impl
RasmOp impl
Definition: ops_asmgen.h:48
RasmOp
Runtime assembler for AArch64.
Definition: rasm.h:44
SwsAArch64OpRegs::dither_ptr
RasmOp dither_ptr
Definition: ops_asmgen.h:37
SwsAArch64OpRegs::vt
RasmOp vt[12]
Definition: ops_asmgen.h:32
SwsAArch64Context::y_start
RasmOp y_start
Definition: ops_asmgen.h:50
SwsAArch64Context::exec
RasmOp exec
Definition: ops_asmgen.h:47
SwsAArch64OpRegs::sl
RasmOp sl[4]
Definition: ops_asmgen.h:28
SwsAArch64Context::op1_impl
RasmOp op1_impl
Definition: ops_asmgen.h:64
SwsAArch64Context::loop
RasmNode * loop
Definition: ops_asmgen.h:77
rasm.h
SwsAArch64OpRegs::dh
RasmOp dh[4]
Definition: ops_asmgen.h:31
SwsAArch64Context::tmp0
RasmOp tmp0
Definition: ops_asmgen.h:59
SwsAArch64Context::use_vh
bool use_vh
Definition: ops_asmgen.h:83
SwsAArch64OpRegs::sh
RasmOp sh[4]
Definition: ops_asmgen.h:29
SwsAArch64Context::load_cont_node
RasmNode * load_cont_node
Definition: ops_asmgen.h:66
SwsAArch64Context::vec_size
size_t vec_size
Definition: ops_asmgen.h:82
SwsAArch64Context::tmp1
RasmOp tmp1
Definition: ops_asmgen.h:60
RasmContext
Definition: rasm.h:185
SwsAArch64OpRegs::linear_vcoeff
RasmOp linear_vcoeff[4][5]
Definition: ops_asmgen.h:38
SwsAArch64Context::in
RasmOp in[4]
Definition: ops_asmgen.h:70
SwsAArch64Context::el_count
size_t el_count
Definition: ops_asmgen.h:81
SwsAArch64OpRegs::dl
RasmOp dl[4]
Definition: ops_asmgen.h:30
SwsAArch64Context::cont
RasmOp cont
Definition: ops_asmgen.h:65
SwsAArch64Context::in_bump
RasmOp in_bump[4]
Definition: ops_asmgen.h:72
SwsAArch64Context::op0_func
RasmOp op0_func
Definition: ops_asmgen.h:63
SwsAArch64OpRegs
Definition: ops_asmgen.h:27
SwsAArch64Context::bx
RasmOp bx
Definition: ops_asmgen.h:55
SwsAArch64Context::y_end
RasmOp y_end
Definition: ops_asmgen.h:52