FFmpeg
Loading...
Searching...
No Matches
ops_static.c File Reference
#include <assert.h>
#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "libavutil/dynarray.h"
#include "libavutil/bprint.c"
#include "rasm.c"
#include "rasm_print.c"
#include "ops_impl.h"
#include "ops_entries.c"
#include "ops_asmgen.c"

Go to the source code of this file.

Data Structures

struct  SwsAArch64OpEntry
 Implementation parameters for all exported functions. More...
 

Macros

#define AVUTIL_AVASSERT_H
 This file is compiled as a standalone build-time tool and must not depend on internal FFmpeg libraries.
 
#define AVUTIL_LOG_H
 
#define AVUTIL_MACROS_H
 
#define AVUTIL_MEM_H
 
#define AV_STRINGIFY(s)
 
#define AV_TOSTRING(s)
 
#define av_assert0(cond)
 
#define av_malloc(s)
 
#define av_mallocz(s)
 
#define av_realloc(p, s)
 
#define av_strdup(s)
 
#define av_free(p)
 
#define FFMAX(a, b)
 
#define FFMIN(a, b)
 
#define FF_ARRAY_ELEMS(a)
 
#define MKTAG(a, b, c, d)
 
#define ENTRY(fname, ...)
 
#define IMPL_PRIV(s)
 

Functions

static void av_freep (void *ptr)
 
static void * av_memdup (const void *p, size_t size)
 
static void * av_dynarray2_add (void **tab_ptr, int *nb_ptr, size_t elem_size, const uint8_t *elem_data)
 
static void asmgen_set_load_cont_node (SwsAArch64Context *s)
 Set node where the continuation address will be loaded and impl will be incremented.
 
