FFmpeg
libswscale
aarch64
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
{
37
RasmOp
dither_ptr
;
38
RasmOp
linear_vcoeff
[4][5];
39
};
40
}
SwsAArch64OpRegs
;
41
42
/*********************************************************************/
43
typedef
struct
SwsAArch64Context
{
44
RasmContext
*
rctx
;
45
46
/* SwsOpFunc arguments. */
47
RasmOp
exec
;
48
RasmOp
impl
;
49
RasmOp
bx_start
;
50
RasmOp
y_start
;
51
RasmOp
bx_end
;
52
RasmOp
y_end
;
53
54
/* Loop iterator variables. */
55
RasmOp
bx
;
56
RasmOp
y
;
57
58
/* Scratch registers. */
59
RasmOp
tmp0
;
60
RasmOp
tmp1
;
61
62
/* CPS-related variables. */
63
RasmOp
op0_func
;
64
RasmOp
op1_impl
;
65
RasmOp
cont
;
66
RasmNode
*
load_cont_node
;
67
SwsAArch64OpRegs
regs
;
68
69
/* Read/Write data pointers and padding. */
70
RasmOp
in
[4];
71
RasmOp
out
[4];
72
RasmOp
in_bump
[4];
73
RasmOp
out_bump
[4];
74
75
/* Process function. */
76
RasmNode
*
setup
;
77
RasmNode
*
loop
;
78
79
/* Vector register dimensions. */
80
size_t
el_size
;
81
size_t
el_count
;
82
size_t
vec_size
;
83
bool
use_vh
;
84
}
SwsAArch64Context
;
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
Generated on Sat Jul 25 2026 19:24:08 for FFmpeg by
1.8.17