static void asmgen_setup_read_bit (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_read_nibble (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_write_bit (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_unpack (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_clear (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_min (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_max (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_scale (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_linear (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_setup_dither (SwsAArch64Context *s, const SwsAArch64OpImplParams *p, SwsAArch64OpRegs *regs)
 
static void asmgen_common_frame (SwsAArch64Context *s, SwsCompMask imask, SwsCompMask omask)
 
static void asmgen_process_frame (SwsAArch64Context *s, SwsCompMask imask, SwsCompMask omask)
 
static void asmgen_op_frame (SwsAArch64Context *s, SwsCompMask imask, SwsCompMask omask)
 
static void init_vectors_cps (SwsAArch64Context *s, SwsAArch64OpRegs *regs)
 
static void asmgen_process_cps (SwsAArch64Context *s, SwsCompMask mask)
 
static void asmgen_op_cps (SwsAArch64Context *s, const SwsAArch64OpEntry *entry)
 
static int asmgen (void)
 
int main (int argc, char *argv[])
 

Variables

static const SwsAArch64OpEntry ops_entries []
 
static const int rw_gprs []
 Register assignment for CPS functions.
 

Macro Definition Documentation

◆ AVUTIL_AVASSERT_H

#define AVUTIL_AVASSERT_H

This file is compiled as a standalone build-time tool and must not depend on internal FFmpeg libraries.

The necessary utils are redefined below using standard C equivalents.

Definition at line 39 of file ops_static.c.

◆ AVUTIL_LOG_H

#define AVUTIL_LOG_H

Definition at line 40 of file ops_static.c.

◆ AVUTIL_MACROS_H

#define AVUTIL_MACROS_H

Definition at line 41 of file ops_static.c.

◆ AVUTIL_MEM_H

#define AVUTIL_MEM_H

Definition at line 42 of file ops_static.c.

◆ AV_STRINGIFY

#define AV_STRINGIFY ( s)
Value:
#define s(width, name)
Definition cbs_vp9.c:198
#define AV_TOSTRING(s)
Definition macros.h:67

Definition at line 43 of file ops_static.c.

◆ AV_TOSTRING

#define AV_TOSTRING ( s)
Value:
#s

Definition at line 44 of file ops_static.c.

◆ av_assert0

#define av_assert0 ( cond)
Value:
do { \
if (!(cond)) { \
fprintf(stderr, "Assertion %s failed at %s:%d\n", \
AV_STRINGIFY(cond), __FILE__, __LINE__); \
abort(); \
} \
} while (0)
#define AV_STRINGIFY(s)
Definition macros.h:66
int(* cond)(enum AVPixelFormat pix_fmt)

Definition at line 45 of file ops_static.c.

Referenced by asmgen_setup_linear().

◆ av_malloc

#define av_malloc ( s)
Value:
malloc(s)
Examples
avio_read_callback.c, hw_decode.c, and qsv_transcode.c.

Definition at line 52 of file ops_static.c.

Referenced by a64multi_encode_init(), aac_decoder_config(), aarch64_setup_dither(), aarch64_setup_linear(), aax_read_packet(), add_entry(), add_file(), add_hdr_plus(), add_hdr_smpte2094_app5(), add_metadata(), adpcm_encode_init(), alloc_buffer(), alloc_gamma_tbl(), allocate_buffers(), allocate_frame_buffers(), decklink_allocator::AllocateBuffer(), amf_encode_init_av1(), aom_encode(), ape_decode_init(), ape_tag_read_field(), apng_encode_frame(), apply_color_indexing_transform(), apv_metadata_add_payload(), asf_deinterleave(), asf_read_content_desc(), asf_read_ext_content(), asf_read_metadata(), asf_read_metadata_obj(), asf_read_picture(), asf_read_value(), asf_write_header(), ass_decode_frame(), ass_decode_init(), ass_encode_init(), at_write_header(), audio_element_obu(), av_append_path_component(), av_asprintf(), av_buffer_alloc(), av_dynamic_hdr_plus_to_t35(), av_dynamic_hdr_smpte2094_app5_to_t35(), av_encryption_info_add_side_data(), av_encryption_init_info_add_side_data(), av_expr_parse(), av_file_map(), av_frame_alloc(), av_image_alloc(), av_malloc(), av_malloc_array(), av_mallocz(), av_memdup(), av_memdup(), av_opt_set_bin(), av_packet_alloc(), av_packet_pack_dictionary(), av_packet_side_data_new(), av_refstruct_alloc_ext_c(), av_samples_alloc(), avcodec_alloc_context3(), avfilter_graph_dump(), avi_add_ientry(), avi_read_tag(), avio_alloc_context(), avpriv_alloc_fixed_dsp(), avpriv_tempfile(), blurdetect_config_input(), cbs_jpeg_split_fragment(), check_add_bytes(), check_add_left_pred(), check_add_left_pred_16(), check_add_median_pred(), check_dcbzl_effect(), check_yuv2yuvX(), checkasm_check_av_tx(), checkasm_check_blend(), checkasm_check_vf_gblur(), cine_read_header(), cinepak_encode_init(), codec_config_obu(), compute_crc_of_packets(), config_enc_params(), config_input(), config_input(), config_input(), config_input(), config_input(), config_input(), config_input(), config_input(), config_input(), config_output(), config_output(), config_output(), config_output(), config_props(), convert_mono_buffer(), convert_str(), convolution_opencl_make_filter_params(), cookie_string(), copy_to_pbr(), cqueue_create(), create_entry(), create_rtp_muxer(), create_s337_payload(), create_vorbis_context(), cuvid_output_frame(), d3d12va_av1_decode_init(), d3d12va_encode_av1_get_coded_data(), data_open(), DECL_SETUP(), decode_dvd_subtitles(), decode_frame(), decode_frame(), decode_frame(), decode_header_trees(), decode_init(), decode_init(), decode_init(), decode_init(), decode_init(), decode_init(), decode_init(), decode_init(), decode_init(), decode_main_header(), decode_write(), der_to_pem(), dnn_execute_model_onnx(), dnn_execute_model_ov(), dnn_execute_model_tf(), dnn_execute_model_th(), doubles2str(), dshow_add_device(), dshow_cycle_formats(), dtshd_read_header(), dup_wchar_to_utf8(), dvbsub_parse_region_segment(), dvdsub_parse(), dvdsub_parse_extradata(), dvdvideo_read_header(), dxv_init(), eb_receive_packet(), eightsvx_decode_frame(), encode_apng(), encode_frame(), encode_frame(), encode_frame(), encode_frame(), encode_init(), encode_init(), encode_init(), encode_init(), encode_init(), encode_init(), encode_jpegls_init(), encode_tile(), escape130_decode_init(), exchange_sdp(), exif_decode_tag(), extract_extradata_av1(), extract_extradata_h2645(), extract_extradata_lcevc(), extract_extradata_mpeg12(), extract_extradata_mpeg4(), extract_extradata_vc1(), extract_header(), extract_lltask_from_task(), extract_lltask_from_task(), extract_lltask_from_task(), extract_lltask_from_task(), fast_malloc(), fdk_aac_decode_init(), ff_alloc_extradata(), ff_av1_filter_obus_buf(), ff_bgmc_init(), ff_bprint_finalize_as_fam(), ff_celt_pvq_init(), ff_dcaadpcm_init(), ff_dovi_rpu_generate(), ff_dshow_pin_Setup(), ff_ebur128_init(), ff_ffv1_write_extradata(), ff_gblur_init_x86(), ff_http_auth_create_response(), ff_iamf_write_audio_frame(), ff_imf_cpl_alloc(), ff_init_desc_cfmt_convert(), ff_init_desc_chscale(), ff_init_desc_fmt_convert(), ff_init_desc_hscale(), ff_init_filters(), ff_init_gamma_convert(), ff_interleave_add_packet(), ff_jpegls_decode_picture(), ff_libwebp_get_frame(), ff_mov_init_hinting(), ff_mov_write_packet(), ff_nal_unit_extract_rbsp(), ff_opencl_filter_load_program(), ff_opus_psy_init(), ff_packet_list_put(), ff_parse_fmtp(), ff_proc_from_dnn_to_frame(), ff_proc_from_frame_to_dnn(), ff_qp_table_extract(), ff_queue_create(), ff_rv34_decode_frame(), ff_safe_queue_create(), ff_sauce_read(), ff_sndio_open(), ff_sws_fill_xyztables(), ff_sws_filter_generate(), ff_sws_jit_alloc(), ff_sws_op_list_duplicate(), ff_tadd_string_metadata(), ff_tx_dct_init(), ff_tx_fft_init_naive_small(), ff_tx_fft_inplace_small_init(), ff_tx_fft_pfa_init(), ff_tx_gen_compound_mapping(), ff_tx_gen_default_map(), ff_tx_gen_pfa_input_map(), ff_tx_gen_ptwo_revtab(), ff_tx_init_subtx(), ff_tx_mdct_init(), ff_tx_mdct_pfa_init(), ff_urldecode(), ff_videotoolbox_av1c_extradata_create(), ff_videotoolbox_avcc_extradata_create(), ff_videotoolbox_hvcc_extradata_create(), ff_videotoolbox_vpcc_extradata_create(), ff_vk_exec_pool_init(), ff_vk_load_props(), ff_vmafmotion_init(), ff_vs_init(), ff_vvc_frame_thread_init(), ffat_convert_layout(), ffat_create_decoder(), ffat_get_magic_cookie(), ffat_init_encoder(), ffat_update_ctx(), ffio_ensure_seekback(), ffio_fdopen(), ffio_realloc_buf(), fft_pfa_init(), ffurl_get_multi_file_handle(), fill_codec_config(), fill_gamma_table(), fill_model_input_onnx(), fill_model_input_tf(), fill_model_input_th(), fill_timecode(), filter_frame(), find_smallest_bounding_rectangle(), fixup_color_mask(), flac_decoder_config(), flac_encode_init(), flashsv_decode_frame(), flv_append_keyframe_info(), flv_parse_mod_ex_data(), fourxm_read_header(), frame_list_add_frame(), fsync_init(), ftp_open_dir(), gen_sub_text(), get_audio_config(), get_duration(), get_input_onnx(), get_key(), get_matching_parameters(), get_meta(), get_metadata(), get_metadata(), get_stats(), get_stats(), get_tag(), get_tag(), getstr8(), gif_encode_init(), gif_image_write_image(), h264_metadata_handle_display_orientation(), h26x_prefix_aud(), hap_init(), hevc_extradata_to_annexb(), hls_init(), hls_read_header(), hw_device_default_name(), id3v2_parse(), iec61883_callback(), import_pem(), infer_completion_callback(), init(), init(), init(), init(), init_filter(), init_noise(), init_pattern_from_file(), init_subtitle_context(), inject_fake_duration_metadata(), interpolate(), interpolate_refplane(), iso88591_to_utf8(), latm_decode_audio_specific_config(), lavfi_read_header(), libjxl_av_malloc(), liboapve_init(), libopus_encode_init(), librav1e_encode_init(), libvorbis_encode_init(), libx265_encode_init(), libxeve_init(), LLVMFuzzerTestOneInput(), load_mask(), m_inv_init(), magy_encode_init(), main(), main(), main(), make_digest_auth(), mediaformat_jni_getBuffer(), mediaformat_jni_setBuffer(), mix_presentation_obu(), mjpeg_decode_app(), mjpeg_decode_com(), mkv_write_block(), mmap_read_frame(), modplug_read_header(), mov_create_chapter_track(), mov_create_dvd_sub_decoder_specific_info(), mov_create_timecode_track(), mov_init(), mov_parse_stsd_data(), mov_parse_uuid_spherical(), mov_read_cmov(), mov_read_colr(), mov_read_custom(), mov_read_dref(), mov_read_ftyp(), mov_read_hdlr(), mov_read_iprp(), mov_read_lhvc(), mov_read_pssh(), mov_read_saiz(), mov_read_sdtp(), mov_read_stsz(), mov_read_tkhd(), mov_text_tx3g(), mov_write_chan_tag(), mov_write_chnl_tag(), mov_write_eac3_tag(), mov_write_header(), mov_write_single_packet(), mov_write_stts_tag(), mpa_robust_parse_packet(), mpc8_parse_seektable(), mpc_read_header(), mpegps_read_pes_header(), mpegts_write_packet_internal(), mss3_decode_init(), mxf_read_us_ascii_string(), mxf_read_utf16_string(), mxpeg_decode_mxm(), nlmeans_plane(), nvdec_retrieve_data(), nvenc_check_codec_support(), of_add_attachments(), ogg_new_stream(), ogg_read_page(), ogg_save(), oh_encode_output_packet(), onnx_create_inference_request(), open_filter_param(), open_null_ctx(), opencl_device_init(), opencl_get_device_string(), opencl_get_platform_string(), opt_get_elem(), opt_set_array(), opus_decoder_config(), opus_encode_init(), parameter_block_obu(), parse_cinespace(), parse_MP4DecConfigDescrTag(), parse_options(), parse_playlist(), parse_setup_header(), pchip_find_derivatives(), pcx_decode_frame(), pem_to_der(), piz_uncompress(), process_ftch(), prompeg_create_bitstring(), prompeg_init(), prores_encode_init(), push_main_image_2d_sequence(), push_marker_sequence(), qsv_retrieve_enc_params(), queue_frames(), queue_frames(), rasm_print(), read_binary(), read_dist_clustering(), read_frame(), read_geobtag(), read_graph(), read_header(), read_header_gme(), read_header_openmpt(), read_header_vs(), read_priv(), read_sb_block(), read_shape_from_file(), read_string(), read_vblock(), recv_msg(), reopen_demux_for_component(), rfc4175_handle_packet(), rl2_read_header(), roq_dpcm_encode_init(), rscc_decode_frame(), rscc_init(), rtmp_calc_swfhash(), rtmp_open(), rtp_get_multi_file_handle(), rtp_parse_mp4_au(), rtp_write_header(), rtsp_read_announce(), rtsp_read_command_reply(), run_test(), rv34_decoder_alloc(), sample_queue_retain(), save_sei(), screenpresso_init(), seq_init_frame_buffers(), set_buf_size(), set_spdif(), set_string_binary(), setup_side_data_entry(), shared_open(), show_qrcode(), smjpeg_read_header(), sox_read_header(), spdif_write_header(), submit_stats(), svq3_decode_extradata(), swf_read_header(), swf_read_packet(), sws_allocVec(), sws_getDefaultFilter(), tak_read_header(), teletext_decode_frame(), tf_create_inference_request(), th_create_inference_request(), tiff_decode_tag(), tl_create(), tls_export_key_cert(), tls_gen_self_signed(), tls_handshake_loop(), tls_write(), translate_shuffle(), tscc2_decode_init(), unescape(), unescape(), unpack_codebook(), unsharp_opencl_make_filter_params(), update_block_buffers(), update_mouse_pointer(), update_size(), uri_table_map(), utvideo_encode_init(), vaapi_device_init(), vaapi_encode_h264_configure(), vaapi_encode_issue(), vaapi_encode_surface_alignment(), vaapi_frames_get_constraints(), vaapi_frames_init(), vaapi_map_frame(), vaapi_transfer_get_formats(), vanc_to_cc(), var_read_string(), vc1_decode_init_alloc_tables(), vfw_read_header(), vgs_parse_color(), vgs_parse_numeric_argument(), video_decode(), video_decode_example(), vk_h264_create_params(), vmd_read_header(), vmdvideo_decode_init(), vorbis_parse_setup_hdr_codebooks(), vorbis_parse_setup_hdr_floors(), vorbis_parse_single_comment(), vp3_decode_frame(), vp56_size_changed(), vpx_encode(), vqa_decode_init(), vqc_decode_init(), vt_dump_encoder(), vulkan_encode_h264_init(), wavesynth_init(), wc3_read_header(), webp_anim_read_packet(), webp_decode_frame(), write_ident(), write_manifest(), wtvfile_open_sector(), xan_decode_init(), xan_decode_init(), XAVS_init(), xiph_handle_packet(), xiph_parse_fmtp_pair(), xvid_encode_init(), and xvid_strip_vol_header().

◆ av_mallocz

#define av_mallocz ( s)
Value:
calloc(1, s)

Definition at line 53 of file ops_static.c.

◆ av_realloc

◆ av_strdup

#define av_strdup ( s)
Value:
strdup(s)
Examples
decode_filter_audio.c, decode_filter_video.c, and transcode.c.

Definition at line 55 of file ops_static.c.

Referenced by add_tracked_method(), aribcaption_trans_text_subtitle(), ass_decode_frame(), av_append_path_component(), av_calloc(), av_channel_layout_from_string(), av_dict_get_string(), av_dict_set(), av_opt_get(), av_opt_get_array(), avfilter_graph_parse(), avfilter_graph_queue_command(), avfilter_graph_segment_create_filters(), avformat_alloc_output_context2(), avformat_open_input(), avpriv_tempfile(), build_headers(), caca_write_header(), check_avoptions_used(), check_extensions(), check_layers(), cine_read_header(), config_eq_output(), config_input(), config_input(), config_input(), config_output(), config_params(), configure_filtergraph(), configure_video_filters(), copy_av_subtitle(), create_rtp_muxer(), create_streams(), curves_init(), dash_init(), dec_filter_add(), dec_open(), delimited_dict_parse(), describe_filter_link(), dnn_load_model_onnx(), draw_curves(), dshow_cycle_devices(), enc_stats_get_file(), exchange_sdp(), ff_alsa_get_device_list(), ff_boxblur_eval_filter_params(), ff_bsf_alloc(), ff_copy_whiteblacklists(), ff_decklink_list_devices(), ff_fbdev_get_device_list(), ff_filter_alloc(), ff_format_check_set_url(), ff_http_do_new_request2(), ff_http_match_no_proxy(), ff_jni_jstring_to_utf_chars(), ff_mkdir_p(), ff_tls_parse_host(), ffio_fdopen(), ffurl_connect(), fg_send_command(), filter_parse(), format_name(), ftp_connect(), ftp_current_dir(), ftp_parse_entry_mlsd(), ftp_parse_entry_nlst(), generate_sdp_offer(), geq_init(), get_cookies(), get_current_fragment(), get_opt_flags_string(), getenv_dup(), header_callback(), hls_delete_old_segments(), hls_init(), hls_mux_init(), hls_read_header(), hls_rename_temp_file(), hls_start(), hls_write_packet(), hls_write_trailer(), http_open(), http_open_cnx(), http_seek_internal(), icecast_open(), ifile_open(), ifilter_bind_dec(), ifilter_bind_ist(), imf_read_header(), init(), init(), init(), init(), init(), init_filter(), init_filters(), init_filters(), init_muxer(), initialize(), inout_add(), ist_add(), ist_filter_add(), label_string(), lavfi_read_header(), libcurl_open(), libsmbc_read_dir(), libssh_read_dir(), log_callback(), main(), main(), match_stream_specifier(), measure_text(), mediacodec_dec_get_audio_codec(), mediacodec_dec_get_video_codec(), mediacodec_ndk_getName(), mediaformat_ndk_getString(), mediaformat_ndk_toString(), mkv_write_simpletag(), mmsh_open_internal(), mpjpeg_read_packet(), mtv_read_header(), new_init_section(), new_stream_video(), nppscale_parse_expr(), of_add_attachments(), of_add_groups(), of_parse_iamf_submixes(), ofilter_bind_enc(), ofilter_bind_ifilter(), open_camera(), open_input_file(), open_output_file(), open_slave(), opt_add_vfilter(), opt_attach(), opt_codec(), opt_codec(), opt_copy_elem(), opt_filter_complex(), opt_filter_threads(), opt_get_elem(), opt_input_file(), opt_input_file(), opt_output_file_o(), opt_print_filename(), opt_vstats_file(), ost_add(), ost_get_filters(), param_init(), parse_answer(), parse_assetmap(), parse_cc_stream_mapstring(), parse_channel_expressions(), parse_device_name(), parse_device_name(), parse_fmtp(), parse_forced_key_frames(), parse_imf_asset_map_from_xml_dom(), parse_location(), parse_manifest(), parse_manifest_representation(), parse_playlist(), parse_playlist(), parse_psfile(), parse_read_interval(), parse_read_intervals(), parse_reinit_opts(), parse_set_cookie(), parse_size(), parse_speaker_pos(), parse_times(), parse_variant_stream_mapstring(), parse_video_var(), plot_freqs(), process_command(), process_command(), process_command(), process_line(), pulse_add_detected_device(), pulse_server_info_cb(), qsv_decode_init(), qsv_enc_init(), rasm_add_comment(), rasm_add_directive(), rasm_annotate(), rasm_annotate_next(), rasm_new_label(), read_channels(), read_classify_label_file(), read_custom_noise(), read_detect_label_file(), read_gains(), read_header(), read_tf_coefficients(), read_ttag(), read_zp_coefficients(), realtext_read_header(), rfc4175_parse_fmtp(), rtmp_http_open(), rtsp_read_command_reply(), run_transcription(), sami_paragraph_to_ass(), sap_read_header(), sap_write_header(), scale_parse_expr(), sch_sdp_filename(), segment_end(), set_ass_header(), set_enable_expr(), set_expr(), set_str(), set_string(), setup_curl(), show_help(), sls_flags_filename_process(), stream_open(), stream_specifier_parse(), tiff_decode_tag(), update_master_pl_info(), v4l2_get_device_list(), validate_name(), write_option(), write_packet(), xcbgrab_read_header(), and xv_write_header().

◆ av_free

#define av_free ( p)
Value:
free(p)

Definition at line 56 of file ops_static.c.

◆ FFMAX

#define FFMAX ( a,
b )
Value:
((a) > (b) ? (a) : (b))
int a
#define b
Definition input.c:43

Definition at line 57 of file ops_static.c.

◆ FFMIN

#define FFMIN ( a,
b )
Value:
((a) > (b) ? (b) : (a))

Definition at line 58 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ FF_ARRAY_ELEMS

#define FF_ARRAY_ELEMS ( a)
Value:
(sizeof(a) / sizeof((a)[0]))

Definition at line 59 of file ops_static.c.

◆ MKTAG

#define MKTAG ( a,
b,
c,
d )
Value:
((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
static double c[64]

Definition at line 60 of file ops_static.c.

◆ ENTRY

#define ENTRY ( fname,
... )
Value:
{ .name = #fname, .params = __VA_ARGS__ },

◆ IMPL_PRIV

#define IMPL_PRIV ( s)
Value:
#define offsetof_impl_priv
Definition ops_impl.h:86
static RasmOp a64op_off(RasmOp op, int16_t imm)
Definition rasm.h:507

Definition at line 131 of file ops_static.c.

Referenced by asmgen_setup_clear(), asmgen_setup_dither(), asmgen_setup_linear(), asmgen_setup_max(), asmgen_setup_min(), asmgen_setup_read_bit(), and asmgen_setup_write_bit().

Function Documentation

◆ av_freep()

static void av_freep ( void * ptr)
static

Definition at line 62 of file ops_static.c.

◆ av_memdup()

static void * av_memdup ( const void * p,
size_t size )
static

Definition at line 73 of file ops_static.c.

◆ av_dynarray2_add()

static void * av_dynarray2_add ( void ** tab_ptr,
int * nb_ptr,
size_t elem_size,
const uint8_t * elem_data )
static

Definition at line 86 of file ops_static.c.

◆ asmgen_set_load_cont_node()

static void asmgen_set_load_cont_node ( SwsAArch64Context * s)
static

Set node where the continuation address will be loaded and impl will be incremented.

This should be done right after impl->priv has been used.

Definition at line 138 of file ops_static.c.

Referenced by asmgen_op_cps(), asmgen_setup_clear(), asmgen_setup_dither(), asmgen_setup_linear(), asmgen_setup_max(), asmgen_setup_min(), asmgen_setup_read_bit(), asmgen_setup_scale(), and asmgen_setup_write_bit().

◆ asmgen_setup_read_bit()

static void asmgen_setup_read_bit ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 151 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_read_nibble()

static void asmgen_setup_read_nibble ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 168 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_write_bit()

static void asmgen_setup_write_bit ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 178 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_unpack()

static void asmgen_setup_unpack ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

All-one values in movi only work up to 8-bit, and then at full 16- or 32-bit, but not for intermediate values like 10-bit. In those cases, we use mov + dup instead.

Definition at line 189 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_clear()

static void asmgen_setup_clear ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

TODO

  • pack elements in impl->priv and perform smaller loads
  • if only 1 element and not vh, load directly with ld1r

Definition at line 226 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_min()

static void asmgen_setup_min ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 249 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_max()

static void asmgen_setup_max ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 261 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_scale()

static void asmgen_setup_scale ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 273 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_linear()

static void asmgen_setup_linear ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Populate operands matrix from packed data into linear_vcoeff matrix and compute mask for rows that must be saved before being overwritten.

Save rows that need to be used as input after they have been already written to.

Definition at line 285 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_setup_dither()

static void asmgen_setup_dither ( SwsAArch64Context * s,
const SwsAArch64OpImplParams * p,
SwsAArch64OpRegs * regs )
static

Definition at line 345 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_common_frame()

static void asmgen_common_frame ( SwsAArch64Context * s,
SwsCompMask imask,
SwsCompMask omask )
static

Definition at line 399 of file ops_static.c.

Referenced by asmgen_op_frame(), and asmgen_process_frame().

◆ asmgen_process_frame()

static void asmgen_process_frame ( SwsAArch64Context * s,
SwsCompMask imask,
SwsCompMask omask )
static

Definition at line 414 of file ops_static.c.

Referenced by asmgen_process_cps().

◆ asmgen_op_frame()

static void asmgen_op_frame ( SwsAArch64Context * s,
SwsCompMask imask,
SwsCompMask omask )
static

Definition at line 435 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ init_vectors_cps()

static void init_vectors_cps ( SwsAArch64Context * s,
SwsAArch64OpRegs * regs )
static

Definition at line 446 of file ops_static.c.

Referenced by asmgen_op_cps().

◆ asmgen_process_cps()

static void asmgen_process_cps ( SwsAArch64Context * s,
SwsCompMask mask )
static

Definition at line 483 of file ops_static.c.

Referenced by asmgen().

◆ asmgen_op_cps()

static void asmgen_op_cps ( SwsAArch64Context * s,
const SwsAArch64OpEntry * entry )
static

Set up vector register dimensions and reshape all vectors accordingly.

Definition at line 507 of file ops_static.c.

Referenced by asmgen().

◆ asmgen()

static int asmgen ( void )
static

Definition at line 623 of file ops_static.c.

Referenced by main().

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 666 of file ops_static.c.

Variable Documentation

◆ ops_entries

const SwsAArch64OpEntry ops_entries[]
static

Definition at line 121 of file ops_static.c.

◆ rw_gprs

const int rw_gprs[]
static
Initial value:
= {
9, 10, 11, 12,
13, 14, 15, 19,
20, 21, 22, 23,
24, 25, 26, 27,
}

Register assignment for CPS functions.

The entry point of the SwsOpFunc is the process function. The first kernel function is called from process, and subsequent kernel functions are chained by directly branching to the next operation, using a continuation-passing style design. The last operation must be a write operation, which returns from the call to the process function.

The GPRs used by the entire call-chain are listed below.

Function arguments are passed in r0-r5. After the parameters from exec have been read, r0 is reused to branch to the continuation functions. After the original parameters from impl have been computed, r1 is reused as the impl pointer for each operation.

Loop iterators are r6 for bx and r3 for y, reused from y_start, which doesn't need to be preserved.

The intra-procedure-call temporary registers (r16 and r17) are used as scratch registers. They may be used by call veneers and PLT code inserted by the linker, so we cannot expect them to persist across branches between functions.

The Platform Register (r18) is not used.

The read/write data pointers and padding values first use up the remaining free caller-saved registers, and only then are the callee-saved registers (r19-r29) used.

The Link Register (r30) is used when calling the first kernel, so it must be saved.

Definition at line 392 of file ops_static.c.

Referenced by asmgen_common_frame(), and asmgen_process_frame().